mirror of
https://github.com/tiennm99/ccs.git
synced 2026-07-16 20:17:45 +00:00
81 lines
2.9 KiB
TypeScript
81 lines
2.9 KiB
TypeScript
import { describe, expect, it } from 'bun:test';
|
|
import { DEFAULT_COPILOT_CONFIG } from '../../../src/config/unified-config-types';
|
|
import {
|
|
DEPRECATED_COPILOT_MODEL_IDS,
|
|
normalizeCopilotConfig,
|
|
normalizeCopilotConfigWithWarnings,
|
|
normalizeCopilotModelId,
|
|
normalizeCopilotSettings,
|
|
normalizeCopilotSettingsWithWarnings,
|
|
} from '../../../src/copilot/copilot-model-normalizer';
|
|
|
|
describe('copilot-model-normalizer', () => {
|
|
it('tracks raptor-mini as deprecated', () => {
|
|
expect(DEPRECATED_COPILOT_MODEL_IDS).toContain('raptor-mini');
|
|
});
|
|
|
|
it('normalizes deprecated model IDs to the safe default', () => {
|
|
expect(normalizeCopilotModelId('raptor-mini')).toBe(DEFAULT_COPILOT_CONFIG.model);
|
|
});
|
|
|
|
it('falls back deprecated tier overrides to the normalized base model', () => {
|
|
const result = normalizeCopilotConfigWithWarnings({
|
|
...DEFAULT_COPILOT_CONFIG,
|
|
model: 'claude-sonnet-4.5',
|
|
haiku_model: 'raptor-mini',
|
|
});
|
|
|
|
expect(result.config.model).toBe('claude-sonnet-4.5');
|
|
expect(result.config.haiku_model).toBe('claude-sonnet-4.5');
|
|
expect(result.warnings).toHaveLength(1);
|
|
expect(result.warnings[0]?.message).toContain("'raptor-mini'");
|
|
expect(result.warnings[0]?.message).toContain("'claude-sonnet-4.5'");
|
|
});
|
|
|
|
it('normalizes raw settings payloads without dropping unrelated env keys', () => {
|
|
const normalized = normalizeCopilotSettings(
|
|
{
|
|
env: {
|
|
ANTHROPIC_BASE_URL: 'http://127.0.0.1:4141',
|
|
ANTHROPIC_MODEL: 'raptor-mini',
|
|
ANTHROPIC_DEFAULT_OPUS_MODEL: 'raptor-mini',
|
|
ANTHROPIC_DEFAULT_SONNET_MODEL: 'raptor-mini',
|
|
ANTHROPIC_DEFAULT_HAIKU_MODEL: 'raptor-mini',
|
|
EXTRA_FLAG: 'keep-me',
|
|
},
|
|
},
|
|
{
|
|
...DEFAULT_COPILOT_CONFIG,
|
|
model: 'raptor-mini',
|
|
}
|
|
);
|
|
|
|
expect(normalized.env?.ANTHROPIC_MODEL).toBe('gpt-4.1');
|
|
expect(normalized.env?.ANTHROPIC_DEFAULT_OPUS_MODEL).toBe('gpt-4.1');
|
|
expect(normalized.env?.ANTHROPIC_DEFAULT_SONNET_MODEL).toBe('gpt-4.1');
|
|
expect(normalized.env?.ANTHROPIC_DEFAULT_HAIKU_MODEL).toBe('gpt-4.1');
|
|
expect(normalized.env?.EXTRA_FLAG).toBe('keep-me');
|
|
});
|
|
|
|
it('keeps small-fast and haiku env settings in lockstep', () => {
|
|
const result = normalizeCopilotSettingsWithWarnings(
|
|
{
|
|
env: {
|
|
ANTHROPIC_MODEL: 'claude-sonnet-4.5',
|
|
ANTHROPIC_SMALL_FAST_MODEL: 'raptor-mini',
|
|
},
|
|
},
|
|
{
|
|
...DEFAULT_COPILOT_CONFIG,
|
|
model: 'claude-sonnet-4.5',
|
|
}
|
|
);
|
|
|
|
expect(result.settings.env?.ANTHROPIC_DEFAULT_HAIKU_MODEL).toBe('claude-sonnet-4.5');
|
|
expect(result.settings.env?.ANTHROPIC_SMALL_FAST_MODEL).toBe('claude-sonnet-4.5');
|
|
expect(result.effectiveConfig.haiku_model).toBe('claude-sonnet-4.5');
|
|
expect(result.warnings).toHaveLength(1);
|
|
expect(result.warnings[0]?.tier).toBe('haiku');
|
|
});
|
|
});
|