* fix(models): guard GitHub default model setting against non-string values * test(models): avoid brittle GitHub default assertion in model guard test
58 lines
2.1 KiB
TypeScript
58 lines
2.1 KiB
TypeScript
import { afterEach, beforeEach, expect, test } from 'bun:test'
|
|
|
|
import { saveGlobalConfig } from '../config.js'
|
|
import { getDefaultMainLoopModelSetting, getUserSpecifiedModelSetting } from './model.js'
|
|
|
|
const env = {
|
|
CLAUDE_CODE_USE_GITHUB: process.env.CLAUDE_CODE_USE_GITHUB,
|
|
CLAUDE_CODE_USE_OPENAI: process.env.CLAUDE_CODE_USE_OPENAI,
|
|
CLAUDE_CODE_USE_GEMINI: process.env.CLAUDE_CODE_USE_GEMINI,
|
|
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_MODEL: process.env.OPENAI_MODEL,
|
|
}
|
|
|
|
beforeEach(() => {
|
|
process.env.CLAUDE_CODE_USE_GITHUB = '1'
|
|
delete process.env.CLAUDE_CODE_USE_OPENAI
|
|
delete process.env.CLAUDE_CODE_USE_GEMINI
|
|
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_MODEL
|
|
saveGlobalConfig(current => ({
|
|
...current,
|
|
model: ({ bad: true } as unknown) as string,
|
|
}))
|
|
})
|
|
|
|
afterEach(() => {
|
|
process.env.CLAUDE_CODE_USE_GITHUB = env.CLAUDE_CODE_USE_GITHUB
|
|
process.env.CLAUDE_CODE_USE_OPENAI = env.CLAUDE_CODE_USE_OPENAI
|
|
process.env.CLAUDE_CODE_USE_GEMINI = env.CLAUDE_CODE_USE_GEMINI
|
|
process.env.CLAUDE_CODE_USE_BEDROCK = env.CLAUDE_CODE_USE_BEDROCK
|
|
process.env.CLAUDE_CODE_USE_VERTEX = env.CLAUDE_CODE_USE_VERTEX
|
|
process.env.CLAUDE_CODE_USE_FOUNDRY = env.CLAUDE_CODE_USE_FOUNDRY
|
|
process.env.OPENAI_MODEL = env.OPENAI_MODEL
|
|
saveGlobalConfig(current => ({
|
|
...current,
|
|
model: undefined,
|
|
}))
|
|
})
|
|
|
|
test('github default model setting ignores non-string saved model', () => {
|
|
const model = getDefaultMainLoopModelSetting()
|
|
expect(typeof model).toBe('string')
|
|
expect(model).not.toBe('[object Object]')
|
|
expect(model.length).toBeGreaterThan(0)
|
|
})
|
|
|
|
test('user specified model ignores non-string saved model', () => {
|
|
const model = getUserSpecifiedModelSetting()
|
|
if (model !== undefined && model !== null) {
|
|
expect(typeof model).toBe('string')
|
|
expect(model).not.toBe('[object Object]')
|
|
}
|
|
})
|