mirror of
https://github.com/tiennm99/ccs.git
synced 2026-10-14 12:16:38 +00:00
fix(codex): align cliproxy guidance with runtime behavior
This commit is contained in:
1 parent
0ffde4f3a2
commit
bd1ff02521
22 files changed
+342
-64
No files matched your search
@@ -81,7 +81,8 @@ describe('help command parity', () => {
|
||||
'Fastest path: turn on the channel, save the token if needed, then run ccs.'
|
||||
)
|
||||
).toBe(true);
|
||||
expect(rendered.includes('Not supported for ccs glm')).toBe(true);
|
||||
expect(rendered.includes('ccs codex')).toBe(true);
|
||||
expect(rendered.includes('ccs --target codex')).toBe(true);
|
||||
expect(
|
||||
rendered.includes('Current-process TELEGRAM_BOT_TOKEN / DISCORD_BOT_TOKEN also work')
|
||||
).toBe(true);
|
||||
|
||||
@@ -278,6 +278,22 @@ process.exit(0);
|
||||
expect(readLoggedCodexCalls(codexArgsLogPath)).toEqual([['--version']]);
|
||||
});
|
||||
|
||||
it('fails with a clean CLI error when ccsxp receives a malformed --target flag', () => {
|
||||
if (process.platform === 'win32') return;
|
||||
|
||||
const result = runCcsxpAlias(['--target'], {
|
||||
...process.env,
|
||||
CI: '1',
|
||||
NO_COLOR: '1',
|
||||
CCS_HOME: tmpHome,
|
||||
CCS_CODEX_PATH: fakeCodexPath,
|
||||
});
|
||||
|
||||
expect(result.status).toBe(1);
|
||||
expect(result.stderr).toContain('[X] --target requires a value (claude, droid, codex)');
|
||||
expect(result.stderr).not.toContain('at parseTargetFlags');
|
||||
});
|
||||
|
||||
it('passes ccs codex --target codex --version through to the native Codex binary', () => {
|
||||
if (process.platform === 'win32') return;
|
||||
|
||||
|
||||
@@ -234,6 +234,32 @@ wire_api = "responses"
|
||||
expect(diagnostics.warnings.some((warning) => warning.includes('missing env_key'))).toBe(true);
|
||||
});
|
||||
|
||||
it('does not warn for built-in openai provider without a custom model_providers entry', async () => {
|
||||
fs.writeFileSync(path.join(codexHome, 'config.toml'), 'model_provider = "openai"\n');
|
||||
|
||||
const diagnostics = await getCodexDashboardDiagnostics();
|
||||
|
||||
expect(diagnostics.warnings.some((warning) => warning.includes('missing from [model_providers]'))).toBe(
|
||||
false
|
||||
);
|
||||
});
|
||||
|
||||
it('allows custom providers that use requires_openai_auth without env_key warnings', async () => {
|
||||
fs.writeFileSync(
|
||||
path.join(codexHome, 'config.toml'),
|
||||
`model_provider = "corp-openai"
|
||||
|
||||
[model_providers.corp-openai]
|
||||
base_url = "https://example.test/v1"
|
||||
requires_openai_auth = true
|
||||
`
|
||||
);
|
||||
|
||||
const diagnostics = await getCodexDashboardDiagnostics();
|
||||
|
||||
expect(diagnostics.warnings.some((warning) => warning.includes('missing env_key'))).toBe(false);
|
||||
});
|
||||
|
||||
it('summarizes granular approval policies without flattening them to null', async () => {
|
||||
fs.writeFileSync(
|
||||
path.join(codexHome, 'config.toml'),
|
||||
|
||||
Reference in new issue
Block a user