diff options
Diffstat (limited to 'packages/core/src/telemetry/clearcut-logger/clearcut-logger.test.ts')
| -rw-r--r-- | packages/core/src/telemetry/clearcut-logger/clearcut-logger.test.ts | 77 |
1 files changed, 74 insertions, 3 deletions
diff --git a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.test.ts b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.test.ts index 96129ad3..f2ce4d19 100644 --- a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.test.ts +++ b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.test.ts @@ -47,7 +47,6 @@ describe('ClearcutLogger', () => { const CLEARCUT_URL = 'https://play.googleapis.com/log'; const MOCK_DATE = new Date('2025-01-02T00:00:00.000Z'); const EXAMPLE_RESPONSE = `["${NEXT_WAIT_MS}",null,[[["ANDROID_BACKUP",0],["BATTERY_STATS",0],["SMART_SETUP",0],["TRON",0]],-3334737594024971225],[]]`; - // A helper to get the internal events array for testing const getEvents = (l: ClearcutLogger): LogEventEntry[][] => l['events'].toArray() as LogEventEntry[][]; @@ -57,6 +56,10 @@ describe('ClearcutLogger', () => { const requeueFailedEvents = (l: ClearcutLogger, events: LogEventEntry[][]) => l['requeueFailedEvents'](events); + afterEach(() => { + vi.unstubAllEnvs(); + }); + function setup({ config = {} as Partial<ConfigParameters>, lifetimeGoogleAccounts = 1, @@ -135,16 +138,84 @@ describe('ClearcutLogger', () => { }); }); - it('logs the current surface', () => { + it('logs the current surface from a github action', () => { + const { logger } = setup({}); + + vi.stubEnv('GITHUB_SHA', '8675309'); + + const event = logger?.createLogEvent('abc', []); + + expect(event?.event_metadata[0][1]).toEqual({ + gemini_cli_key: EventMetadataKey.GEMINI_CLI_SURFACE, + value: 'GitHub', + }); + }); + + it('honors the value from env.SURFACE over all others', () => { const { logger } = setup({}); + vi.stubEnv('TERM_PROGRAM', 'vscode'); + vi.stubEnv('SURFACE', 'ide-1234'); + const event = logger?.createLogEvent('abc', []); expect(event?.event_metadata[0][1]).toEqual({ gemini_cli_key: EventMetadataKey.GEMINI_CLI_SURFACE, - value: 'SURFACE_NOT_SET', + value: 'ide-1234', }); }); + + it.each([ + { + env: { + CURSOR_TRACE_ID: 'abc123', + GITHUB_SHA: undefined, + }, + expectedValue: 'cursor', + }, + { + env: { + TERM_PROGRAM: 'vscode', + GITHUB_SHA: undefined, + }, + expectedValue: 'vscode', + }, + { + env: { + MONOSPACE_ENV: 'true', + GITHUB_SHA: undefined, + }, + expectedValue: 'firebasestudio', + }, + { + env: { + __COG_BASHRC_SOURCED: 'true', + GITHUB_SHA: undefined, + }, + expectedValue: 'devin', + }, + { + env: { + CLOUD_SHELL: 'true', + GITHUB_SHA: undefined, + }, + expectedValue: 'cloudshell', + }, + ])( + 'logs the current surface for as $expectedValue, preempting vscode detection', + ({ env, expectedValue }) => { + const { logger } = setup({}); + for (const [key, value] of Object.entries(env)) { + vi.stubEnv(key, value); + } + vi.stubEnv('TERM_PROGRAM', 'vscode'); + const event = logger?.createLogEvent('abc', []); + expect(event?.event_metadata[0][1]).toEqual({ + gemini_cli_key: EventMetadataKey.GEMINI_CLI_SURFACE, + value: expectedValue, + }); + }, + ); }); describe('enqueueLogEvent', () => { |
