From f5c90b27581dfdaf9392305aed3e09eb1041ab01 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Thu, 10 Sep 2026 11:21:43 +0200 Subject: [PATCH] test(app): account for terminal write completion before barriers --- .../runtime/terminal-emulator-runtime.test.ts | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/app/src/terminal/runtime/terminal-emulator-runtime.test.ts b/packages/app/src/terminal/runtime/terminal-emulator-runtime.test.ts index d739dcac34..c64cc57047 100644 --- a/packages/app/src/terminal/runtime/terminal-emulator-runtime.test.ts +++ b/packages/app/src/terminal/runtime/terminal-emulator-runtime.test.ts @@ -302,9 +302,10 @@ describe("terminal-emulator-runtime", () => { { kittyKeyboardFlags: 7, win32InputMode: false, bracketedPaste: false }, ]); - // The plain write carries no onCommitted, so it registers no callback; writeCallbacks[0] - // is the barrier gate sentinel. - writeCallbacks[0]?.(); + // Commit the plain write, then the sentinel that gates the snapshot. + writeCallbacks[0](); + expect(inputModeChanges).toHaveLength(1); + writeCallbacks[1](); expect(inputModeChanges).toEqual([ { kittyKeyboardFlags: 7, win32InputMode: false, bracketedPaste: false }, @@ -413,14 +414,15 @@ describe("terminal-emulator-runtime", () => { runtime.write({ data: terminalOutput("output") }); runtime.restoreOutput({ data: terminalOutput("snapshot") }); - // The plain write carries no onCommitted so it registers no callback; writeCallbacks[0] - // is the sentinel gate. suppressInput only flips once the gate resolves the barrier. + // The plain write commits first. Only the following sentinel opens the barrier. expect(readSuppressInput()).toBe(false); - writeCallbacks[0]?.(); + writeCallbacks[0](); + expect(readSuppressInput()).toBe(false); + writeCallbacks[1](); expect(readSuppressInput()).toBe(true); - // writeCallbacks[1] is the barrier's own snapshot write; committing it restores input. - writeCallbacks[1]?.(); + // Committing the barrier's snapshot write restores input. + writeCallbacks[2](); expect(readSuppressInput()).toBe(false); });