mirror of
https://github.com/tiennm99/ccs.git
synced 2026-07-16 14:16:43 +00:00
60 lines
2.1 KiB
TypeScript
60 lines
2.1 KiB
TypeScript
import { describe, expect, it } from 'bun:test';
|
|
import { maybeWarnAboutResumeLaneMismatch } from '../../../src/auth/resume-lane-warning';
|
|
|
|
function stripAnsi(input: string): string {
|
|
return input.replace(/\u001b\[[0-9;]*m/g, '');
|
|
}
|
|
|
|
describe('resume lane warning', () => {
|
|
it('prints guidance when the plain ccs lane differs from the account lane', async () => {
|
|
const logs: string[] = [];
|
|
|
|
await maybeWarnAboutResumeLaneMismatch('work', '/tmp/account-lane', ['--resume'], {
|
|
log: (message) => logs.push(message),
|
|
resolvePlainLane: async () => ({
|
|
kind: 'native',
|
|
label: 'native Claude lane',
|
|
configDir: '/tmp/native-lane',
|
|
projectCount: 12,
|
|
}),
|
|
});
|
|
|
|
const plainLogs = logs.map((message) => stripAnsi(message));
|
|
|
|
expect(plainLogs[0]).toContain('Resume for account "work" will search that account lane');
|
|
expect(plainLogs).toContain('[i] Account lane: /tmp/account-lane');
|
|
expect(plainLogs).toContain('[i] Plain ccs lane: native Claude lane (/tmp/native-lane)');
|
|
expect(plainLogs).toContain('[i] Recover the original lane first: ccs -r');
|
|
});
|
|
|
|
it('does not log anything when resume is not requested', async () => {
|
|
const logs: string[] = [];
|
|
|
|
await maybeWarnAboutResumeLaneMismatch('work', '/tmp/account-lane', ['hello'], {
|
|
log: (message) => logs.push(message),
|
|
resolvePlainLane: async () => {
|
|
throw new Error('should not be called');
|
|
},
|
|
});
|
|
|
|
expect(logs).toHaveLength(0);
|
|
});
|
|
|
|
it('swallows diagnostic failures and keeps the warning path non-fatal', async () => {
|
|
const logs: string[] = [];
|
|
|
|
await expect(
|
|
maybeWarnAboutResumeLaneMismatch('work', '/tmp/account-lane', ['-r'], {
|
|
debug: true,
|
|
log: (message) => logs.push(message),
|
|
resolvePlainLane: async () => {
|
|
throw new Error('broken config');
|
|
},
|
|
})
|
|
).resolves.toBeUndefined();
|
|
|
|
expect(logs[0]).toContain('Resume lane guidance skipped because diagnostics failed');
|
|
expect(logs[1]).toContain('Diagnostic error: broken config');
|
|
});
|
|
});
|