From 820c2d70835f0c2a5e704b37bef3927353bd445b Mon Sep 17 00:00:00 2001 From: Merge Sim Date: Sun, 30 Aug 2026 21:53:51 -0700 Subject: [PATCH] test STA-5878 replacement fence preservation --- .../daemon/terminal-host-reaped-fence.test.ts | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/main/daemon/terminal-host-reaped-fence.test.ts b/src/main/daemon/terminal-host-reaped-fence.test.ts index 0c3bb0822c2..fee51340860 100644 --- a/src/main/daemon/terminal-host-reaped-fence.test.ts +++ b/src/main/daemon/terminal-host-reaped-fence.test.ts @@ -62,6 +62,7 @@ describe('TerminalHost pending kill fences', () => { }) it('preserves a replacement session when a stale pending kill is fenced out', async () => { + let onExit: ((code: number) => void) | undefined const subprocess: SubprocessHandle = { pid: 99999, getForegroundProcess: () => null, @@ -72,32 +73,31 @@ describe('TerminalHost pending kill fences', () => { terminateOwnedTree: () => 'unavailable', signal: vi.fn(), onData: vi.fn(), - onExit: vi.fn(), + onExit: (callback) => { + onExit = callback + }, dispose: vi.fn() } const host = new TerminalHost({ spawnSubprocess: () => subprocess }) - try { - const replacement = await host.createOrAttach({ - sessionId: 'replacement-fence', - cols: 80, - rows: 24, - launchAgent: 'claude', - streamClient: { onData: vi.fn(), onExit: vi.fn() } + const replacement = await host.createOrAttach({ + sessionId: 'replacement-fence', + cols: 80, + rows: 24, + launchAgent: 'claude', + streamClient: { onData: vi.fn(), onExit: vi.fn() } + }) + await expect( + host.kill('replacement-fence', { + immediate: true, + incarnationId: 'stale-incarnation' }) - await expect( - host.kill('replacement-fence', { - immediate: true, - incarnationId: 'stale-incarnation' - }) - ).resolves.toEqual({ fenceUnavailable: true }) - expect(host.listSessions()).toEqual([ - expect.objectContaining({ - id: 'replacement-fence', - incarnationId: replacement.incarnationId - }) - ]) - } finally { - await host.dispose() - } + ).resolves.toEqual({ fenceUnavailable: true }) + expect(host.listSessions()).toEqual([ + expect.objectContaining({ + sessionId: 'replacement-fence', + incarnationId: replacement.incarnationId + }) + ]) + onExit?.(0) }) })