Skip to content

Commit 01bc49c

Browse files
committed
test: move pty cleanup coverage to adapter
1 parent 4013c65 commit 01bc49c

2 files changed

Lines changed: 22 additions & 104 deletions

File tree

src/agents/bash-tools.exec.pty-cleanup.test.ts

Lines changed: 0 additions & 102 deletions
This file was deleted.

src/process/supervisor/adapters/pty.test.ts

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,22 @@ vi.mock("../../kill-tree.js", () => ({
2020

2121
function createStubPty(pid = 1234) {
2222
let exitListener: ((event: { exitCode: number; signal?: number }) => void) | null = null;
23+
const disposeData = vi.fn();
24+
const disposeExit = vi.fn();
2325
return {
2426
pid,
2527
write: vi.fn(),
26-
onData: vi.fn(() => ({ dispose: vi.fn() })),
28+
onData: vi.fn(() => ({ dispose: disposeData })),
2729
onExit: vi.fn((listener: (event: { exitCode: number; signal?: number }) => void) => {
2830
exitListener = listener;
29-
return { dispose: vi.fn() };
31+
return { dispose: disposeExit };
3032
}),
3133
kill: (signal?: string) => ptyKillMock(signal),
3234
emitExit: (event: { exitCode: number; signal?: number }) => {
3335
exitListener?.(event);
3436
},
37+
disposeData,
38+
disposeExit,
3539
};
3640
}
3741

@@ -151,6 +155,22 @@ describe("createPtyAdapter", () => {
151155
await expect(adapter.wait()).resolves.toEqual({ code: 3, signal: null });
152156
});
153157

158+
it("disposes PTY listeners", async () => {
159+
const stub = createStubPty();
160+
spawnMock.mockReturnValue(stub);
161+
162+
const adapter = await createPtyAdapter({
163+
shell: "bash",
164+
args: ["-lc", "echo ok"],
165+
});
166+
adapter.onStdout(() => undefined);
167+
168+
adapter.dispose();
169+
170+
expect(stub.disposeData).toHaveBeenCalledTimes(1);
171+
expect(stub.disposeExit).toHaveBeenCalledTimes(1);
172+
});
173+
154174
it("keeps inherited env when no override env is provided on non-Linux", async () => {
155175
const originalPlatform = Object.getOwnPropertyDescriptor(process, "platform");
156176
Object.defineProperty(process, "platform", { value: "darwin", configurable: true });

0 commit comments

Comments
 (0)