fix: ensure positional prompt arguments work with extensions flag (#10077)

Co-authored-by: Allen Hutchison <adh@google.com>
This commit is contained in:
김세은
2025-10-09 05:32:05 +09:00
committed by GitHub
parent b92e3bca50
commit 1962b51d8d
4 changed files with 142 additions and 0 deletions
+11
View File
@@ -13,6 +13,8 @@ describe('detectIde', () => {
afterEach(() => {
vi.unstubAllEnvs();
// Clear Cursor-specific environment variables that might interfere with tests
delete process.env['CURSOR_TRACE_ID'];
});
it('should return undefined if TERM_PROGRAM is not vscode', () => {
@@ -41,42 +43,49 @@ describe('detectIde', () => {
it('should detect Codespaces', () => {
vi.stubEnv('TERM_PROGRAM', 'vscode');
vi.stubEnv('CODESPACES', 'true');
vi.stubEnv('CURSOR_TRACE_ID', '');
expect(detectIde(ideProcessInfo)).toBe(IDE_DEFINITIONS.codespaces);
});
it('should detect Cloud Shell via EDITOR_IN_CLOUD_SHELL', () => {
vi.stubEnv('TERM_PROGRAM', 'vscode');
vi.stubEnv('EDITOR_IN_CLOUD_SHELL', 'true');
vi.stubEnv('CURSOR_TRACE_ID', '');
expect(detectIde(ideProcessInfo)).toBe(IDE_DEFINITIONS.cloudshell);
});
it('should detect Cloud Shell via CLOUD_SHELL', () => {
vi.stubEnv('TERM_PROGRAM', 'vscode');
vi.stubEnv('CLOUD_SHELL', 'true');
vi.stubEnv('CURSOR_TRACE_ID', '');
expect(detectIde(ideProcessInfo)).toBe(IDE_DEFINITIONS.cloudshell);
});
it('should detect Trae', () => {
vi.stubEnv('TERM_PROGRAM', 'vscode');
vi.stubEnv('TERM_PRODUCT', 'Trae');
vi.stubEnv('CURSOR_TRACE_ID', '');
expect(detectIde(ideProcessInfo)).toBe(IDE_DEFINITIONS.trae);
});
it('should detect Firebase Studio via MONOSPACE_ENV', () => {
vi.stubEnv('TERM_PROGRAM', 'vscode');
vi.stubEnv('MONOSPACE_ENV', 'true');
vi.stubEnv('CURSOR_TRACE_ID', '');
expect(detectIde(ideProcessInfo)).toBe(IDE_DEFINITIONS.firebasestudio);
});
it('should detect VSCode when no other IDE is detected and command includes "code"', () => {
vi.stubEnv('TERM_PROGRAM', 'vscode');
vi.stubEnv('MONOSPACE_ENV', '');
vi.stubEnv('CURSOR_TRACE_ID', '');
expect(detectIde(ideProcessInfo)).toBe(IDE_DEFINITIONS.vscode);
});
it('should detect VSCodeFork when no other IDE is detected and command does not include "code"', () => {
vi.stubEnv('TERM_PROGRAM', 'vscode');
vi.stubEnv('MONOSPACE_ENV', '');
vi.stubEnv('CURSOR_TRACE_ID', '');
expect(detectIde(ideProcessInfoNoCode)).toBe(IDE_DEFINITIONS.vscodefork);
});
});
@@ -99,6 +108,7 @@ describe('detectIde with ideInfoFromFile', () => {
it('should fall back to env detection if name is missing', () => {
const ideInfoFromFile = { displayName: 'Custom IDE' };
vi.stubEnv('TERM_PROGRAM', 'vscode');
vi.stubEnv('CURSOR_TRACE_ID', '');
expect(detectIde(ideProcessInfo, ideInfoFromFile)).toBe(
IDE_DEFINITIONS.vscode,
);
@@ -107,6 +117,7 @@ describe('detectIde with ideInfoFromFile', () => {
it('should fall back to env detection if displayName is missing', () => {
const ideInfoFromFile = { name: 'custom-ide' };
vi.stubEnv('TERM_PROGRAM', 'vscode');
vi.stubEnv('CURSOR_TRACE_ID', '');
expect(detectIde(ideProcessInfo, ideInfoFromFile)).toBe(
IDE_DEFINITIONS.vscode,
);
@@ -413,6 +413,11 @@ describe('ClearcutLogger', () => {
for (const [key, value] of Object.entries(env)) {
vi.stubEnv(key, value);
}
// Clear Cursor-specific environment variables that might interfere with tests
// Only clear if not explicitly testing Cursor detection
if (!env.CURSOR_TRACE_ID) {
vi.stubEnv('CURSOR_TRACE_ID', '');
}
const event = logger?.createLogEvent(EventNames.API_ERROR, []);
expect(event?.event_metadata[0][3]).toEqual({
gemini_cli_key: EventMetadataKey.GEMINI_CLI_SURFACE,