diff options
| author | christine betts <[email protected]> | 2025-08-14 20:12:57 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-08-14 20:12:57 +0000 |
| commit | 5c5fc89eb16afb65a5bbcb30e3bc576ed55e66b8 (patch) | |
| tree | bf83a82c461085cf06d1082b251eadbbd6091ae1 /packages/core/src/ide/ide-client.test.ts | |
| parent | e06d774996c0f09e1881201dca278720af2bf5b5 (diff) | |
[ide-mode] Support multi-folder workspaces (#6177)
Diffstat (limited to 'packages/core/src/ide/ide-client.test.ts')
| -rw-r--r-- | packages/core/src/ide/ide-client.test.ts | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/packages/core/src/ide/ide-client.test.ts b/packages/core/src/ide/ide-client.test.ts new file mode 100644 index 00000000..6955e495 --- /dev/null +++ b/packages/core/src/ide/ide-client.test.ts @@ -0,0 +1,68 @@ +/** + * @license + * Copyright 2025 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +import { describe, it, expect } from 'vitest'; +import { IdeClient } from './ide-client.js'; + +describe('IdeClient.validateWorkspacePath', () => { + it('should return valid if cwd is a subpath of the IDE workspace path', () => { + const result = IdeClient.validateWorkspacePath( + '/Users/person/gemini-cli', + 'VS Code', + '/Users/person/gemini-cli/sub-dir', + ); + expect(result.isValid).toBe(true); + }); + + it('should return invalid if GEMINI_CLI_IDE_WORKSPACE_PATH is undefined', () => { + const result = IdeClient.validateWorkspacePath( + undefined, + 'VS Code', + '/Users/person/gemini-cli/sub-dir', + ); + expect(result.isValid).toBe(false); + expect(result.error).toContain('Failed to connect'); + }); + + it('should return invalid if GEMINI_CLI_IDE_WORKSPACE_PATH is empty', () => { + const result = IdeClient.validateWorkspacePath( + '', + 'VS Code', + '/Users/person/gemini-cli/sub-dir', + ); + expect(result.isValid).toBe(false); + expect(result.error).toContain('please open a workspace folder'); + }); + + it('should return invalid if cwd is not within the IDE workspace path', () => { + const result = IdeClient.validateWorkspacePath( + '/some/other/path', + 'VS Code', + '/Users/person/gemini-cli/sub-dir', + ); + expect(result.isValid).toBe(false); + expect(result.error).toContain('Directory mismatch'); + }); + + it('should handle multiple workspace paths and return valid', () => { + const result = IdeClient.validateWorkspacePath( + '/some/other/path:/Users/person/gemini-cli', + 'VS Code', + '/Users/person/gemini-cli/sub-dir', + ); + expect(result.isValid).toBe(true); + }); + + it('should return invalid if cwd is not in any of the multiple workspace paths', () => { + const result = IdeClient.validateWorkspacePath( + '/some/other/path:/another/path', + 'VS Code', + '/Users/person/gemini-cli/sub-dir', + ); + expect(result.isValid).toBe(false); + expect(result.error).toContain('Directory mismatch'); + }); +}); |
