fix: avoid unhandled rejection in TeamProvisioningService warmup test

probeClaudeRuntime spawns two probes in parallel; both called spawnCli.
Mock threw on every call, leaving pingAttempt1Promise rejected and unhandled.
Now throw only on first call, return fake child on second.

Made-with: Cursor
This commit is contained in:
iliya 2026-03-03 01:25:07 +02:00
parent 0144046c07
commit 6e0fdad612

View file

@ -1,3 +1,5 @@
import { EventEmitter } from 'events';
import { beforeEach, describe, expect, it, vi } from 'vitest';
vi.mock('@main/services/team/ClaudeBinaryResolver', () => ({
@ -17,6 +19,17 @@ function allowConsoleLogs() {
vi.spyOn(console, 'warn').mockImplementation(() => {});
}
function createFakeChild(exitCode: number): NodeJS.Process {
const child = new EventEmitter() as NodeJS.Process & {
stdout: EventEmitter;
stderr: EventEmitter;
};
child.stdout = new EventEmitter();
child.stderr = new EventEmitter();
setImmediate(() => child.emit('close', exitCode));
return child;
}
describe('TeamProvisioningService', () => {
beforeEach(() => {
vi.clearAllMocks();
@ -26,8 +39,13 @@ describe('TeamProvisioningService', () => {
it('does not throw when spawnCli rejects', async () => {
allowConsoleLogs();
vi.mocked(ClaudeBinaryResolver.resolve).mockResolvedValue('C:\\path\\claude');
let callCount = 0;
vi.mocked(spawnCli).mockImplementation(() => {
throw new Error('spawn EINVAL');
callCount++;
if (callCount === 1) {
throw new Error('spawn EINVAL');
}
return createFakeChild(0) as ReturnType<typeof spawnCli>;
});
const svc = new TeamProvisioningService();