summaryrefslogtreecommitdiff
path: root/packages/core/src
diff options
context:
space:
mode:
authorSunny Sachanandani <[email protected]>2025-08-15 15:58:31 -0700
committerGitHub <[email protected]>2025-08-15 22:58:31 +0000
commit4896c7739f57b4e475754854c217cdd1dbf7deaa (patch)
tree7c00842d3b7a0ba63b2f25b9cb7ca102b4a91093 /packages/core/src
parent3c0af3654ac5491e79c6f9b55de5debf0e1e13c1 (diff)
[ide-mode] Fix path delimiter for multi-root workspaces on Windows (#6273)
Co-authored-by: Jacob Richman <[email protected]>
Diffstat (limited to 'packages/core/src')
-rw-r--r--packages/core/src/ide/ide-client.test.ts14
-rw-r--r--packages/core/src/ide/ide-client.ts2
2 files changed, 13 insertions, 3 deletions
diff --git a/packages/core/src/ide/ide-client.test.ts b/packages/core/src/ide/ide-client.test.ts
index 6955e495..f061156d 100644
--- a/packages/core/src/ide/ide-client.test.ts
+++ b/packages/core/src/ide/ide-client.test.ts
@@ -5,6 +5,7 @@
*/
import { describe, it, expect } from 'vitest';
+import * as path from 'path';
import { IdeClient } from './ide-client.js';
describe('IdeClient.validateWorkspacePath', () => {
@@ -49,7 +50,7 @@ describe('IdeClient.validateWorkspacePath', () => {
it('should handle multiple workspace paths and return valid', () => {
const result = IdeClient.validateWorkspacePath(
- '/some/other/path:/Users/person/gemini-cli',
+ ['/some/other/path', '/Users/person/gemini-cli'].join(path.delimiter),
'VS Code',
'/Users/person/gemini-cli/sub-dir',
);
@@ -58,11 +59,20 @@ describe('IdeClient.validateWorkspacePath', () => {
it('should return invalid if cwd is not in any of the multiple workspace paths', () => {
const result = IdeClient.validateWorkspacePath(
- '/some/other/path:/another/path',
+ ['/some/other/path', '/another/path'].join(path.delimiter),
'VS Code',
'/Users/person/gemini-cli/sub-dir',
);
expect(result.isValid).toBe(false);
expect(result.error).toContain('Directory mismatch');
});
+
+ it.skipIf(process.platform !== 'win32')('should handle windows paths', () => {
+ const result = IdeClient.validateWorkspacePath(
+ 'c:/some/other/path;d:/Users/person/gemini-cli',
+ 'VS Code',
+ 'd:/Users/person/gemini-cli/sub-dir',
+ );
+ expect(result.isValid).toBe(true);
+ });
});
diff --git a/packages/core/src/ide/ide-client.ts b/packages/core/src/ide/ide-client.ts
index 5ec0bb5c..f8ba6ef5 100644
--- a/packages/core/src/ide/ide-client.ts
+++ b/packages/core/src/ide/ide-client.ts
@@ -272,7 +272,7 @@ export class IdeClient {
};
}
- const ideWorkspacePaths = ideWorkspacePath.split(':');
+ const ideWorkspacePaths = ideWorkspacePath.split(path.delimiter);
const realCwd = getRealPath(cwd);
const isWithinWorkspace = ideWorkspacePaths.some((workspacePath) => {
const idePath = getRealPath(workspacePath);