mirror of
https://github.com/tiennm99/ccs.git
synced 2026-07-16 18:16:08 +00:00
96 lines
3.0 KiB
TypeScript
96 lines
3.0 KiB
TypeScript
import * as fs from 'fs';
|
|
import * as os from 'os';
|
|
import * as path from 'path';
|
|
import { afterEach, describe, expect, it } from 'bun:test';
|
|
import { buildClaudeEnvironment } from '../../../src/cliproxy/executor/env-resolver';
|
|
|
|
const tempDirs: string[] = [];
|
|
|
|
function createCodexSettingsFile(models: {
|
|
defaultModel: string;
|
|
opusModel: string;
|
|
sonnetModel: string;
|
|
haikuModel: string;
|
|
}): string {
|
|
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'ccs-codex-fallback-'));
|
|
tempDirs.push(tempDir);
|
|
|
|
const settingsPath = path.join(tempDir, 'codex-test.settings.json');
|
|
fs.writeFileSync(
|
|
settingsPath,
|
|
JSON.stringify(
|
|
{
|
|
env: {
|
|
ANTHROPIC_BASE_URL: 'http://127.0.0.1:8317/api/provider/codex',
|
|
ANTHROPIC_AUTH_TOKEN: 'test-token',
|
|
ANTHROPIC_MODEL: models.defaultModel,
|
|
ANTHROPIC_DEFAULT_OPUS_MODEL: models.opusModel,
|
|
ANTHROPIC_DEFAULT_SONNET_MODEL: models.sonnetModel,
|
|
ANTHROPIC_DEFAULT_HAIKU_MODEL: models.haikuModel,
|
|
},
|
|
},
|
|
null,
|
|
2
|
|
) + '\n'
|
|
);
|
|
|
|
return settingsPath;
|
|
}
|
|
|
|
describe('buildClaudeEnvironment codex fallback normalization', () => {
|
|
afterEach(() => {
|
|
while (tempDirs.length > 0) {
|
|
const tempDir = tempDirs.pop();
|
|
if (tempDir) {
|
|
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
}
|
|
}
|
|
});
|
|
|
|
it('normalizes codex effort aliases when reasoning proxy is unavailable', () => {
|
|
const settingsPath = createCodexSettingsFile({
|
|
defaultModel: 'gpt-5.3-codex-high',
|
|
opusModel: 'gpt-5.3-codex-xhigh',
|
|
sonnetModel: 'gpt-5.3-codex-high',
|
|
haikuModel: 'gpt-5-mini-medium',
|
|
});
|
|
|
|
const env = buildClaudeEnvironment({
|
|
provider: 'codex',
|
|
useRemoteProxy: false,
|
|
localPort: 8317,
|
|
customSettingsPath: settingsPath,
|
|
verbose: false,
|
|
});
|
|
|
|
expect(env.ANTHROPIC_MODEL).toBe('gpt-5.3-codex(high)');
|
|
expect(env.ANTHROPIC_DEFAULT_OPUS_MODEL).toBe('gpt-5.3-codex(xhigh)');
|
|
expect(env.ANTHROPIC_DEFAULT_SONNET_MODEL).toBe('gpt-5.3-codex(high)');
|
|
expect(env.ANTHROPIC_DEFAULT_HAIKU_MODEL).toBe('gpt-5-mini(medium)');
|
|
});
|
|
|
|
it('keeps codex effort aliases when reasoning proxy is active', () => {
|
|
const settingsPath = createCodexSettingsFile({
|
|
defaultModel: 'gpt-5.3-codex-high',
|
|
opusModel: 'gpt-5.3-codex-xhigh',
|
|
sonnetModel: 'gpt-5.3-codex-high',
|
|
haikuModel: 'gpt-5-mini-medium',
|
|
});
|
|
|
|
const env = buildClaudeEnvironment({
|
|
provider: 'codex',
|
|
useRemoteProxy: false,
|
|
localPort: 8317,
|
|
customSettingsPath: settingsPath,
|
|
codexReasoningPort: 9444,
|
|
verbose: false,
|
|
});
|
|
|
|
expect(env.ANTHROPIC_MODEL).toBe('gpt-5.3-codex-high');
|
|
expect(env.ANTHROPIC_DEFAULT_OPUS_MODEL).toBe('gpt-5.3-codex-xhigh');
|
|
expect(env.ANTHROPIC_DEFAULT_SONNET_MODEL).toBe('gpt-5.3-codex-high');
|
|
expect(env.ANTHROPIC_DEFAULT_HAIKU_MODEL).toBe('gpt-5-mini-medium');
|
|
expect(env.ANTHROPIC_BASE_URL).toBe('http://127.0.0.1:9444/api/provider/codex');
|
|
});
|
|
});
|