import { describe, expect, test } from 'bun:test' import { ensureSourceRuntimeGlobals } from './sourceBootstrap.js' function restoreEnv(name: string, value: string | undefined): void { if (value === undefined) { delete process.env[name] } else { process.env[name] = value } } describe('ensureSourceRuntimeGlobals', () => { test('defines source MACRO globals needed by unbundled Claude source', () => { ensureSourceRuntimeGlobals() const macro = (globalThis as unknown as { MACRO?: { VERSION?: string } }).MACRO expect(macro?.VERSION).toBeTruthy() }) test('maps generic local gateway env names to Claude source env names', () => { const oldApiKey = process.env.ANTHROPIC_API_KEY const oldBaseUrl = process.env.ANTHROPIC_BASE_URL const oldSonnet = process.env.ANTHROPIC_DEFAULT_SONNET_MODEL const oldOpus = process.env.ANTHROPIC_DEFAULT_OPUS_MODEL try { delete process.env.ANTHROPIC_API_KEY delete process.env.ANTHROPIC_BASE_URL delete process.env.ANTHROPIC_DEFAULT_SONNET_MODEL delete process.env.ANTHROPIC_DEFAULT_OPUS_MODEL process.env.API_KEY = 'test-key' process.env.BASE_URL = 'https://example.invalid' process.env.MODEL_NAME = 'test-model' ensureSourceRuntimeGlobals() expect(process.env.ANTHROPIC_API_KEY).toBe('test-key') expect(process.env.ANTHROPIC_BASE_URL).toBe('https://example.invalid') expect(process.env.ANTHROPIC_DEFAULT_SONNET_MODEL).toBe('test-model') expect(process.env.ANTHROPIC_DEFAULT_OPUS_MODEL).toBe('test-model') } finally { restoreEnv('ANTHROPIC_API_KEY', oldApiKey) restoreEnv('ANTHROPIC_BASE_URL', oldBaseUrl) restoreEnv('ANTHROPIC_DEFAULT_SONNET_MODEL', oldSonnet) restoreEnv('ANTHROPIC_DEFAULT_OPUS_MODEL', oldOpus) delete process.env.API_KEY delete process.env.BASE_URL delete process.env.MODEL_NAME } }) })