import { afterEach, expect, mock, test } from 'bun:test' import { getAdditionalModelOptionsCacheScope } from '../../services/api/providerConfig.js' import { getAPIProvider } from '../../utils/model/providers.js' const originalEnv = { CLAUDE_CODE_USE_OPENAI: process.env.CLAUDE_CODE_USE_OPENAI, CLAUDE_CODE_USE_GEMINI: process.env.CLAUDE_CODE_USE_GEMINI, CLAUDE_CODE_USE_GITHUB: process.env.CLAUDE_CODE_USE_GITHUB, CLAUDE_CODE_USE_MISTRAL: process.env.CLAUDE_CODE_USE_MISTRAL, CLAUDE_CODE_USE_BEDROCK: process.env.CLAUDE_CODE_USE_BEDROCK, CLAUDE_CODE_USE_VERTEX: process.env.CLAUDE_CODE_USE_VERTEX, CLAUDE_CODE_USE_FOUNDRY: process.env.CLAUDE_CODE_USE_FOUNDRY, OPENAI_BASE_URL: process.env.OPENAI_BASE_URL, OPENAI_API_BASE: process.env.OPENAI_API_BASE, OPENAI_MODEL: process.env.OPENAI_MODEL, } afterEach(() => { mock.restore() process.env.CLAUDE_CODE_USE_OPENAI = originalEnv.CLAUDE_CODE_USE_OPENAI process.env.CLAUDE_CODE_USE_GEMINI = originalEnv.CLAUDE_CODE_USE_GEMINI process.env.CLAUDE_CODE_USE_GITHUB = originalEnv.CLAUDE_CODE_USE_GITHUB process.env.CLAUDE_CODE_USE_MISTRAL = originalEnv.CLAUDE_CODE_USE_MISTRAL process.env.CLAUDE_CODE_USE_BEDROCK = originalEnv.CLAUDE_CODE_USE_BEDROCK process.env.CLAUDE_CODE_USE_VERTEX = originalEnv.CLAUDE_CODE_USE_VERTEX process.env.CLAUDE_CODE_USE_FOUNDRY = originalEnv.CLAUDE_CODE_USE_FOUNDRY process.env.OPENAI_BASE_URL = originalEnv.OPENAI_BASE_URL process.env.OPENAI_API_BASE = originalEnv.OPENAI_API_BASE process.env.OPENAI_MODEL = originalEnv.OPENAI_MODEL }) test('opens the model picker without awaiting local model discovery refresh', async () => { process.env.CLAUDE_CODE_USE_OPENAI = '1' delete process.env.CLAUDE_CODE_USE_GEMINI delete process.env.CLAUDE_CODE_USE_GITHUB delete process.env.CLAUDE_CODE_USE_MISTRAL delete process.env.CLAUDE_CODE_USE_BEDROCK delete process.env.CLAUDE_CODE_USE_VERTEX delete process.env.CLAUDE_CODE_USE_FOUNDRY delete process.env.OPENAI_API_BASE process.env.OPENAI_BASE_URL = 'http://127.0.0.1:8080/v1' process.env.OPENAI_MODEL = 'qwen2.5-coder-7b-instruct' let resolveDiscovery: (() => void) | undefined const discoverOpenAICompatibleModelOptions = mock( () => new Promise(resolve => { resolveDiscovery = resolve }), ) mock.module('../../utils/model/openaiModelDiscovery.js', () => ({ discoverOpenAICompatibleModelOptions, })) expect(getAdditionalModelOptionsCacheScope()).toBe('openai:http://127.0.0.1:8080/v1') const { call } = await import('./model.js') const result = await Promise.race([ call(() => {}, {} as never, ''), new Promise(resolve => setTimeout(() => resolve('timeout'), 50)), ]) resolveDiscovery?.() expect(result).not.toBe('timeout') })