From 0e98641b51270f2f63ffb30902b44903d8e88383 Mon Sep 17 00:00:00 2001 From: christine betts Date: Mon, 11 Aug 2025 21:01:37 +0000 Subject: Add support for VSCode-like editors (#5699) Co-authored-by: Jacob Richman --- packages/core/src/ide/ide-installer.test.ts | 52 +++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 2 deletions(-) (limited to 'packages/core/src/ide/ide-installer.test.ts') diff --git a/packages/core/src/ide/ide-installer.test.ts b/packages/core/src/ide/ide-installer.test.ts index 698c3173..1afd7a36 100644 --- a/packages/core/src/ide/ide-installer.test.ts +++ b/packages/core/src/ide/ide-installer.test.ts @@ -24,9 +24,17 @@ describe('ide-installer', () => { expect(installer).toBeInstanceOf(Object); }); - it('should return null for an unknown IDE', () => { + it('should return an OpenVSXInstaller for "vscodium"', () => { + const installer = getIdeInstaller(DetectedIde.VSCodium); + expect(installer).not.toBeNull(); + expect(installer).toBeInstanceOf(Object); + }); + + it('should return a DefaultIDEInstaller for an unknown IDE', () => { const installer = getIdeInstaller('unknown' as DetectedIde); - expect(installer).toBeNull(); + // Assuming DefaultIDEInstaller is the fallback + expect(installer).not.toBeNull(); + expect(installer).toBeInstanceOf(Object); }); }); @@ -59,4 +67,44 @@ describe('ide-installer', () => { }); }); }); + + describe('OpenVSXInstaller', () => { + let installer: IdeInstaller; + + beforeEach(() => { + installer = getIdeInstaller(DetectedIde.VSCodium)!; + }); + + afterEach(() => { + vi.restoreAllMocks(); + }); + + describe('install', () => { + it('should call execSync with the correct command and return success', async () => { + const execSyncSpy = vi + .spyOn(child_process, 'execSync') + .mockImplementation(() => ''); + const result = await installer.install(); + expect(execSyncSpy).toHaveBeenCalledWith( + 'npx ovsx get google.gemini-cli-vscode-ide-companion', + { stdio: 'pipe' }, + ); + expect(result.success).toBe(true); + expect(result.message).toContain( + 'VS Code companion extension was installed successfully from OpenVSX', + ); + }); + + it('should return a failure message on failed installation', async () => { + vi.spyOn(child_process, 'execSync').mockImplementation(() => { + throw new Error('Command failed'); + }); + const result = await installer.install(); + expect(result.success).toBe(false); + expect(result.message).toContain( + 'Failed to install VS Code companion extension from OpenVSX', + ); + }); + }); + }); }); -- cgit v1.2.3