Fix terminal PTY teardown races

This commit is contained in:
Mohamed Boudra
2026-05-08 20:02:52 +07:00
parent 04b04fe5ee
commit 5b6e974248
3 changed files with 35 additions and 12 deletions
@@ -32,13 +32,9 @@ afterEach(async () => {
const terminalsByCwd = await Promise.all(
manager.listDirectories().map((cwd) => manager.getTerminals(cwd)),
);
await Promise.all(
terminalsByCwd
.flat()
.map((terminal) =>
manager.killTerminalAndWait(terminal.id, { gracefulTimeoutMs: 50, forceTimeoutMs: 50 }),
),
);
for (const terminal of terminalsByCwd.flat()) {
await manager.killTerminalAndWait(terminal.id);
}
manager.killAll();
}
await new Promise((resolve) => setTimeout(resolve, 50));
@@ -306,13 +302,12 @@ it("kills all terminals and clears state", async () => {
it("emits cwd snapshots when terminals are created", async () => {
manager = createTerminalManager();
const cwd = realpathSync(tmpdir());
const snapshots: Array<{ cwd: string; terminals: Array<{ name: string; title?: string }> }> = [];
const snapshots: Array<{ cwd: string; terminals: Array<{ name: string }> }> = [];
const unsubscribe = manager.subscribeTerminalsChanged((input) => {
snapshots.push({
cwd: input.cwd,
terminals: input.terminals.map((terminal) => ({
name: terminal.name,
...(terminal.title ? { title: terminal.title } : {}),
})),
});
});