From 2e0e0618db3e63d125de2eca86671f874e01487c Mon Sep 17 00:00:00 2001 From: can1357 Date: Fri, 7 Aug 2026 13:17:11 +0200 Subject: [PATCH] test(tui): cover pending tmux appearance teardown --- packages/tui/test/terminal-appearance.test.ts | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/packages/tui/test/terminal-appearance.test.ts b/packages/tui/test/terminal-appearance.test.ts index c01a40de0..1cb6169fd 100644 --- a/packages/tui/test/terminal-appearance.test.ts +++ b/packages/tui/test/terminal-appearance.test.ts @@ -410,6 +410,26 @@ describe("ProcessTerminal OSC 11 appearance detection", () => { expect(received).toEqual([]); }); + it("cancels a pending tmux appearance cache read during teardown", () => { + vi.useFakeTimers(); + Bun.env.TMUX = "/tmp/tmux-1000/default,1234,0"; + const { terminal, queryCount, sentinelCount } = setupTerminal(); + + process.stdin.emit("data", "\x1b]11;rgb:0000/0000/0000\x07"); + for (let i = 0; i < 7; i++) process.stdin.emit("data", "\x1b[?1;2c"); + const directQueriesBeforeRefresh = queryCount(); + const directSentinelsBeforeRefresh = sentinelCount(); + + terminal.refreshAppearance?.(); + expect(vi.getTimerCount()).toBe(1); + terminal.stop(); + expect(vi.getTimerCount()).toBe(0); + vi.advanceTimersByTime(100); + + expect(queryCount()).toBe(directQueriesBeforeRefresh); + expect(sentinelCount()).toBe(directSentinelsBeforeRefresh); + }); + it("refreshAppearance() re-evaluates a changed background through the callback pipeline", () => { const { terminal } = setupTerminal(); const appearances: string[] = [];