Files
ccs/tests/unit/utils/websearch/launch-state.test.ts
T

49 lines
1.9 KiB
TypeScript

import { afterEach, beforeEach, describe, expect, it } from 'bun:test';
import * as fs from 'fs';
import * as os from 'os';
import * as path from 'path';
import { appendThirdPartyWebSearchToolArgs } from '../../../../src/utils/websearch/claude-tool-args';
import { resolveWebSearchLaunchState } from '../../../../src/utils/websearch/launch-state';
import { ensureWebSearchMcpForLaunch } from '../../../../src/utils/websearch/mcp-installer';
describe('WebSearch launch state', () => {
let originalCcsHome: string | undefined;
let tempHome = '';
let configPath = '';
beforeEach(() => {
originalCcsHome = process.env.CCS_HOME;
tempHome = fs.mkdtempSync(path.join(os.tmpdir(), 'ccs-websearch-launch-state-'));
const ccsDir = path.join(tempHome, '.ccs');
configPath = path.join(ccsDir, 'config.yaml');
fs.mkdirSync(ccsDir, { recursive: true });
process.env.CCS_HOME = tempHome;
});
afterEach(() => {
if (originalCcsHome === undefined) {
delete process.env.CCS_HOME;
} else {
process.env.CCS_HOME = originalCcsHome;
}
fs.rmSync(tempHome, { recursive: true, force: true });
});
it('keeps provisioning, hook env, and steering on one snapshot when config changes', () => {
fs.writeFileSync(configPath, 'version: 12\nwebsearch:\n enabled: false\n', 'utf8');
const launch = resolveWebSearchLaunchState();
ensureWebSearchMcpForLaunch(launch.config);
fs.writeFileSync(configPath, 'version: 12\nwebsearch:\n enabled: true\n', 'utf8');
const args = appendThirdPartyWebSearchToolArgs(['smoke'], launch.enabled);
expect(launch.enabled).toBe(false);
expect(launch.hookEnv.CCS_WEBSEARCH_ENABLED).toBe('0');
expect(launch.hookEnv.CCS_WEBSEARCH_SKIP).toBe('1');
expect(args).toContain('--disallowedTools');
expect(args).toContain('WebSearch');
expect(args).not.toContain('--append-system-prompt');
});
});