diff --git a/packages/core/src/ide/ide-client.test.ts b/packages/core/src/ide/ide-client.test.ts index a2f832ca82..fa1c948dba 100644 --- a/packages/core/src/ide/ide-client.test.ts +++ b/packages/core/src/ide/ide-client.test.ts @@ -331,7 +331,7 @@ describe('IdeClient', () => { expect(result).toEqual(config); expect(fs.promises.readFile).toHaveBeenCalledWith( - path.join('/tmp/.gemini/ide', 'gemini-ide-server-12345-123.json'), + path.join('/tmp/gemini/ide', 'gemini-ide-server-12345-123.json'), 'utf8', ); }); @@ -526,14 +526,46 @@ describe('IdeClient', () => { expect(result).toEqual(validConfig); expect(fs.promises.readFile).toHaveBeenCalledWith( - path.join('/tmp/.gemini/ide', 'gemini-ide-server-12345-111.json'), + path.join('/tmp/gemini/ide', 'gemini-ide-server-12345-111.json'), 'utf8', ); expect(fs.promises.readFile).not.toHaveBeenCalledWith( - path.join('/tmp/.gemini/ide', 'not-a-config-file.txt'), + path.join('/tmp/gemini/ide', 'not-a-config-file.txt'), 'utf8', ); }); + + it('should match env port string to a number port in the config', async () => { + process.env['GEMINI_CLI_IDE_SERVER_PORT'] = '3333'; + const config1 = { port: 1111, workspacePath: '/test/workspace' }; + const config2 = { port: 3333, workspacePath: '/test/workspace2' }; + vi.mocked(fs.promises.readFile).mockRejectedValueOnce( + new Error('not found'), + ); + ( + vi.mocked(fs.promises.readdir) as Mock< + (path: fs.PathLike) => Promise + > + ).mockResolvedValue([ + 'gemini-ide-server-12345-111.json', + 'gemini-ide-server-12345-222.json', + ]); + vi.mocked(fs.promises.readFile) + .mockResolvedValueOnce(JSON.stringify(config1)) + .mockResolvedValueOnce(JSON.stringify(config2)); + vi.spyOn(IdeClient, 'validateWorkspacePath').mockReturnValue({ + isValid: true, + }); + + const ideClient = await IdeClient.getInstance(); + const result = await ( + ideClient as unknown as { + getConnectionConfigFromFile: () => Promise; + } + ).getConnectionConfigFromFile(); + + expect(result).toEqual(config2); + }); }); describe('isDiffingEnabled', () => { diff --git a/packages/core/src/ide/ide-client.ts b/packages/core/src/ide/ide-client.ts index c8242c02cc..494d1182f0 100644 --- a/packages/core/src/ide/ide-client.ts +++ b/packages/core/src/ide/ide-client.ts @@ -588,7 +588,7 @@ export class IdeClient { // exist. } - const portFileDir = path.join(os.tmpdir(), '.gemini', 'ide'); + const portFileDir = path.join(os.tmpdir(), 'gemini', 'ide'); let portFiles; try { portFiles = await fs.promises.readdir(portFileDir); @@ -650,7 +650,7 @@ export class IdeClient { const portFromEnv = this.getPortFromEnv(); if (portFromEnv) { const matchingPort = validWorkspaces.find( - (content) => content.port === portFromEnv, + (content) => String(content.port) === portFromEnv, ); if (matchingPort) { return matchingPort;