Files
ccs/tests/unit/utils/image-analysis/claude-tool-args.test.ts
T

83 lines
3.0 KiB
TypeScript

import { describe, expect, it } from 'bun:test';
import {
appendThirdPartyImageAnalysisToolArgs,
getImageAnalysisSteeringPrompt,
} from '../../../../src/utils/image-analysis';
describe('appendThirdPartyImageAnalysisToolArgs', () => {
it('appends the steering prompt for image analysis', () => {
const args = appendThirdPartyImageAnalysisToolArgs(['-p', 'describe the screenshot']);
expect(args).toEqual(['-p', 'describe the screenshot', '--append-system-prompt', getImageAnalysisSteeringPrompt()]);
});
it('does not duplicate the steering prompt when already present', () => {
const steeringPrompt = getImageAnalysisSteeringPrompt();
const args = appendThirdPartyImageAnalysisToolArgs([
'-p',
'describe the screenshot',
'--append-system-prompt',
steeringPrompt,
]);
expect(args.filter((arg) => arg === steeringPrompt)).toHaveLength(1);
expect(args.filter((arg) => arg === '--append-system-prompt')).toHaveLength(1);
});
it('preserves trailing arguments after --', () => {
const args = appendThirdPartyImageAnalysisToolArgs(['-p', 'describe', '--', 'extra']);
expect(args).toEqual([
'-p',
'describe',
'--append-system-prompt',
getImageAnalysisSteeringPrompt(),
'--',
'extra',
]);
});
// File mode: --append-system-prompt-file when user passes --append-system-prompt-file
it('uses --append-system-prompt-file when user passes --append-system-prompt-file', () => {
const result = appendThirdPartyImageAnalysisToolArgs([
'-p',
'describe',
'--append-system-prompt-file',
'/tmp/user-prompt.txt',
]);
expect(result).toContain('--append-system-prompt-file');
expect(result).not.toContain('--append-system-prompt');
const fileFlags = result.filter((arg) => arg === '--append-system-prompt-file');
expect(fileFlags.length).toBeGreaterThanOrEqual(2);
});
it('uses --append-system-prompt-file when user passes equals form', () => {
const result = appendThirdPartyImageAnalysisToolArgs([
'-p',
'describe',
'--append-system-prompt-file=/tmp/user-prompt.txt',
]);
expect(result).not.toContain('--append-system-prompt');
const fileFlags = result.filter(
(arg) => arg === '--append-system-prompt-file' || arg.startsWith('--append-system-prompt-file=')
);
expect(fileFlags.length).toBeGreaterThanOrEqual(2);
});
it('does not treat unrelated user prompt files as the managed CCS steering prompt', () => {
const result = appendThirdPartyImageAnalysisToolArgs([
'-p',
'describe',
'--append-system-prompt-file',
'/tmp/user-ccs-prompt-image-analysis-tool-notes.txt',
]);
const filePaths = result.filter((arg, index) => result[index - 1] === '--append-system-prompt-file');
expect(filePaths).toContain('/tmp/user-ccs-prompt-image-analysis-tool-notes.txt');
expect(filePaths.some((filePath) => filePath.endsWith('/ccs-prompt-image-analysis-tool.txt'))).toBe(true);
});
});