You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Cross-platform CI fails on Windows: app::tests::test_testable_backend_enable_mouse_capture assertion fails at app_tests.rs:1200.
3203 tests pass, 1 fails. This has failed on every Windows run (30+ consecutive).
Five-Whys Root Cause
Why does the test fail?output Vec is empty after enable_mouse_capture()
Why no bytes written? crossterm's EnableMouseCapture on Windows uses Windows Console API, not ANSI escape sequences
Why Console API? crossterm dispatches to SetConsoleMode on Windows targets — no bytes written to Write impl
Why does test assume ANSI output? Written with Unix behavior in mind where execute! writes \x1b[?1000h
Why not caught earlier? Main CI runs on Linux (sovereign-ci container); cross-platform workflow added later
Root Cause
crossterm's EnableMouseCapture uses Windows Console API (Win32 SetConsoleMode) instead of writing ANSI escape sequences to the writer on Windows. The test asserts bytes were written, which is only true on Unix.
Fix
Guard the assertion with #[cfg(not(target_os = "windows"))] or remove it entirely — the is_mouse_captured() assertion already verifies correctness.
Bug
Cross-platform CI fails on Windows:
app::tests::test_testable_backend_enable_mouse_captureassertion fails atapp_tests.rs:1200.3203 tests pass, 1 fails. This has failed on every Windows run (30+ consecutive).
Five-Whys Root Cause
outputVec is empty afterenable_mouse_capture()EnableMouseCaptureon Windows uses Windows Console API, not ANSI escape sequencesSetConsoleModeon Windows targets — no bytes written toWriteimplexecute!writes\x1b[?1000hRoot Cause
crossterm's
EnableMouseCaptureuses Windows Console API (Win32SetConsoleMode) instead of writing ANSI escape sequences to the writer on Windows. The test asserts bytes were written, which is only true on Unix.Fix
Guard the assertion with
#[cfg(not(target_os = "windows"))]or remove it entirely — theis_mouse_captured()assertion already verifies correctness.