74 lines
2.6 KiB
TypeScript
74 lines
2.6 KiB
TypeScript
// @vitest-environment node
|
|
import { describe, expect, it } from 'vitest';
|
|
|
|
import { extractDoctorInvokedCandidates } from '@main/services/team/ClaudeDoctorProbe';
|
|
|
|
describe('ClaudeDoctorProbe', () => {
|
|
it('extracts a single invoked path from doctor output', () => {
|
|
const output = `
|
|
────────────────────────────────────
|
|
Diagnostics
|
|
└ Currently running: native (2.1.101)
|
|
└ Path: /Users/belief/.local/share/claude/versions/2.1.101
|
|
└ Invoked: /Users/belief/.local/share/claude/versions/2.1.101
|
|
└ Config install method: native
|
|
Press Enter to continue…
|
|
`;
|
|
|
|
expect(extractDoctorInvokedCandidates(output)).toEqual([
|
|
'/Users/belief/.local/share/claude/versions/2.1.101',
|
|
]);
|
|
});
|
|
|
|
it('reconstructs wrapped invoked paths without corrupting spaces', () => {
|
|
const output = `
|
|
\u001B[2J────────────────────────────────────
|
|
Diagnostics
|
|
└ Invoked: /Applications/Agent Teams${' '}
|
|
AI.app/Contents/Resources/runtime/clau
|
|
de-multimodel
|
|
└ Config install method: native
|
|
Press Enter to continue…
|
|
`;
|
|
|
|
expect(extractDoctorInvokedCandidates(output)).toEqual([
|
|
'/Applications/Agent Teams AI.app/Contents/Resources/runtime/claude-multimodel',
|
|
]);
|
|
});
|
|
|
|
it('keeps all invoked candidates across repeated redraw frames', () => {
|
|
const output = `
|
|
────────────────────────────────────
|
|
Diagnostics
|
|
└ Invoked: /Users/belief/.local/sh
|
|
are/claude/versions/2.1.100
|
|
└ Config install method: native
|
|
Press Enter to continue…
|
|
|
|
────────────────────────────────────
|
|
Diagnostics
|
|
└ Invoked: /Users/belief/.local/sh
|
|
are/claude/versions/2.1.101
|
|
└ Config install method: native
|
|
Press Enter to continue…
|
|
`;
|
|
|
|
expect(extractDoctorInvokedCandidates(output)).toEqual([
|
|
'/Users/belief/.local/share/claude/versions/2.1.100',
|
|
'/Users/belief/.local/share/claude/versions/2.1.101',
|
|
]);
|
|
});
|
|
|
|
it('accepts ASCII bullet variants from degraded terminal captures', () => {
|
|
const output = `
|
|
Diagnostics
|
|
L Path: /Users/vladislavkonovalov/.nvm/versions/node/v22.22.1/bin/node
|
|
L Invoked: /Users/vladislavkonovalov/.claude/local/node_modules/.bin/claude
|
|
L Config install method: local
|
|
`;
|
|
|
|
expect(extractDoctorInvokedCandidates(output)).toEqual([
|
|
'/Users/vladislavkonovalov/.claude/local/node_modules/.bin/claude',
|
|
]);
|
|
});
|
|
});
|