[INFO] cloning repository https://github.com/M4ckie/TurboMux
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/M4ckie/TurboMux" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FM4ckie%2FTurboMux", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FM4ckie%2FTurboMux'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7d4f5bb8ff6543fba6fa83b8eec2e30137c18b2b
[INFO] testing M4ckie/TurboMux against master#cced03bfd61a304243a34504618ecec86c17063f for pr-154065-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FM4ckie%2FTurboMux" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/M4ckie/TurboMux
[INFO] finished tweaking git repo https://github.com/M4ckie/TurboMux
[INFO] tweaked toml for git repo https://github.com/M4ckie/TurboMux written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/M4ckie/TurboMux on toolchain cced03bfd61a304243a34504618ecec86c17063f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/M4ckie/TurboMux already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded vte_generate_state_changes v0.1.2
[INFO] [stderr]   Downloaded vte v0.13.1
[INFO] [stderr]   Downloaded portable-pty v0.9.0
[INFO] [stderr]   Downloaded serial2 v0.2.34
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 23f9ab3aa4036e19399f78024859ed13b801bb570cfabd60626f7a0d6e1cf4e0
[INFO] running `Command { std: "docker" "start" "-a" "23f9ab3aa4036e19399f78024859ed13b801bb570cfabd60626f7a0d6e1cf4e0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "23f9ab3aa4036e19399f78024859ed13b801bb570cfabd60626f7a0d6e1cf4e0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "23f9ab3aa4036e19399f78024859ed13b801bb570cfabd60626f7a0d6e1cf4e0", kill_on_drop: false }`
[INFO] [stdout] 23f9ab3aa4036e19399f78024859ed13b801bb570cfabd60626f7a0d6e1cf4e0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 42a0de47c660074d6fa8d98749e4d812a3ed5c06324367421c29ae8466abef6b
[INFO] running `Command { std: "docker" "start" "-a" "42a0de47c660074d6fa8d98749e4d812a3ed5c06324367421c29ae8466abef6b", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.183
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling time-core v0.1.8
[INFO] [stderr]    Compiling num-conv v0.2.1
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]    Compiling compact_str v0.9.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling num_threads v0.1.7
[INFO] [stderr]    Compiling deranged v0.5.8
[INFO] [stderr]    Compiling nix v0.28.0
[INFO] [stderr]    Compiling line-clipping v0.3.5
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling lru v0.16.3
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling tokio-macros v2.6.1
[INFO] [stderr]    Compiling vte_generate_state_changes v0.1.2
[INFO] [stderr]    Compiling jiff v0.2.23
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling arrayvec v0.7.6
[INFO] [stderr]    Compiling vte v0.13.1
[INFO] [stderr]    Compiling kasuari v0.4.12
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling strum v0.27.2
[INFO] [stderr]    Compiling unicode-truncate v2.0.1
[INFO] [stderr]    Compiling ratatui-core v0.1.0
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling filedescriptor v0.8.3
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling serial2 v0.2.34
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling crossterm v0.28.1
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling ratatui-widgets v0.3.0
[INFO] [stderr]    Compiling portable-pty v0.9.0
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling ratatui-macros v0.7.0
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling env_filter v1.0.1
[INFO] [stderr]    Compiling env_logger v0.11.10
[INFO] [stderr]    Compiling turbomux v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 47.23s
[INFO] running `Command { std: "docker" "inspect" "42a0de47c660074d6fa8d98749e4d812a3ed5c06324367421c29ae8466abef6b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "42a0de47c660074d6fa8d98749e4d812a3ed5c06324367421c29ae8466abef6b", kill_on_drop: false }`
[INFO] [stdout] 42a0de47c660074d6fa8d98749e4d812a3ed5c06324367421c29ae8466abef6b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 3b9335e8feddc1ef41288f70432eeb986e8a949f2f6feb089d751f01f87a73d9
[INFO] running `Command { std: "docker" "start" "-a" "3b9335e8feddc1ef41288f70432eeb986e8a949f2f6feb089d751f01f87a73d9", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling turbomux v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::io::Write`
[INFO] [stdout]    --> src/claude/hooks.rs:145:9
[INFO] [stdout]     |
[INFO] [stdout] 145 |     use std::io::Write;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/file_finder.rs:486:13
[INFO] [stdout]     |
[INFO] [stdout] 486 |         let mut ff = FileFinder::new();
[INFO] [stdout]     |             ----^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EditorManager`
[INFO] [stdout]   --> tests/integration_phase10.rs:14:24
[INFO] [stdout]    |
[INFO] [stdout] 14 | use turbomux::editor::{EditorManager, EditorTab};
[INFO] [stdout]    |                        ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `command::Command`
[INFO] [stdout]   --> tests/integration_phase10.rs:16:29
[INFO] [stdout]    |
[INFO] [stdout] 16 | use turbomux::keybindings::{command::Command, InputMode};
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> tests/integration_phase8.rs:105:5
[INFO] [stdout]     |
[INFO] [stdout] 105 |     /// W moves the file-explorer highlight one row towards the top.
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 106 |     let root = make_temp_root("w_up");
[INFO] [stdout]     |     ---------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> tests/integration_phase8.rs:138:5
[INFO] [stdout]     |
[INFO] [stdout] 138 |     /// S moves the file-explorer highlight one row towards the bottom.
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 139 |     let root = make_temp_root("s_down");
[INFO] [stdout]     |     ------------------------------------ rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> tests/integration_phase8.rs:166:5
[INFO] [stdout]     |
[INFO] [stdout] 166 |     /// S at the last entry must not wrap around or panic.
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 167 |     let root = make_temp_root("s_clamp");
[INFO] [stdout]     |     ------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> tests/integration_phase8.rs:181:5
[INFO] [stdout]     |
[INFO] [stdout] 181 |     /// W at the first entry must not underflow.
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 182 |     let root = make_temp_root("w_clamp");
[INFO] [stdout]     |     ------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> tests/integration_phase8.rs:194:5
[INFO] [stdout]     |
[INFO] [stdout] 194 |     /// D on a collapsed directory expands it — children become visible in the buffer.
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 195 |     let root = make_temp_root("d_expand");
[INFO] [stdout]     |     -------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> tests/integration_phase8.rs:223:5
[INFO] [stdout]     |
[INFO] [stdout] 223 |     /// D on an already-expanded directory is a no-op — children remain visible.
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 224 |     let root = make_temp_root("d_noop");
[INFO] [stdout]     |     ------------------------------------ rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> tests/integration_phase8.rs:260:5
[INFO] [stdout]     |
[INFO] [stdout] 260 | /     /// D on a file attempts to open it. Even if PTY spawn fails the focus and
[INFO] [stdout] 261 | |     /// mode transitions are attempted.  We cannot assert the file is open (no
[INFO] [stdout] 262 | |     /// real editor available in CI) but we verify the state machine transitions.
[INFO] [stdout]     | |_________________________________________________________________________________^
[INFO] [stdout] 263 |       let root = make_temp_root("d_file");
[INFO] [stdout]     |       ------------------------------------ rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> tests/integration_phase8.rs:293:5
[INFO] [stdout]     |
[INFO] [stdout] 293 |     /// A on an expanded directory collapses it — children are removed from the buffer.
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 294 |     let root = make_temp_root("a_collapse");
[INFO] [stdout]     |     ---------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> tests/integration_phase8.rs:325:5
[INFO] [stdout]     |
[INFO] [stdout] 325 |     /// A on a file entry navigates the selection to the nearest ancestor directory.
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 326 |     let root = make_temp_root("a_parent");
[INFO] [stdout]     |     -------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> tests/integration_phase8.rs:360:5
[INFO] [stdout]     |
[INFO] [stdout] 360 |     /// Space on a directory entry toggles its expanded state.
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 361 |     let root = make_temp_root("space_toggle");
[INFO] [stdout]     |     ------------------------------------------ rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> tests/integration_phase8.rs:398:5
[INFO] [stdout]     |
[INFO] [stdout] 398 |     /// Space on a file entry must not change the entry count or crash.
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 399 |     let root = make_temp_root("space_file_noop");
[INFO] [stdout]     |     --------------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> tests/integration_phase8.rs:434:5
[INFO] [stdout]     |
[INFO] [stdout] 434 |     /// F1 must cause a flash message containing "Help" to appear in the frame.
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 435 |     let mut app = default_app();
[INFO] [stdout]     |     ---------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> tests/integration_phase8.rs:455:5
[INFO] [stdout]     |
[INFO] [stdout] 455 |     /// F7 must cause a flash message mentioning "terminal" to appear in the frame.
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 456 |     let mut app = default_app();
[INFO] [stdout]     |     ---------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> tests/integration_phase8.rs:477:5
[INFO] [stdout]     |
[INFO] [stdout] 477 |     /// F11 is intentionally absent from the stub list — it must not set a flash message.
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 478 |     let mut app = default_app();
[INFO] [stdout]     |     ---------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> tests/integration_phase8.rs:495:5
[INFO] [stdout]     |
[INFO] [stdout] 495 | /     /// A Tick event clears a flash message whose Instant is older than 2 seconds.
[INFO] [stdout] 496 | |     ///
[INFO] [stdout] 497 | |     /// We manufacture an already-expired Instant by back-dating it via a helper
[INFO] [stdout] 498 | |     /// that replaces the flash_message tuple with one holding a pre-aged timestamp.
[INFO] [stdout]     | |____________________________________________________________________________________^
[INFO] [stdout] 499 |       let mut app = default_app();
[INFO] [stdout]     |       ---------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> tests/integration_phase8.rs:517:5
[INFO] [stdout]     |
[INFO] [stdout] 517 |     /// A Tick event must NOT clear a flash message that was just set.
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 518 |     let mut app = default_app();
[INFO] [stdout]     |     ---------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> tests/integration_phase8.rs:533:5
[INFO] [stdout]     |
[INFO] [stdout] 533 | /     /// When the command palette is open the flash message must not appear in the frame,
[INFO] [stdout] 534 | |     /// even if app.flash_message is Some.
[INFO] [stdout]     | |__________________________________________^
[INFO] [stdout] 535 |       let mut app = default_app();
[INFO] [stdout]     |       ---------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> tests/integration_phase8.rs:576:5
[INFO] [stdout]     |
[INFO] [stdout] 576 |     /// The flash popup must appear in the bottom-right quadrant of the screen.
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 577 |     let mut app = default_app();
[INFO] [stdout]     |     ---------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ClipboardBackend`
[INFO] [stdout]  --> tests/integration_phase16.rs:2:38
[INFO] [stdout]   |
[INFO] [stdout] 2 | use turbomux::clipboard::{Clipboard, ClipboardBackend};
[INFO] [stdout]   |                                      ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `turbomux::event::AppEvent`
[INFO] [stdout]   --> tests/integration_phase12.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use turbomux::event::AppEvent;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration_phase12.rs:396:9
[INFO] [stdout]     |
[INFO] [stdout] 396 |     let mut buf = buf_with_scrollback(80, 5, 10);
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Write`
[INFO] [stdout]    --> src/claude/hooks.rs:145:9
[INFO] [stdout]     |
[INFO] [stdout] 145 |     use std::io::Write;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/file_finder.rs:486:13
[INFO] [stdout]     |
[INFO] [stdout] 486 |         let mut ff = FileFinder::new();
[INFO] [stdout]     |             ----^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 15.31s
[INFO] running `Command { std: "docker" "inspect" "3b9335e8feddc1ef41288f70432eeb986e8a949f2f6feb089d751f01f87a73d9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3b9335e8feddc1ef41288f70432eeb986e8a949f2f6feb089d751f01f87a73d9", kill_on_drop: false }`
[INFO] [stdout] 3b9335e8feddc1ef41288f70432eeb986e8a949f2f6feb089d751f01f87a73d9
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 16b5afcf2ad013fc656275353ec9425d69229a264be5bb47654f9d5a1af27ec8
[INFO] running `Command { std: "docker" "start" "-a" "16b5afcf2ad013fc656275353ec9425d69229a264be5bb47654f9d5a1af27ec8", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `turbomux::event::AppEvent`
[INFO] [stderr]   --> tests/integration_phase12.rs:13:5
[INFO] [stderr]    |
[INFO] [stderr] 13 | use turbomux::event::AppEvent;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> tests/integration_phase12.rs:396:9
[INFO] [stderr]     |
[INFO] [stderr] 396 |     let mut buf = buf_with_scrollback(80, 5, 10);
[INFO] [stderr]     |         ----^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ClipboardBackend`
[INFO] [stderr]  --> tests/integration_phase16.rs:2:38
[INFO] [stderr]   |
[INFO] [stderr] 2 | use turbomux::clipboard::{Clipboard, ClipboardBackend};
[INFO] [stderr]   |                                      ^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::io::Write`
[INFO] [stderr]    --> src/claude/hooks.rs:145:9
[INFO] [stderr]     |
[INFO] [stderr] 145 |     use std::io::Write;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/file_finder.rs:486:13
[INFO] [stderr]     |
[INFO] [stderr] 486 |         let mut ff = FileFinder::new();
[INFO] [stderr]     |             ----^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `EditorManager`
[INFO] [stderr]   --> tests/integration_phase10.rs:14:24
[INFO] [stderr]    |
[INFO] [stderr] 14 | use turbomux::editor::{EditorManager, EditorTab};
[INFO] [stderr]    |                        ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `command::Command`
[INFO] [stderr]   --> tests/integration_phase10.rs:16:29
[INFO] [stderr]    |
[INFO] [stderr] 16 | use turbomux::keybindings::{command::Command, InputMode};
[INFO] [stderr]    |                             ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]    --> tests/integration_phase8.rs:105:5
[INFO] [stderr]     |
[INFO] [stderr] 105 |     /// W moves the file-explorer highlight one row towards the top.
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 106 |     let root = make_temp_root("w_up");
[INFO] [stderr]     |     ---------------------------------- rustdoc does not generate documentation for statements
[INFO] [stderr]     |
[INFO] [stderr]     = help: use `//` for a plain comment
[INFO] [stderr]     = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]    --> tests/integration_phase8.rs:138:5
[INFO] [stderr]     |
[INFO] [stderr] 138 |     /// S moves the file-explorer highlight one row towards the bottom.
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 139 |     let root = make_temp_root("s_down");
[INFO] [stderr]     |     ------------------------------------ rustdoc does not generate documentation for statements
[INFO] [stderr]     |
[INFO] [stderr]     = help: use `//` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]    --> tests/integration_phase8.rs:166:5
[INFO] [stderr]     |
[INFO] [stderr] 166 |     /// S at the last entry must not wrap around or panic.
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 167 |     let root = make_temp_root("s_clamp");
[INFO] [stderr]     |     ------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stderr]     |
[INFO] [stderr]     = help: use `//` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]    --> tests/integration_phase8.rs:181:5
[INFO] [stderr]     |
[INFO] [stderr] 181 |     /// W at the first entry must not underflow.
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 182 |     let root = make_temp_root("w_clamp");
[INFO] [stderr]     |     ------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stderr]     |
[INFO] [stderr]     = help: use `//` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]    --> tests/integration_phase8.rs:194:5
[INFO] [stderr]     |
[INFO] [stderr] 194 |     /// D on a collapsed directory expands it — children become visible in the buffer.
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 195 |     let root = make_temp_root("d_expand");
[INFO] [stderr]     |     -------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stderr]     |
[INFO] [stderr]     = help: use `//` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]    --> tests/integration_phase8.rs:223:5
[INFO] [stderr]     |
[INFO] [stderr] 223 |     /// D on an already-expanded directory is a no-op — children remain visible.
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 224 |     let root = make_temp_root("d_noop");
[INFO] [stderr]     |     ------------------------------------ rustdoc does not generate documentation for statements
[INFO] [stderr]     |
[INFO] [stderr]     = help: use `//` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]    --> tests/integration_phase8.rs:260:5
[INFO] [stderr]     |
[INFO] [stderr] 260 | /     /// D on a file attempts to open it. Even if PTY spawn fails the focus and
[INFO] [stderr] 261 | |     /// mode transitions are attempted.  We cannot assert the file is open (no
[INFO] [stderr] 262 | |     /// real editor available in CI) but we verify the state machine transitions.
[INFO] [stderr]     | |_________________________________________________________________________________^
[INFO] [stderr] 263 |       let root = make_temp_root("d_file");
[INFO] [stderr]     |       ------------------------------------ rustdoc does not generate documentation for statements
[INFO] [stderr]     |
[INFO] [stderr]     = help: use `//` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]    --> tests/integration_phase8.rs:293:5
[INFO] [stderr]     |
[INFO] [stderr] 293 |     /// A on an expanded directory collapses it — children are removed from the buffer.
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 294 |     let root = make_temp_root("a_collapse");
[INFO] [stderr]     |     ---------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stderr]     |
[INFO] [stderr]     = help: use `//` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]    --> tests/integration_phase8.rs:325:5
[INFO] [stderr]     |
[INFO] [stderr] 325 |     /// A on a file entry navigates the selection to the nearest ancestor directory.
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 326 |     let root = make_temp_root("a_parent");
[INFO] [stderr]     |     -------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stderr]     |
[INFO] [stderr]     = help: use `//` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]    --> tests/integration_phase8.rs:360:5
[INFO] [stderr]     |
[INFO] [stderr] 360 |     /// Space on a directory entry toggles its expanded state.
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 361 |     let root = make_temp_root("space_toggle");
[INFO] [stderr]     |     ------------------------------------------ rustdoc does not generate documentation for statements
[INFO] [stderr]     |
[INFO] [stderr]     = help: use `//` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]    --> tests/integration_phase8.rs:398:5
[INFO] [stderr]     |
[INFO] [stderr] 398 |     /// Space on a file entry must not change the entry count or crash.
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 399 |     let root = make_temp_root("space_file_noop");
[INFO] [stderr]     |     --------------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stderr]     |
[INFO] [stderr]     = help: use `//` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]    --> tests/integration_phase8.rs:434:5
[INFO] [stderr]     |
[INFO] [stderr] 434 |     /// F1 must cause a flash message containing "Help" to appear in the frame.
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 435 |     let mut app = default_app();
[INFO] [stderr]     |     ---------------------------- rustdoc does not generate documentation for statements
[INFO] [stderr]     |
[INFO] [stderr]     = help: use `//` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]    --> tests/integration_phase8.rs:455:5
[INFO] [stderr]     |
[INFO] [stderr] 455 |     /// F7 must cause a flash message mentioning "terminal" to appear in the frame.
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 456 |     let mut app = default_app();
[INFO] [stderr]     |     ---------------------------- rustdoc does not generate documentation for statements
[INFO] [stderr]     |
[INFO] [stderr]     = help: use `//` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]    --> tests/integration_phase8.rs:477:5
[INFO] [stderr]     |
[INFO] [stderr] 477 |     /// F11 is intentionally absent from the stub list — it must not set a flash message.
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 478 |     let mut app = default_app();
[INFO] [stderr]     |     ---------------------------- rustdoc does not generate documentation for statements
[INFO] [stderr]     |
[INFO] [stderr]     = help: use `//` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]    --> tests/integration_phase8.rs:495:5
[INFO] [stderr]     |
[INFO] [stderr] 495 | /     /// A Tick event clears a flash message whose Instant is older than 2 seconds.
[INFO] [stderr] 496 | |     ///
[INFO] [stderr] 497 | |     /// We manufacture an already-expired Instant by back-dating it via a helper
[INFO] [stderr] 498 | |     /// that replaces the flash_message tuple with one holding a pre-aged timestamp.
[INFO] [stderr]     | |____________________________________________________________________________________^
[INFO] [stderr] 499 |       let mut app = default_app();
[INFO] [stderr]     |       ---------------------------- rustdoc does not generate documentation for statements
[INFO] [stderr]     |
[INFO] [stderr]     = help: use `//` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]    --> tests/integration_phase8.rs:517:5
[INFO] [stderr]     |
[INFO] [stderr] 517 |     /// A Tick event must NOT clear a flash message that was just set.
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 518 |     let mut app = default_app();
[INFO] [stderr]     |     ---------------------------- rustdoc does not generate documentation for statements
[INFO] [stderr]     |
[INFO] [stderr]     = help: use `//` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]    --> tests/integration_phase8.rs:533:5
[INFO] [stderr]     |
[INFO] [stderr] 533 | /     /// When the command palette is open the flash message must not appear in the frame,
[INFO] [stderr] 534 | |     /// even if app.flash_message is Some.
[INFO] [stderr]     | |__________________________________________^
[INFO] [stderr] 535 |       let mut app = default_app();
[INFO] [stderr]     |       ---------------------------- rustdoc does not generate documentation for statements
[INFO] [stderr]     |
[INFO] [stderr]     = help: use `//` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]    --> tests/integration_phase8.rs:576:5
[INFO] [stderr]     |
[INFO] [stderr] 576 |     /// The flash popup must appear in the bottom-right quadrant of the screen.
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 577 |     let mut app = default_app();
[INFO] [stderr]     |     ---------------------------- rustdoc does not generate documentation for statements
[INFO] [stderr]     |
[INFO] [stderr]     = help: use `//` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: `turbomux` (test "integration_phase12") generated 2 warnings (run `cargo fix --test "integration_phase12" -p turbomux` to apply 2 suggestions)
[INFO] [stderr] warning: `turbomux` (test "integration_phase16") generated 1 warning (run `cargo fix --test "integration_phase16" -p turbomux` to apply 1 suggestion)
[INFO] [stderr] warning: `turbomux` (bin "turbomux" test) generated 2 warnings (run `cargo fix --bin "turbomux" -p turbomux --tests` to apply 2 suggestions)
[INFO] [stderr] warning: `turbomux` (test "integration_phase10") generated 2 warnings (run `cargo fix --test "integration_phase10" -p turbomux` to apply 2 suggestions)
[INFO] [stderr] warning: `turbomux` (test "integration_phase8") generated 18 warnings
[INFO] [stderr] warning: `turbomux` (lib test) generated 2 warnings (2 duplicates)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.30s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/turbomux-503973be5232a198)
[INFO] [stdout] 
[INFO] [stdout] running 298 tests
[INFO] [stdout] test app::tests::rect_contains_boundary_top_left_is_inside ... ok
[INFO] [stdout] test app::tests::rect_contains_boundary_bottom_right_is_outside ... ok
[INFO] [stdout] test app::tests::rect_contains_returns_false_for_point_outside ... ok
[INFO] [stdout] test app::tests::rect_contains_returns_false_for_zero_size_rect ... ok
[INFO] [stdout] test app::tests::rect_contains_returns_true_for_point_inside ... ok
[INFO] [stdout] test claude::hooks::tests::install_creates_hooks_in_empty_settings ... ok
[INFO] [stdout] test claude::hooks::tests::install_deduplicates_on_repeat ... ok
[INFO] [stdout] test claude::hooks::tests::install_preserves_other_hooks ... ok
[INFO] [stdout] test claude::hooks::tests::remove_cleans_up_turbomux_hooks ... ok
[INFO] [stdout] test claude::hooks::tests::remove_on_missing_file_is_ok ... ok
[INFO] [stdout] test claude::hooks::tests::remove_preserves_other_hooks ... ok
[INFO] [stdout] test claude::hooks::tests::install_preserves_existing_settings ... ok
[INFO] [stdout] test claude::socket::tests::client_can_send_json_and_event_arrives ... ok
[INFO] [stdout] test app::tests::terminal_panel_visible_false_config_hides_panel ... ok
[INFO] [stdout] test app::tests::apply_focus_sidebar_sets_normal_mode ... ok
[INFO] [stdout] test app::tests::editor_config_override_takes_precedence_over_env_var ... ok
[INFO] [stdout] test app::tests::drag_state_set_on_border_click ... ok
[INFO] [stdout] test app::tests::mouse_click_sidebar_sets_focus ... ok
[INFO] [stdout] test claude::tests::claude_activity_entry_tracks_timestamp ... ok
[INFO] [stdout] test claude::socket::tests::socket_file_is_created ... ok
[INFO] [stdout] test claude::tests::claude_activity_variants_construct_and_compare ... ok
[INFO] [stdout] test claude::tests::context_percent_computes_correctly ... ok
[INFO] [stdout] test claude::tests::context_percent_zero_when_context_length_zero ... ok
[INFO] [stdout] test claude::tests::empty_file_returns_default_metrics ... ok
[INFO] [stdout] test app::tests::sidebar_visible_false_config_hides_sidebar ... ok
[INFO] [stdout] test app::tests::apply_focus_terminal_without_pane_sets_normal_mode ... ok
[INFO] [stdout] test claude::tests::crew_member_not_set_for_unknown_subagent_type ... ok
[INFO] [stdout] test claude::tests::malformed_line_is_skipped_without_error ... ok
[INFO] [stdout] test claude::tests::session_start_comes_from_first_non_sidechain_entry ... ok
[INFO] [stdout] test claude::tests::multiple_entries_accumulate_tokens ... ok
[INFO] [stdout] test claude::tests::model_reflects_most_recent_entry ... ok
[INFO] [stdout] test claude::tests::crew_member_extracted_from_agent_tool_use ... ok
[INFO] [stdout] test claude::tests::single_valid_entry_extracts_tokens ... ok
[INFO] [stdout] test claude::tests::total_tokens_sums_input_and_output ... ok
[INFO] [stdout] test clipboard::tests::base64_empty ... ok
[INFO] [stdout] test clipboard::tests::base64_hello ... ok
[INFO] [stdout] test clipboard::tests::base64_hello_world ... ok
[INFO] [stdout] test clipboard::tests::base64_single_byte ... ok
[INFO] [stdout] test app::tests::mouse_click_terminal_sets_focus ... ok
[INFO] [stdout] test clipboard::tests::base64_three_bytes_exact ... ok
[INFO] [stdout] test clipboard::tests::base64_two_bytes ... ok
[INFO] [stdout] test clipboard::tests::copy_overwrites_previous_internal ... ok
[INFO] [stdout] test clipboard::tests::copy_paste_roundtrip_internal ... ok
[INFO] [stdout] test clipboard::tests::copy_with_osc52_non_internal_backend_no_panic ... ok
[INFO] [stdout] ]52;c;dGVzdCB0ZXh0test clipboard::tests::copy_with_osc52_updates_internal ... ok
[INFO] [stdout] test config::tests::build_command_returns_correct_command_string ... ok
[INFO] [stdout] test config::tests::build_command_appends_file_path_to_args ... ok
[INFO] [stdout] test claude::tests::sidechain_false_is_not_excluded ... ok
[INFO] [stdout] test app::tests::sidebar_width_config_sets_layout_default ... ok
[INFO] [stdout] test config::tests::editor_name_extracted_from_full_path ... ok
[INFO] [stdout] test config::tests::embedded_args_in_editor_are_split_correctly ... ok
[INFO] [stdout] test config_file::tests::default_has_all_fields_none ... ok
[INFO] [stdout] test config::tests::build_command_with_base_args_keeps_order ... ok
[INFO] [stdout] test clipboard::tests::copy_with_osc52_oversized_still_copies_internal ... ok
[INFO] [stdout] test config::tests::detect_uses_editor_env_var ... ok
[INFO] [stdout] test app::tests::with_active_terminal_mut_returns_none_when_no_terminal ... ok
[INFO] [stdout] test app::tests::apply_focus_editor_without_pane_sets_normal_mode ... ok
[INFO] [stdout] test config_file::tests::valid_toml_populates_fields ... ok
[INFO] [stdout] test editor::tests::add_tab_derives_title_from_filename ... ok
[INFO] [stdout] test editor::tests::active_pane_id_returns_pane_of_active_tab ... ok
[INFO] [stdout] test editor::tests::add_tab_creates_tab_and_sets_active ... ok
[INFO] [stdout] test editor::tests::add_tab_second_tab_becomes_active ... ok
[INFO] [stdout] test editor::tests::add_tab_sets_split_tree_to_leaf_of_pane ... ok
[INFO] [stdout] test editor::tests::close_tab_removes_and_returns_pane_id ... ok
[INFO] [stdout] test editor::tests::close_tab_sets_active_none_when_all_tabs_gone ... ok
[INFO] [stdout] test config::tests::detect_prefers_visual_over_editor ... ok
[INFO] [stdout] test editor::tests::close_tab_adjusts_active_to_last_remaining ... ok
[INFO] [stdout] test config::tests::detect_falls_back_to_vim_when_env_unset ... ok
[INFO] [stdout] test config_file::tests::load_with_nonexistent_file_returns_default ... ok
[INFO] [stdout] test editor::tests::find_tab_by_path_returns_correct_index ... ok
[INFO] [stdout] test editor::tests::find_tab_by_path_returns_none_for_unknown_path ... ok
[INFO] [stdout] test editor::tests::owns_pane_returns_false_for_unknown_pane ... ok
[INFO] [stdout] test editor::tests::close_tab_when_empty_returns_none ... ok
[INFO] [stdout] test claude::socket::tests::malformed_json_does_not_crash ... ok
[INFO] [stdout] test config_file::tests::invalid_toml_returns_default_without_panicking ... ok
[INFO] [stdout] test clipboard::tests::clipboard_new_smoke ... ok
[INFO] [stdout] test app::tests::drag_state_cleared_on_mouse_up ... ok
[INFO] [stdout] test event::tests::app_event_mouse_variant_constructs ... ok
[INFO] [stdout] test event::tests::app_event_tick_variant_constructs ... ok
[INFO] [stdout] test editor::tests::owns_pane_returns_true_for_registered_pane ... ok
[INFO] [stdout] test file_explorer::tests::ensure_visible_scrolls_down_when_selected_is_below_viewport ... ok
[INFO] [stdout] test editor::tests::split_tree_hsplit_ratio_controls_proportions ... ok
[INFO] [stdout] test editor::tests::split_tree_leaf_compute_rects_returns_single_rect ... ok
[INFO] [stdout] test event::tests::app_event_key_variant_constructs ... ok
[INFO] [stdout] test event::tests::app_event_pty_exit_variant_constructs ... ok
[INFO] [stdout] test event::tests::app_event_pty_output_variant_constructs ... ok
[INFO] [stdout] test event::tests::app_event_resize_variant_constructs ... ok
[INFO] [stdout] test file_explorer::tests::ensure_visible_does_nothing_when_already_in_view ... ok
[INFO] [stdout] test editor::tests::split_tree_hsplit_compute_rects_returns_two_rects ... ok
[INFO] [stdout] test file_explorer::tests::ensure_visible_scrolls_up_when_selected_is_above_viewport ... ok
[INFO] [stdout] test app::tests::default_config_does_not_change_layout_defaults ... ok
[INFO] [stdout] test file_explorer::tests::read_dir_sorted_on_missing_path_returns_empty ... ok
[INFO] [stdout] test file_explorer::tests::scroll_down_increments_offset ... ok
[INFO] [stdout] test file_explorer::tests::ensure_visible_zero_height_is_a_noop ... ok
[INFO] [stdout] test file_explorer::tests::scroll_up_decrements_offset ... ok
[INFO] [stdout] test claude::tests::sidechain_entries_are_excluded ... ok
[INFO] [stdout] test app::tests::mouse_click_editor_sets_focus ... ok
[INFO] [stdout] test file_explorer::tests::read_dir_sorted_dirs_come_before_files ... ok
[INFO] [stdout] test file_explorer::tests::scroll_up_at_zero_stays_zero ... ok
[INFO] [stdout] test file_finder::tests::confirm_on_empty_filtered_returns_none ... ok
[INFO] [stdout] test file_explorer::tests::scroll_down_empty_entries_does_not_panic ... ok
[INFO] [stdout] test file_explorer::tests::move_up_clamps_at_zero ... ok
[INFO] [stdout] test file_finder::tests::close_sets_not_visible ... ok
[INFO] [stdout] test file_explorer::tests::move_down_clamps_at_last_entry ... ok
[INFO] [stdout] test file_explorer::tests::scroll_down_at_max_stays_clamped ... ok
[INFO] [stdout] test file_finder::tests::confirm_returns_selected_path ... ok
[INFO] [stdout] test file_explorer::tests::toggle_expand_on_dir_inserts_children ... ok
[INFO] [stdout] test file_explorer::tests::toggle_expand_on_expanded_dir_removes_children ... ok
[INFO] [stdout] test file_explorer::tests::move_down_advances_selection ... ok
[INFO] [stdout] test file_explorer::tests::read_dir_sorted_alphabetical_within_each_group ... ok
[INFO] [stdout] test file_explorer::tests::toggle_expand_on_file_is_a_noop ... ok
[INFO] [stdout] test file_finder::tests::move_down_advances_selection ... ok
[INFO] [stdout] test file_explorer::tests::select_returns_none_for_directory ... ok
[INFO] [stdout] test file_explorer::tests::select_returns_path_for_file ... ok
[INFO] [stdout] test file_finder::tests::move_down_clamps_at_last ... ok
[INFO] [stdout] test file_finder::tests::new_starts_with_empty_input ... ok
[INFO] [stdout] test file_finder::tests::git_directory_excluded ... ok
[INFO] [stdout] test file_finder::tests::empty_query_shows_all_files ... ok
[INFO] [stdout] test file_finder::tests::node_modules_directory_excluded ... ok
[INFO] [stdout] test file_finder::tests::open_resets_selection ... ok
[INFO] [stdout] test file_finder::tests::open_sets_visible ... ok
[INFO] [stdout] test file_finder::tests::move_up_clamps_at_zero ... ok
[INFO] [stdout] test file_finder::tests::new_starts_not_visible ... ok
[INFO] [stdout] test file_finder::tests::move_up_decrements_selection ... ok
[INFO] [stdout] test file_finder::tests::new_starts_with_empty_all_files ... ok
[INFO] [stdout] test file_finder::tests::pop_char_broadens_results ... ok
[INFO] [stdout] test file_finder::tests::open_populates_all_files ... ok
[INFO] [stdout] test git::tests::git_status_default_produces_empty_values ... ok
[INFO] [stdout] test keybindings::command::tests::all_names_are_unique ... ok
[INFO] [stdout] test keybindings::palette::tests::close_sets_not_visible ... ok
[INFO] [stdout] test keybindings::palette::tests::confirm_does_not_close_palette ... ok
[INFO] [stdout] test keybindings::palette::tests::confirm_returns_selected_command ... ok
[INFO] [stdout] test keybindings::command::tests::all_descriptions_are_unique ... ok
[INFO] [stdout] test keybindings::palette::tests::empty_input_returns_all_non_excluded_commands ... ok
[INFO] [stdout] test keybindings::command::tests::all_returns_27_variants ... ok
[INFO] [stdout] test git::tests::git_status_can_be_cloned ... ok
[INFO] [stdout] test file_finder::tests::open_resets_input ... ok
[INFO] [stdout] test keybindings::palette::tests::confirm_on_empty_list_returns_none ... ok
[INFO] [stdout] test keybindings::command::tests::every_variant_has_non_empty_name ... ok
[INFO] [stdout] test git::tests::git_status_debug_format ... ok
[INFO] [stdout] test keybindings::palette::tests::is_palette_command_returns_false_for_split_horizontal ... ok
[INFO] [stdout] test keybindings::palette::tests::filtering_terminal_returns_only_terminal_commands ... ok
[INFO] [stdout] test keybindings::palette::tests::is_palette_command_returns_false_for_close_pane_focused ... ok
[INFO] [stdout] test keybindings::palette::tests::excluded_commands_never_appear_after_filtering ... ok
[INFO] [stdout] test keybindings::palette::tests::is_palette_command_returns_false_for_split_vertical ... ok
[INFO] [stdout] test keybindings::palette::tests::is_palette_command_returns_false_for_zoom_pane ... ok
[INFO] [stdout] test keybindings::command::tests::every_variant_has_non_empty_description ... ok
[INFO] [stdout] test keybindings::palette::tests::new_has_all_commands_unfiltered ... ok
[INFO] [stdout] test keybindings::palette::tests::new_is_not_visible ... ok
[INFO] [stdout] test keybindings::palette::tests::open_clears_input ... ok
[INFO] [stdout] test keybindings::palette::tests::open_excludes_four_commands ... ok
[INFO] [stdout] test keybindings::palette::tests::pop_char_on_empty_input_does_not_panic ... ok
[INFO] [stdout] test keybindings::palette::tests::open_sets_visible ... ok
[INFO] [stdout] test keybindings::palette::tests::pop_char_re_expands_filter ... ok
[INFO] [stdout] test keybindings::palette::tests::move_selection_down_clamps_at_last_item ... ok
[INFO] [stdout] test keybindings::tests::check_timeout_returns_false_when_not_in_prefix_mode ... ok
[INFO] [stdout] test keybindings::palette::tests::open_resets_selection_to_zero ... ok
[INFO] [stdout] test keybindings::palette::tests::pop_char_removes_last_character ... ok
[INFO] [stdout] test keybindings::palette::tests::push_char_triggers_filtering ... ok
[INFO] [stdout] test keybindings::palette::tests::move_selection_up_clamps_at_zero ... ok
[INFO] [stdout] test keybindings::palette::tests::open_excluded_commands_never_appear ... ok
[INFO] [stdout] test keybindings::palette::tests::move_selection_up_decrements_index ... ok
[INFO] [stdout] test file_finder::tests::target_directory_excluded ... ok
[INFO] [stdout] test keybindings::tests::ctrl_space_enters_prefix_mode_from_normal ... ok
[INFO] [stdout] test keybindings::tests::ctrl_space_enters_prefix_mode_from_passthrough ... ok
[INFO] [stdout] test keybindings::tests::enter_mode_changes_current_mode ... ok
[INFO] [stdout] test keybindings::tests::exit_to_previous_restores_prior_mode ... ok
[INFO] [stdout] test keybindings::tests::enter_mode_stores_previous_mode ... ok
[INFO] [stdout] test keybindings::tests::f10_returns_flash_command_palette ... ok
[INFO] [stdout] test file_finder::tests::push_char_filters_results_for_main ... ok
[INFO] [stdout] test keybindings::tests::f11_not_handled_returns_consumed ... ok
[INFO] [stdout] test keybindings::tests::f12_returns_flash_zoom_pane ... ok
[INFO] [stdout] test keybindings::tests::f3_returns_flash_find_in_file ... ok
[INFO] [stdout] test keybindings::tests::f4_returns_flash_toggle_sidebar ... ok
[INFO] [stdout] test keybindings::tests::f6_returns_flash_cycle_focus ... ok
[INFO] [stdout] test keybindings::tests::f5_executes_cycle_status_bar_theme ... ok
[INFO] [stdout] test keybindings::palette::tests::is_palette_command_returns_true_for_normal_command ... ok
[INFO] [stdout] test keybindings::palette::tests::move_selection_down_advances_index ... ok
[INFO] [stdout] test keybindings::tests::check_timeout_returns_false_when_prefix_entered_recently ... ok
[INFO] [stdout] test keybindings::tests::f7_returns_flash_new_terminal ... ok
[INFO] [stdout] test keybindings::tests::f8_returns_flash_close_tab ... ok
[INFO] [stdout] test keybindings::tests::f9_returns_flash_toggle_terminal_panel ... ok
[INFO] [stdout] test keybindings::tests::fkey_in_prefix_mode_cancels_prefix_and_returns_flash ... ok
[INFO] [stdout] test keybindings::tests::fkey_with_modifier_not_intercepted ... ok
[INFO] [stdout] test keybindings::tests::new_starts_in_normal_mode ... ok
[INFO] [stdout] test keybindings::tests::normal_mode_q_executes_quit ... ok
[INFO] [stdout] test keybindings::tests::prefix_e_executes_focus_sidebar ... ok
[INFO] [stdout] test keybindings::tests::prefix_esc_returns_consumed_and_exits_prefix_mode ... ok
[INFO] [stdout] test keybindings::tests::f1_returns_flash_help ... ok
[INFO] [stdout] test keybindings::tests::f2_returns_flash_rename_file ... ok
[INFO] [stdout] test keybindings::tests::passthrough_mode_regular_key_returns_pass_to_focused ... ok
[INFO] [stdout] test keybindings::tests::prefix_h_executes_move_focus_left_and_exits_prefix_mode ... ok
[INFO] [stdout] test keybindings::tests::prefix_n_executes_new_terminal ... ok
[INFO] [stdout] test keybindings::tests::prefix_unknown_key_returns_consumed_and_exits_prefix_mode ... ok
[INFO] [stdout] test keybindings::tests::prefix_p_executes_open_command_palette ... ok
[INFO] [stdout] test keybindings::tests::prefix_w_executes_close_tab ... ok
[INFO] [stdout] test layout::tab_bar::tests::active_title_on_empty_tabs_returns_empty_string ... ok
[INFO] [stdout] test layout::tab_bar::tests::active_title_returns_correct_string ... ok
[INFO] [stdout] test layout::tab_bar::tests::default_has_one_welcome_tab_at_index_zero ... ok
[INFO] [stdout] test layout::tab_bar::tests::add_tab_appends_to_the_end ... ok
[INFO] [stdout] test layout::tab_bar::tests::remove_active_tab_clamps_active_index ... ok
[INFO] [stdout] test layout::tab_bar::tests::remove_tab_out_of_bounds_is_a_noop ... ok
[INFO] [stdout] test layout::tab_bar::tests::remove_tab_shrinks_list ... ok
[INFO] [stdout] test layout::tab_bar::tests::set_active_clamps_to_valid_range ... ok
[INFO] [stdout] test layout::tab_bar::tests::set_active_moves_to_valid_index ... ok
[INFO] [stdout] test pty::buffer::tests::apply_sgr_256_color_bg ... ok
[INFO] [stdout] test pty::buffer::tests::apply_sgr_256_color_fg ... ok
[INFO] [stdout] test pty::buffer::tests::apply_sgr_bold_sets_bold_flag ... ok
[INFO] [stdout] test pty::buffer::tests::apply_sgr_truecolor_bg ... ok
[INFO] [stdout] test pty::buffer::tests::apply_sgr_truecolor_fg ... ok
[INFO] [stdout] test pty::buffer::tests::apply_sgr_reset_zeroes_all_attributes ... ok
[INFO] [stdout] test layout::tests::both_toggled_off_leaves_only_tab_bar_and_editor_area ... ok
[INFO] [stdout] test pty::buffer::tests::apply_sgr_standard_fg_colors_30_to_37 ... ok
[INFO] [stdout] test layout::tests::toggle_sidebar_off_hides_sidebar_and_editor_fills_width ... ok
[INFO] [stdout] test keybindings::palette::tests::push_char_appends_to_input ... ok
[INFO] [stdout] test pty::buffer::tests::char_at_out_of_bounds_col_returns_space ... ok
[INFO] [stdout] test pty::buffer::tests::char_at_out_of_bounds_row_returns_space ... ok
[INFO] [stdout] test pty::buffer::tests::char_at_returns_char_in_grid ... ok
[INFO] [stdout] test pty::buffer::tests::char_at_returns_char_in_scrollback ... ok
[INFO] [stdout] test layout::tests::status_bar_x_and_width_span_full_area_width ... ok
[INFO] [stdout] test pty::buffer::tests::erase_in_display_mode_3_also_clears_scrollback ... ok
[INFO] [stdout] test pty::buffer::tests::erase_in_line_mode_2_clears_entire_line ... ok
[INFO] [stdout] test pty::buffer::tests::erase_in_line_mode_0_clears_from_cursor_to_end ... ok
[INFO] [stdout] test pty::buffer::tests::new_cursor_starts_at_origin ... ok
[INFO] [stdout] test pty::buffer::tests::new_creates_correct_dimensions ... ok
[INFO] [stdout] test pty::buffer::tests::move_cursor_to_clamps_row_to_rows_minus_one ... ok
[INFO] [stdout] test pty::buffer::tests::move_cursor_to_exact_position ... ok
[INFO] [stdout] test pty::buffer::tests::newline_not_at_bottom_moves_cursor_down ... ok
[INFO] [stdout] test pty::buffer::tests::process_bytes_plain_text_appears_on_grid ... ok
[INFO] [stdout] test layout::tests::all_vertical_regions_sum_to_area_height ... ok
[INFO] [stdout] test pty::buffer::tests::new_scroll_region_covers_full_screen ... ok
[INFO] [stdout] test pty::buffer::tests::process_bytes_sgr_color_sequence ... ok
[INFO] [stdout] test pty::buffer::tests::move_cursor_to_clamps_col_to_cols_minus_one ... ok
[INFO] [stdout] test pty::buffer::tests::put_char_writes_to_current_position ... ok
[INFO] [stdout] test pty::buffer::tests::scroll_up_inserts_blank_row_at_bottom ... ok
[INFO] [stdout] test pty::buffer::tests::scroll_up_moves_top_row_to_scrollback ... ok
[INFO] [stdout] test pty::buffer::tests::newline_at_bottom_scrolls_and_preserves_scrollback ... ok
[INFO] [stdout] test pty::buffer::tests::tab_advances_to_next_multiple_of_8_from_col_0 ... ok
[INFO] [stdout] test layout::tests::sidebar_width_respects_percent_setting ... ok
[INFO] [stdout] test pty::buffer::tests::tab_advances_to_next_multiple_of_8_from_col_3 ... ok
[INFO] [stdout] test pty::buffer::tests::tab_advances_to_next_multiple_of_8_from_col_8 ... ok
[INFO] [stdout] test pty::buffer::tests::tab_clamps_at_last_col ... ok
[INFO] [stdout] test pty::keys::tests::arrow_up_encodes_as_esc_bracket_a ... ok
[INFO] [stdout] test pty::keys::tests::arrow_down_encodes_as_esc_bracket_b ... ok
[INFO] [stdout] test layout::tests::toggle_bottom_panel_off_hides_bottom_panel_and_main_fills_height ... ok
[INFO] [stdout] test pty::buffer::tests::put_char_at_col_boundary_wraps_to_next_line ... ok
[INFO] [stdout] test pty::buffer::tests::process_bytes_erase_display_2j_clears_screen ... ok
[INFO] [stdout] test pty::buffer::tests::put_char_advances_cursor_col ... ok
[INFO] [stdout] test pty::buffer::tests::carriage_return_sets_col_to_zero ... ok
[INFO] [stdout] test layout::tests::tab_bar_is_always_one_row_tall ... ok
[INFO] [stdout] test pty::buffer::tests::erase_in_display_mode_2_clears_all_cells ... ok
[INFO] [stdout] test pty::keys::tests::arrow_right_encodes_as_esc_bracket_c ... ok
[INFO] [stdout] test pty::keys::tests::backspace_encodes_as_del_byte ... ok
[INFO] [stdout] test pty::keys::tests::ctrl_a_encodes_as_byte_1 ... ok
[INFO] [stdout] test pty::keys::tests::ctrl_c_encodes_as_byte_3 ... ok
[INFO] [stdout] test pty::keys::tests::arrow_left_encodes_as_esc_bracket_d ... ok
[INFO] [stdout] test pty::keys::tests::ctrl_z_encodes_as_byte_26 ... ok
[INFO] [stdout] test pty::keys::tests::f5_encodes_as_esc_bracket_15_tilde ... ok
[INFO] [stdout] test layout::tests::status_bar_is_always_one_row_tall ... ok
[INFO] [stdout] test pty::keys::tests::escape_encodes_as_byte_27 ... ok
[INFO] [stdout] test pty::keys::tests::shift_up_encodes_with_modifier_code_2 ... ok
[INFO] [stdout] test pty::keys::tests::regular_char_z_encodes_correctly ... ok
[INFO] [stdout] test pty::keys::tests::enter_encodes_as_carriage_return ... ok
[INFO] [stdout] test pty::keys::tests::regular_char_a_encodes_as_byte_97 ... ok
[INFO] [stdout] test pty::keys::tests::ctrl_uppercase_c_also_encodes_as_byte_3 ... ok
[INFO] [stdout] test pty::keys::tests::unknown_key_returns_none ... ok
[INFO] [stdout] test terminal_panel::tests::active_pane_id_on_empty_returns_none ... ok
[INFO] [stdout] test session::tests::backward_compat_old_file_without_terminals_field ... ok
[INFO] [stdout] test session::tests::backward_compat_old_file_without_any_known_field ... ok
[INFO] [stdout] test session::tests::zero_terminals_saved_produces_empty_vec ... ok
[INFO] [stdout] test session::tests::load_returns_none_on_corrupt_json ... ok
[INFO] [stdout] test terminal_panel::tests::active_pane_id_returns_pane_of_active_terminal ... ok
[INFO] [stdout] test claude::socket::tests::multiple_concurrent_connections ... ok
[INFO] [stdout] test session::tests::load_returns_none_on_empty_file ... ok
[INFO] [stdout] test terminal_panel::tests::new_creates_empty_panel ... ok
[INFO] [stdout] test session::tests::load_returns_none_when_file_missing ... ok
[INFO] [stdout] test pty::keys::tests::f1_encodes_as_esc_o_p ... ok
[INFO] [stdout] test terminal_panel::tests::new_split_mode_is_single ... ok
[INFO] [stdout] test terminal_panel::tests::next_terminal_advances_index ... ok
[INFO] [stdout] test session::tests::save_and_load_round_trip_editor_files ... ok
[INFO] [stdout] test terminal_panel::tests::next_terminal_on_empty_panel_does_not_panic ... ok
[INFO] [stdout] test terminal_panel::tests::next_terminal_wraps_around_to_zero ... ok
[INFO] [stdout] test session::tests::save_and_load_round_trip_terminals ... ok
[INFO] [stdout] test terminal_panel::tests::new_active_terminal_starts_at_zero ... ok
[INFO] [stdout] test terminal_panel::tests::next_then_prev_returns_to_original_index ... ok
[INFO] [stdout] test terminal_panel::tests::owns_pane_returns_false_for_unknown_pane_id ... ok
[INFO] [stdout] test terminal_panel::tests::owns_pane_returns_false_when_panel_is_empty ... ok
[INFO] [stdout] test terminal_panel::tests::owns_pane_returns_true_for_known_pane ... ok
[INFO] [stdout] test terminal_panel::tests::prev_terminal_decrements_index ... ok
[INFO] [stdout] test session::tests::nonexistent_terminal_cwd_falls_back_to_project_root ... ok
[INFO] [stdout] test terminal_panel::tests::prev_terminal_on_empty_panel_does_not_panic ... ok
[INFO] [stdout] test terminal_panel::tests::prev_terminal_wraps_around_to_last ... ok
[INFO] [stdout] test terminal_panel::tests::toggle_split_single_becomes_horizontal ... ok
[INFO] [stdout] test terminal_panel::tests::toggle_split_horizontal_becomes_single ... ok
[INFO] [stdout] test session::tests::save_creates_dot_turbomux_directory ... ok
[INFO] [stdout] test layout::tests::default_state_produces_all_four_regions ... ok
[INFO] [stdout] test layout::tests::status_bar_y_is_flush_with_bottom_of_area ... ok
[INFO] [stdout] test claude::socket::tests::socket_cleaned_up_on_drop ... ok
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/turbomux-169c90f6832fe41d)
[INFO] [stdout] test result: ok. 298 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.31s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 298 tests
[INFO] [stdout] test app::tests::rect_contains_boundary_bottom_right_is_outside ... ok
[INFO] [stdout] test app::tests::rect_contains_boundary_top_left_is_inside ... ok
[INFO] [stdout] test app::tests::rect_contains_returns_false_for_point_outside ... ok
[INFO] [stdout] test app::tests::rect_contains_returns_false_for_zero_size_rect ... ok
[INFO] [stdout] test app::tests::rect_contains_returns_true_for_point_inside ... ok
[INFO] [stdout] test claude::hooks::tests::install_creates_hooks_in_empty_settings ... ok
[INFO] [stdout] test claude::hooks::tests::install_deduplicates_on_repeat ... ok
[INFO] [stdout] test claude::hooks::tests::install_preserves_existing_settings ... ok
[INFO] [stdout] test claude::hooks::tests::install_preserves_other_hooks ... ok
[INFO] [stdout] test claude::hooks::tests::remove_on_missing_file_is_ok ... ok
[INFO] [stdout] test claude::hooks::tests::remove_preserves_other_hooks ... ok
[INFO] [stdout] test claude::hooks::tests::remove_cleans_up_turbomux_hooks ... ok
[INFO] [stdout] test app::tests::apply_focus_sidebar_sets_normal_mode ... ok
[INFO] [stdout] test app::tests::default_config_does_not_change_layout_defaults ... ok
[INFO] [stdout] test app::tests::apply_focus_editor_without_pane_sets_normal_mode ... ok
[INFO] [stdout] test app::tests::with_active_terminal_mut_returns_none_when_no_terminal ... ok
[INFO] [stdout] test claude::tests::claude_activity_entry_tracks_timestamp ... ok
[INFO] [stdout] test claude::tests::claude_activity_variants_construct_and_compare ... ok
[INFO] [stdout] test claude::tests::context_percent_computes_correctly ... ok
[INFO] [stdout] test claude::tests::context_percent_zero_when_context_length_zero ... ok
[INFO] [stdout] test claude::tests::crew_member_extracted_from_agent_tool_use ... ok
[INFO] [stdout] test app::tests::sidebar_visible_false_config_hides_sidebar ... ok
[INFO] [stdout] test claude::tests::crew_member_not_set_for_unknown_subagent_type ... ok
[INFO] [stdout] test claude::tests::empty_file_returns_default_metrics ... ok
[INFO] [stdout] test app::tests::editor_config_override_takes_precedence_over_env_var ... ok
[INFO] [stdout] test claude::tests::model_reflects_most_recent_entry ... ok
[INFO] [stdout] test claude::tests::multiple_entries_accumulate_tokens ... ok
[INFO] [stdout] test claude::tests::sidechain_entries_are_excluded ... ok
[INFO] [stdout] test claude::tests::session_start_comes_from_first_non_sidechain_entry ... ok
[INFO] [stdout] test claude::tests::sidechain_false_is_not_excluded ... ok
[INFO] [stdout] test claude::tests::malformed_line_is_skipped_without_error ... ok
[INFO] [stdout] test claude::tests::total_tokens_sums_input_and_output ... ok
[INFO] [stdout] test clipboard::tests::base64_empty ... ok
[INFO] [stdout] test clipboard::tests::base64_hello ... ok
[INFO] [stdout] test claude::tests::single_valid_entry_extracts_tokens ... ok
[INFO] [stdout] test clipboard::tests::base64_hello_world ... ok
[INFO] [stdout] test clipboard::tests::base64_single_byte ... ok
[INFO] [stdout] test clipboard::tests::base64_three_bytes_exact ... ok
[INFO] [stdout] test clipboard::tests::base64_two_bytes ... ok
[INFO] [stdout] test clipboard::tests::copy_overwrites_previous_internal ... ok
[INFO] [stdout] test clipboard::tests::copy_paste_roundtrip_internal ... ok
[INFO] [stdout] test app::tests::sidebar_width_config_sets_layout_default ... ok
[INFO] [stdout] ]52;c;dGVzdCB0ZXh0test clipboard::tests::copy_with_osc52_updates_internal ... ok
[INFO] [stdout] test config::tests::build_command_appends_file_path_to_args ... ok
[INFO] [stdout] test clipboard::tests::copy_with_osc52_non_internal_backend_no_panic ... ok
[INFO] [stdout] test app::tests::drag_state_cleared_on_mouse_up ... ok
[INFO] [stdout] test config::tests::build_command_returns_correct_command_string ... ok
[INFO] [stdout] test app::tests::mouse_click_sidebar_sets_focus ... ok
[INFO] [stdout] test claude::socket::tests::client_can_send_json_and_event_arrives ... ok
[INFO] [stdout] test clipboard::tests::copy_with_osc52_oversized_still_copies_internal ... ok
[INFO] [stdout] test config::tests::build_command_with_base_args_keeps_order ... ok
[INFO] [stdout] test config::tests::detect_falls_back_to_vim_when_env_unset ... ok
[INFO] [stdout] test config::tests::editor_name_extracted_from_full_path ... ok
[INFO] [stdout] test config_file::tests::default_has_all_fields_none ... ok
[INFO] [stdout] test config::tests::embedded_args_in_editor_are_split_correctly ... ok
[INFO] [stdout] test editor::tests::active_pane_id_returns_pane_of_active_tab ... ok
[INFO] [stdout] test config::tests::detect_uses_editor_env_var ... ok
[INFO] [stdout] test app::tests::mouse_click_terminal_sets_focus ... ok
[INFO] [stdout] test config::tests::detect_prefers_visual_over_editor ... ok
[INFO] [stdout] test config_file::tests::load_with_nonexistent_file_returns_default ... ok
[INFO] [stdout] test editor::tests::add_tab_creates_tab_and_sets_active ... ok
[INFO] [stdout] test editor::tests::add_tab_second_tab_becomes_active ... ok
[INFO] [stdout] test config_file::tests::valid_toml_populates_fields ... ok
[INFO] [stdout] test editor::tests::add_tab_derives_title_from_filename ... ok
[INFO] [stdout] test config_file::tests::invalid_toml_returns_default_without_panicking ... ok
[INFO] [stdout] test editor::tests::close_tab_removes_and_returns_pane_id ... ok
[INFO] [stdout] test editor::tests::close_tab_sets_active_none_when_all_tabs_gone ... ok
[INFO] [stdout] test editor::tests::close_tab_when_empty_returns_none ... ok
[INFO] [stdout] test editor::tests::find_tab_by_path_returns_correct_index ... ok
[INFO] [stdout] test editor::tests::close_tab_adjusts_active_to_last_remaining ... ok
[INFO] [stdout] test editor::tests::find_tab_by_path_returns_none_for_unknown_path ... ok
[INFO] [stdout] test editor::tests::add_tab_sets_split_tree_to_leaf_of_pane ... ok
[INFO] [stdout] test editor::tests::owns_pane_returns_false_for_unknown_pane ... ok
[INFO] [stdout] test editor::tests::owns_pane_returns_true_for_registered_pane ... ok
[INFO] [stdout] test editor::tests::split_tree_leaf_compute_rects_returns_single_rect ... ok
[INFO] [stdout] test event::tests::app_event_key_variant_constructs ... ok
[INFO] [stdout] test event::tests::app_event_mouse_variant_constructs ... ok
[INFO] [stdout] test event::tests::app_event_pty_exit_variant_constructs ... ok
[INFO] [stdout] test event::tests::app_event_pty_output_variant_constructs ... ok
[INFO] [stdout] test event::tests::app_event_resize_variant_constructs ... ok
[INFO] [stdout] test event::tests::app_event_tick_variant_constructs ... ok
[INFO] [stdout] test editor::tests::split_tree_hsplit_compute_rects_returns_two_rects ... ok
[INFO] [stdout] test editor::tests::split_tree_hsplit_ratio_controls_proportions ... ok
[INFO] [stdout] test claude::socket::tests::malformed_json_does_not_crash ... ok
[INFO] [stdout] test clipboard::tests::clipboard_new_smoke ... ok
[INFO] [stdout] test file_explorer::tests::ensure_visible_scrolls_down_when_selected_is_below_viewport ... ok
[INFO] [stdout] test file_explorer::tests::ensure_visible_does_nothing_when_already_in_view ... ok
[INFO] [stdout] test file_explorer::tests::ensure_visible_scrolls_up_when_selected_is_above_viewport ... ok
[INFO] [stdout] test file_explorer::tests::move_up_clamps_at_zero ... ok
[INFO] [stdout] test file_explorer::tests::move_down_clamps_at_last_entry ... ok
[INFO] [stdout] test file_explorer::tests::move_down_advances_selection ... ok
[INFO] [stdout] test file_explorer::tests::read_dir_sorted_alphabetical_within_each_group ... ok
[INFO] [stdout] test file_explorer::tests::scroll_down_increments_offset ... ok
[INFO] [stdout] test file_explorer::tests::ensure_visible_zero_height_is_a_noop ... ok
[INFO] [stdout] test file_explorer::tests::scroll_down_at_max_stays_clamped ... ok
[INFO] [stdout] test file_explorer::tests::read_dir_sorted_dirs_come_before_files ... ok
[INFO] [stdout] test file_explorer::tests::read_dir_sorted_on_missing_path_returns_empty ... ok
[INFO] [stdout] test file_explorer::tests::scroll_up_decrements_offset ... ok
[INFO] [stdout] test file_explorer::tests::scroll_up_at_zero_stays_zero ... ok
[INFO] [stdout] test file_explorer::tests::scroll_down_empty_entries_does_not_panic ... ok
[INFO] [stdout] test file_explorer::tests::select_returns_none_for_directory ... ok
[INFO] [stdout] test file_explorer::tests::toggle_expand_on_expanded_dir_removes_children ... ok
[INFO] [stdout] test file_finder::tests::confirm_on_empty_filtered_returns_none ... ok
[INFO] [stdout] test file_finder::tests::git_directory_excluded ... ok
[INFO] [stdout] test file_explorer::tests::toggle_expand_on_dir_inserts_children ... ok
[INFO] [stdout] test file_explorer::tests::toggle_expand_on_file_is_a_noop ... ok
[INFO] [stdout] test file_finder::tests::move_down_clamps_at_last ... ok
[INFO] [stdout] test file_finder::tests::move_up_decrements_selection ... ok
[INFO] [stdout] test file_finder::tests::move_down_advances_selection ... ok
[INFO] [stdout] test file_finder::tests::confirm_returns_selected_path ... ok
[INFO] [stdout] test file_explorer::tests::select_returns_path_for_file ... ok
[INFO] [stdout] test file_finder::tests::new_starts_not_visible ... ok
[INFO] [stdout] test file_finder::tests::close_sets_not_visible ... ok
[INFO] [stdout] test file_finder::tests::empty_query_shows_all_files ... ok
[INFO] [stdout] test file_finder::tests::move_up_clamps_at_zero ... ok
[INFO] [stdout] test claude::socket::tests::socket_file_is_created ... ok
[INFO] [stdout] test app::tests::mouse_click_editor_sets_focus ... ok
[INFO] [stdout] test app::tests::apply_focus_terminal_without_pane_sets_normal_mode ... ok
[INFO] [stdout] test app::tests::drag_state_set_on_border_click ... ok
[INFO] [stdout] test file_finder::tests::new_starts_with_empty_all_files ... ok
[INFO] [stdout] test file_finder::tests::new_starts_with_empty_input ... ok
[INFO] [stdout] test git::tests::git_status_can_be_cloned ... ok
[INFO] [stdout] test git::tests::git_status_debug_format ... ok
[INFO] [stdout] test keybindings::command::tests::all_returns_27_variants ... ok
[INFO] [stdout] test keybindings::command::tests::all_descriptions_are_unique ... ok
[INFO] [stdout] test keybindings::command::tests::every_variant_has_non_empty_description ... ok
[INFO] [stdout] test file_finder::tests::node_modules_directory_excluded ... ok
[INFO] [stdout] test file_finder::tests::open_resets_input ... ok
[INFO] [stdout] test file_finder::tests::push_char_filters_results_for_main ... ok
[INFO] [stdout] test keybindings::command::tests::every_variant_has_non_empty_name ... ok
[INFO] [stdout] test keybindings::palette::tests::close_sets_not_visible ... ok
[INFO] [stdout] test keybindings::palette::tests::confirm_does_not_close_palette ... ok
[INFO] [stdout] test keybindings::palette::tests::confirm_returns_selected_command ... ok
[INFO] [stdout] test keybindings::palette::tests::confirm_on_empty_list_returns_none ... ok
[INFO] [stdout] test keybindings::command::tests::all_names_are_unique ... ok
[INFO] [stdout] test keybindings::palette::tests::empty_input_returns_all_non_excluded_commands ... ok
[INFO] [stdout] test file_finder::tests::open_populates_all_files ... ok
[INFO] [stdout] test keybindings::palette::tests::is_palette_command_returns_false_for_split_horizontal ... ok
[INFO] [stdout] test keybindings::palette::tests::excluded_commands_never_appear_after_filtering ... ok
[INFO] [stdout] test claude::socket::tests::multiple_concurrent_connections ... ok
[INFO] [stdout] test file_finder::tests::pop_char_broadens_results ... ok
[INFO] [stdout] test file_finder::tests::target_directory_excluded ... ok
[INFO] [stdout] test keybindings::palette::tests::filtering_terminal_returns_only_terminal_commands ... ok
[INFO] [stdout] test keybindings::palette::tests::is_palette_command_returns_false_for_close_pane_focused ... ok
[INFO] [stdout] test keybindings::palette::tests::is_palette_command_returns_false_for_split_vertical ... ok
[INFO] [stdout] test keybindings::palette::tests::is_palette_command_returns_false_for_zoom_pane ... ok
[INFO] [stdout] test keybindings::palette::tests::is_palette_command_returns_true_for_normal_command ... ok
[INFO] [stdout] test keybindings::palette::tests::open_excluded_commands_never_appear ... ok
[INFO] [stdout] test keybindings::palette::tests::open_resets_selection_to_zero ... ok
[INFO] [stdout] test app::tests::terminal_panel_visible_false_config_hides_panel ... ok
[INFO] [stdout] test keybindings::palette::tests::move_selection_down_clamps_at_last_item ... ok
[INFO] [stdout] test keybindings::palette::tests::move_selection_up_clamps_at_zero ... ok
[INFO] [stdout] test keybindings::palette::tests::new_has_all_commands_unfiltered ... ok
[INFO] [stdout] test keybindings::palette::tests::move_selection_down_advances_index ... ok
[INFO] [stdout] test keybindings::palette::tests::open_clears_input ... ok
[INFO] [stdout] test keybindings::palette::tests::move_selection_up_decrements_index ... ok
[INFO] [stdout] test keybindings::palette::tests::open_excludes_four_commands ... ok
[INFO] [stdout] test keybindings::palette::tests::new_is_not_visible ... ok
[INFO] [stdout] test keybindings::palette::tests::pop_char_on_empty_input_does_not_panic ... ok
[INFO] [stdout] test keybindings::palette::tests::pop_char_re_expands_filter ... ok
[INFO] [stdout] test keybindings::palette::tests::pop_char_removes_last_character ... ok
[INFO] [stdout] test keybindings::palette::tests::push_char_triggers_filtering ... ok
[INFO] [stdout] test keybindings::palette::tests::push_char_appends_to_input ... ok
[INFO] [stdout] test keybindings::tests::enter_mode_changes_current_mode ... ok
[INFO] [stdout] test keybindings::palette::tests::open_sets_visible ... ok
[INFO] [stdout] test keybindings::tests::check_timeout_returns_false_when_not_in_prefix_mode ... ok
[INFO] [stdout] test keybindings::tests::f10_returns_flash_command_palette ... ok
[INFO] [stdout] test keybindings::tests::check_timeout_returns_false_when_prefix_entered_recently ... ok
[INFO] [stdout] test keybindings::tests::ctrl_space_enters_prefix_mode_from_normal ... ok
[INFO] [stdout] test keybindings::tests::ctrl_space_enters_prefix_mode_from_passthrough ... ok
[INFO] [stdout] test keybindings::tests::enter_mode_stores_previous_mode ... ok
[INFO] [stdout] test keybindings::tests::exit_to_previous_restores_prior_mode ... ok
[INFO] [stdout] test keybindings::tests::f3_returns_flash_find_in_file ... ok
[INFO] [stdout] test keybindings::tests::f12_returns_flash_zoom_pane ... ok
[INFO] [stdout] test keybindings::tests::f1_returns_flash_help ... ok
[INFO] [stdout] test keybindings::tests::f5_executes_cycle_status_bar_theme ... ok
[INFO] [stdout] test keybindings::tests::f2_returns_flash_rename_file ... ok
[INFO] [stdout] test keybindings::tests::f4_returns_flash_toggle_sidebar ... ok
[INFO] [stdout] test keybindings::tests::f11_not_handled_returns_consumed ... ok
[INFO] [stdout] test keybindings::tests::f6_returns_flash_cycle_focus ... ok
[INFO] [stdout] test keybindings::tests::f8_returns_flash_close_tab ... ok
[INFO] [stdout] test keybindings::tests::fkey_with_modifier_not_intercepted ... ok
[INFO] [stdout] test keybindings::tests::f9_returns_flash_toggle_terminal_panel ... ok
[INFO] [stdout] test keybindings::tests::f7_returns_flash_new_terminal ... ok
[INFO] [stdout] test keybindings::tests::prefix_e_executes_focus_sidebar ... ok
[INFO] [stdout] test keybindings::tests::passthrough_mode_regular_key_returns_pass_to_focused ... ok
[INFO] [stdout] test keybindings::tests::normal_mode_q_executes_quit ... ok
[INFO] [stdout] test keybindings::tests::prefix_p_executes_open_command_palette ... ok
[INFO] [stdout] test keybindings::tests::prefix_n_executes_new_terminal ... ok
[INFO] [stdout] test keybindings::tests::prefix_unknown_key_returns_consumed_and_exits_prefix_mode ... ok
[INFO] [stdout] test keybindings::tests::prefix_esc_returns_consumed_and_exits_prefix_mode ... ok
[INFO] [stdout] test keybindings::tests::prefix_h_executes_move_focus_left_and_exits_prefix_mode ... ok
[INFO] [stdout] test keybindings::tests::prefix_w_executes_close_tab ... ok
[INFO] [stdout] test keybindings::tests::new_starts_in_normal_mode ... ok
[INFO] [stdout] test keybindings::tests::fkey_in_prefix_mode_cancels_prefix_and_returns_flash ... ok
[INFO] [stdout] test layout::tab_bar::tests::active_title_on_empty_tabs_returns_empty_string ... ok
[INFO] [stdout] test layout::tab_bar::tests::active_title_returns_correct_string ... ok
[INFO] [stdout] test layout::tab_bar::tests::add_tab_appends_to_the_end ... ok
[INFO] [stdout] test layout::tab_bar::tests::default_has_one_welcome_tab_at_index_zero ... ok
[INFO] [stdout] test layout::tab_bar::tests::remove_active_tab_clamps_active_index ... ok
[INFO] [stdout] test layout::tab_bar::tests::remove_tab_out_of_bounds_is_a_noop ... ok
[INFO] [stdout] test layout::tab_bar::tests::set_active_clamps_to_valid_range ... ok
[INFO] [stdout] test layout::tab_bar::tests::remove_tab_shrinks_list ... ok
[INFO] [stdout] test layout::tab_bar::tests::set_active_moves_to_valid_index ... ok
[INFO] [stdout] test layout::tests::both_toggled_off_leaves_only_tab_bar_and_editor_area ... ok
[INFO] [stdout] test file_finder::tests::open_sets_visible ... ok
[INFO] [stdout] test layout::tests::all_vertical_regions_sum_to_area_height ... ok
[INFO] [stdout] test layout::tests::default_state_produces_all_four_regions ... ok
[INFO] [stdout] test pty::buffer::tests::apply_sgr_256_color_fg ... ok
[INFO] [stdout] test pty::buffer::tests::apply_sgr_256_color_bg ... ok
[INFO] [stdout] test pty::buffer::tests::apply_sgr_bold_sets_bold_flag ... ok
[INFO] [stdout] test layout::tests::toggle_bottom_panel_off_hides_bottom_panel_and_main_fills_height ... ok
[INFO] [stdout] test pty::buffer::tests::apply_sgr_reset_zeroes_all_attributes ... ok
[INFO] [stdout] test pty::buffer::tests::apply_sgr_truecolor_bg ... ok
[INFO] [stdout] test pty::buffer::tests::carriage_return_sets_col_to_zero ... ok
[INFO] [stdout] test pty::buffer::tests::apply_sgr_standard_fg_colors_30_to_37 ... ok
[INFO] [stdout] test pty::buffer::tests::apply_sgr_truecolor_fg ... ok
[INFO] [stdout] test pty::buffer::tests::char_at_returns_char_in_scrollback ... ok
[INFO] [stdout] test pty::buffer::tests::erase_in_display_mode_2_clears_all_cells ... ok
[INFO] [stdout] test pty::buffer::tests::erase_in_display_mode_3_also_clears_scrollback ... ok
[INFO] [stdout] test pty::buffer::tests::char_at_out_of_bounds_col_returns_space ... ok
[INFO] [stdout] test pty::buffer::tests::move_cursor_to_clamps_row_to_rows_minus_one ... ok
[INFO] [stdout] test pty::buffer::tests::move_cursor_to_clamps_col_to_cols_minus_one ... ok
[INFO] [stdout] test pty::buffer::tests::char_at_out_of_bounds_row_returns_space ... ok
[INFO] [stdout] test pty::buffer::tests::erase_in_line_mode_2_clears_entire_line ... ok
[INFO] [stdout] test pty::buffer::tests::erase_in_line_mode_0_clears_from_cursor_to_end ... ok
[INFO] [stdout] test layout::tests::tab_bar_is_always_one_row_tall ... ok
[INFO] [stdout] test pty::buffer::tests::char_at_returns_char_in_grid ... ok
[INFO] [stdout] test pty::buffer::tests::move_cursor_to_exact_position ... ok
[INFO] [stdout] test pty::buffer::tests::new_creates_correct_dimensions ... ok
[INFO] [stdout] test pty::buffer::tests::process_bytes_erase_display_2j_clears_screen ... ok
[INFO] [stdout] test pty::buffer::tests::newline_not_at_bottom_moves_cursor_down ... ok
[INFO] [stdout] test pty::buffer::tests::process_bytes_plain_text_appears_on_grid ... ok
[INFO] [stdout] test pty::buffer::tests::put_char_advances_cursor_col ... ok
[INFO] [stdout] test pty::buffer::tests::process_bytes_sgr_color_sequence ... ok
[INFO] [stdout] test pty::buffer::tests::new_cursor_starts_at_origin ... ok
[INFO] [stdout] test pty::buffer::tests::newline_at_bottom_scrolls_and_preserves_scrollback ... ok
[INFO] [stdout] test pty::buffer::tests::scroll_up_inserts_blank_row_at_bottom ... ok
[INFO] [stdout] test pty::buffer::tests::scroll_up_moves_top_row_to_scrollback ... ok
[INFO] [stdout] test pty::buffer::tests::put_char_writes_to_current_position ... ok
[INFO] [stdout] test pty::buffer::tests::tab_advances_to_next_multiple_of_8_from_col_0 ... ok
[INFO] [stdout] test pty::buffer::tests::put_char_at_col_boundary_wraps_to_next_line ... ok
[INFO] [stdout] test pty::buffer::tests::new_scroll_region_covers_full_screen ... ok
[INFO] [stdout] test layout::tests::sidebar_width_respects_percent_setting ... ok
[INFO] [stdout] test pty::buffer::tests::tab_advances_to_next_multiple_of_8_from_col_8 ... ok
[INFO] [stdout] test pty::buffer::tests::tab_clamps_at_last_col ... ok
[INFO] [stdout] test layout::tests::toggle_sidebar_off_hides_sidebar_and_editor_fills_width ... ok
[INFO] [stdout] test layout::tests::status_bar_x_and_width_span_full_area_width ... ok
[INFO] [stdout] test pty::buffer::tests::tab_advances_to_next_multiple_of_8_from_col_3 ... ok
[INFO] [stdout] test layout::tests::status_bar_is_always_one_row_tall ... ok
[INFO] [stdout] test pty::keys::tests::arrow_down_encodes_as_esc_bracket_b ... ok
[INFO] [stdout] test pty::keys::tests::arrow_up_encodes_as_esc_bracket_a ... ok
[INFO] [stdout] test pty::keys::tests::arrow_left_encodes_as_esc_bracket_d ... ok
[INFO] [stdout] test git::tests::git_status_default_produces_empty_values ... ok
[INFO] [stdout] test pty::keys::tests::arrow_right_encodes_as_esc_bracket_c ... ok
[INFO] [stdout] test pty::keys::tests::ctrl_uppercase_c_also_encodes_as_byte_3 ... ok
[INFO] [stdout] test pty::keys::tests::ctrl_a_encodes_as_byte_1 ... ok
[INFO] [stdout] test pty::keys::tests::backspace_encodes_as_del_byte ... ok
[INFO] [stdout] test pty::keys::tests::ctrl_z_encodes_as_byte_26 ... ok
[INFO] [stdout] test pty::keys::tests::enter_encodes_as_carriage_return ... ok
[INFO] [stdout] test pty::keys::tests::regular_char_a_encodes_as_byte_97 ... ok
[INFO] [stdout] test pty::keys::tests::f5_encodes_as_esc_bracket_15_tilde ... ok
[INFO] [stdout] test pty::keys::tests::ctrl_c_encodes_as_byte_3 ... ok
[INFO] [stdout] test pty::keys::tests::escape_encodes_as_byte_27 ... ok
[INFO] [stdout] test pty::keys::tests::f1_encodes_as_esc_o_p ... ok
[INFO] [stdout] test pty::keys::tests::regular_char_z_encodes_correctly ... ok
[INFO] [stdout] test pty::keys::tests::shift_up_encodes_with_modifier_code_2 ... ok
[INFO] [stdout] test pty::keys::tests::unknown_key_returns_none ... ok
[INFO] [stdout] test session::tests::load_returns_none_on_corrupt_json ... ok
[INFO] [stdout] test session::tests::load_returns_none_on_empty_file ... ok
[INFO] [stdout] test terminal_panel::tests::active_pane_id_on_empty_returns_none ... ok
[INFO] [stdout] test file_finder::tests::open_resets_selection ... ok
[INFO] [stdout] test terminal_panel::tests::active_pane_id_returns_pane_of_active_terminal ... ok
[INFO] [stdout] test session::tests::nonexistent_terminal_cwd_falls_back_to_project_root ... ok
[INFO] [stdout] test session::tests::backward_compat_old_file_without_any_known_field ... ok
[INFO] [stdout] test terminal_panel::tests::new_creates_empty_panel ... ok
[INFO] [stdout] test session::tests::load_returns_none_when_file_missing ... ok
[INFO] [stdout] test terminal_panel::tests::next_terminal_advances_index ... ok
[INFO] [stdout] test terminal_panel::tests::next_terminal_on_empty_panel_does_not_panic ... ok
[INFO] [stdout] test terminal_panel::tests::new_split_mode_is_single ... ok
[INFO] [stdout] test terminal_panel::tests::next_terminal_wraps_around_to_zero ... ok
[INFO] [stdout] test terminal_panel::tests::next_then_prev_returns_to_original_index ... ok
[INFO] [stdout] test terminal_panel::tests::owns_pane_returns_false_for_unknown_pane_id ... ok
[INFO] [stdout] test terminal_panel::tests::owns_pane_returns_false_when_panel_is_empty ... ok
[INFO] [stdout] test terminal_panel::tests::new_active_terminal_starts_at_zero ... ok
[INFO] [stdout] test terminal_panel::tests::owns_pane_returns_true_for_known_pane ... ok
[INFO] [stdout] test terminal_panel::tests::prev_terminal_decrements_index ... ok
[INFO] [stdout] test terminal_panel::tests::prev_terminal_wraps_around_to_last ... ok
[INFO] [stdout] test terminal_panel::tests::prev_terminal_on_empty_panel_does_not_panic ... ok
[INFO] [stdout] test terminal_panel::tests::toggle_split_horizontal_becomes_single ... ok
[INFO] [stdout] test terminal_panel::tests::toggle_split_single_becomes_horizontal ... ok
[INFO] [stdout] test session::tests::save_creates_dot_turbomux_directory ... ok
[INFO] [stdout] test session::tests::backward_compat_old_file_without_terminals_field ... ok
[INFO] [stdout] test session::tests::save_and_load_round_trip_editor_files ... ok
[INFO] [stdout] test session::tests::save_and_load_round_trip_terminals ... ok
[INFO] [stdout] test session::tests::zero_terminals_saved_produces_empty_vec ... ok
[INFO] [stdout] test layout::tests::status_bar_y_is_flush_with_bottom_of_area ... ok
[INFO] [stdout] test claude::socket::tests::socket_cleaned_up_on_drop ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 298 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.27s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_phase10.rs (/opt/rustwide/target/debug/deps/integration_phase10-1a418d6adc90eb16)
[INFO] [stdout] 
[INFO] [stdout] running 13 tests
[INFO] [stdout] test pty_exit_last_terminal_no_editor_sidebar_visible_redirects_to_sidebar ... ok
[INFO] [stdout] test close_tab_command_last_terminal_with_editor_open_redirects_to_editor ... ok
[INFO] [stdout] test close_tab_command_last_editor_tab_mode_becomes_normal ... ok
[INFO] [stdout] test pass_to_focused_with_no_editor_pane_recovers_to_normal ... ok
[INFO] [stdout] test pty_exit_last_editor_tab_with_terminal_visible_redirects_to_terminal ... ok
[INFO] [stdout] test pty_exit_last_terminal_no_editor_no_sidebar_falls_back_to_editor_normal ... ok
[INFO] [stdout] test pty_exit_last_editor_tab_mode_becomes_normal ... ok
[INFO] [stdout] test pty_exit_non_last_editor_tab_stays_in_passthrough ... ok
[INFO] [stdout] test pass_to_focused_with_no_terminal_pane_and_editor_open_redirects_to_editor ... ok
[INFO] [stdout] test pty_exit_last_editor_tab_with_sidebar_visible_redirects_to_sidebar ... ok
[INFO] [stdout] test pty_exit_last_terminal_with_editor_open_redirects_to_editor ... ok
[INFO] [stdout] test pass_to_focused_with_no_terminal_pane_recovers_to_normal ... ok
[INFO] [stderr]      Running tests/integration_phase11.rs (/opt/rustwide/target/debug/deps/integration_phase11-0ff60e0f88875f61)
[INFO] [stdout] test pty_exit_last_editor_tab_focus_stays_editor_when_no_alternatives ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test esc_closes_file_finder ... ok
[INFO] [stdout] test open_file_finder_sets_mode_and_visible ... ok
[INFO] [stdout] test typing_updates_input_and_filters ... ok
[INFO] [stderr]      Running tests/integration_phase12.rs (/opt/rustwide/target/debug/deps/integration_phase12-743bc4aea8fbb50c)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 33 tests
[INFO] [stdout] test enter_scroll_mode_command_in_all ... ok
[INFO] [stdout] test exit_scroll_mode_command_in_all ... ok
[INFO] [stdout] test new_output_increments_view_offset_when_scrolled ... ok
[INFO] [stdout] test exit_scroll_mode_resets_view_offset ... ok
[INFO] [stdout] test prefix_bracket_enters_scroll_mode_command ... ok
[INFO] [stdout] test no_view_offset_change_when_not_scrolled ... ok
[INFO] [stdout] test run_search_finds_matches_in_grid ... ok
[INFO] [stdout] test run_search_no_match_gives_empty_list ... ok
[INFO] [stdout] test scroll_commands_have_non_empty_names ... ok
[INFO] [stdout] test run_search_resets_current_match_to_zero ... ok
[INFO] [stdout] test run_search_empty_query_clears_matches ... ok
[INFO] [stdout] test scroll_down_command_in_all ... ok
[INFO] [stdout] test scroll_mode_in_mode_enum ... ok
[INFO] [stdout] test scroll_page_up_command_in_all ... ok
[INFO] [stdout] test scroll_up_command_in_all ... ok
[INFO] [stdout] test scroll_view_down_clamps_at_zero ... ok
[INFO] [stdout] test scroll_view_up_clamps_at_scrollback_len ... ok
[INFO] [stdout] test scroll_view_down_decrements_offset ... ok
[INFO] [stdout] test scroll_view_up_multiple_calls_accumulate ... ok
[INFO] [stdout] test search_next_command_in_all ... ok
[INFO] [stdout] test search_next_wraps_around ... ok
[INFO] [stdout] test search_next_on_empty_matches_does_not_panic ... ok
[INFO] [stdout] test scroll_view_up_increments_offset ... ok
[INFO] [stdout] test search_in_pane_command_in_all ... ok
[INFO] [stdout] test scroll_page_down_command_in_all ... ok
[INFO] [stdout] test search_prev_command_in_all ... ok
[INFO] [stdout] test view_offset_starts_at_zero ... ok
[INFO] [stdout] test total_lines_equals_scrollback_plus_grid ... ok
[INFO] [stdout] test visible_rows_at_live_edge_returns_grid_rows ... ok
[INFO] [stdout] test search_prev_goes_back ... ok
[INFO] [stdout] test visible_rows_scrolled_up_returns_scrollback_rows ... ok
[INFO] [stdout] test search_prev_wraps_to_last ... ok
[INFO] [stdout] test search_next_advances_current_match ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 33 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 10 tests
[INFO] [stderr]      Running tests/integration_phase13.rs (/opt/rustwide/target/debug/deps/integration_phase13-f49cac5142e7a767)
[INFO] [stdout] test click_sidebar_sets_focus_to_sidebar ... ok
[INFO] [stdout] test click_editor_sets_focus_to_editor ... ok
[INFO] [stdout] test drag_sidebar_border_sets_drag_state ... ok
[INFO] [stdout] test click_sidebar_entry_selects_it ... ok
[INFO] [stdout] test click_terminal_panel_sets_focus_to_terminal ... ok
[INFO] [stdout] test scroll_up_in_sidebar_decrements_scroll_offset ... ok
[INFO] [stdout] test mouse_up_clears_drag_state ... ok
[INFO] [stdout] test scroll_down_in_sidebar_increments_scroll_offset ... ok
[INFO] [stdout] test drag_terminal_border_sets_drag_state ... ok
[INFO] [stdout] test click_hidden_sidebar_falls_through_to_editor ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_phase16.rs (/opt/rustwide/target/debug/deps/integration_phase16-c77a7530d306c2c6)
[INFO] [stdout] 
[INFO] [stdout] running 14 tests
[INFO] [stdout] test clear_selection_resets_both_fields ... ok
[INFO] [stdout] test ctrl_space_reachable_from_select_mode ... ok
[INFO] [stdout] test command_all_returns_29_variants ... ok
[INFO] [stdout] test ctrl_space_v_produces_enter_select_mode ... ok
[INFO] [stdout] test enter_select_mode_in_all ... ok
[INFO] [stdout] test exit_select_mode_in_all ... ok
[INFO] [stdout] test select_mode_variant_exists ... ok
[INFO] [stdout] test selection_spanning_scrollback_boundary_extracts_non_empty ... ok
[INFO] [stdout] test selection_range_is_sorted ... ok
[INFO] [stdout] test selection_start_move_extract_roundtrip ... ok
[INFO] [stdout] test yank_selection_in_all ... ok
[INFO] [stdout] test clipboard_copy_paste_roundtrip_internal ... ok
[INFO] [stdout] test clipboard_new_smoke_test ... ok
[INFO] [stdout] test select_mode_indicator_label ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_phase17.rs (/opt/rustwide/target/debug/deps/integration_phase17-d8bb35cd4b6c9499)
[INFO] [stdout] 
[INFO] [stdout] running 22 tests
[INFO] [stdout] test all_schemes_have_non_trivial_colors ... ok
[INFO] [stdout] test all_five_scheme_names_are_unique ... ok
[INFO] [stdout] test dark_scheme_exists ... ok
[INFO] [stdout] test light_scheme_exists ... ok
[INFO] [stdout] test forest_scheme_exists ... ok
[INFO] [stdout] test schemes_len_is_five ... ok
[INFO] [stdout] test sunset_scheme_exists ... ok
[INFO] [stdout] test ocean_scheme_exists ... ok
[INFO] [stdout] test cycle_to_sunset_flash_contains_sunset ... ok
[INFO] [stdout] test mode_indicator_normal_returns_normal_label ... ok
[INFO] [stdout] test cycle_to_light_flash_contains_light ... ok
[INFO] [stdout] test status_bar_renders_at_120_cols_without_panic ... ok
[INFO] [stdout] test f5_cycling_wraps_at_five ... ok
[INFO] [stdout] test cycle_to_ocean_flash_contains_ocean ... ok
[INFO] [stdout] test cycle_to_forest_flash_contains_forest ... ok
[INFO] [stdout] test mode_indicator_passthrough_terminal_focus_returns_terminal_label ... ok
[INFO] [stdout] test status_bar_renders_at_80_cols_without_panic ... ok
[INFO] [stdout] test mode_indicator_command_palette_returns_command_label ... ok
[INFO] [stdout] test f5_advances_theme_index_by_one ... ok
[INFO] [stdout] test mode_indicator_passthrough_editor_focus_returns_editor_label ... ok
[INFO] [stdout] test mode_indicator_prefix_returns_prefix_label ... ok
[INFO] [stdout] test status_bar_is_on_last_row ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 22 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_phase8.rs (/opt/rustwide/target/debug/deps/integration_phase8-0808f64d7c288767)
[INFO] [stdout] 
[INFO] [stdout] running 18 tests
[INFO] [stdout] test flash_message_clears_after_tick_with_elapsed_time ... ok
[INFO] [stdout] test flash_message_not_cleared_by_tick_when_fresh ... ok
[INFO] [stdout] test wasd_w_clamps_at_first_entry ... ok
[INFO] [stdout] test wasd_a_on_expanded_dir_collapses_it_and_children_disappear ... ok
[INFO] [stdout] test f1_flash_visible_in_bottom_right_area_of_buffer ... ok
[INFO] [stdout] test space_on_file_is_noop ... ok
[INFO] [stdout] test wasd_d_on_file_changes_focus_to_editor_and_passthrough_mode ... ok
[INFO] [stdout] test wasd_s_clamps_at_last_entry ... ok
[INFO] [stdout] test wasd_a_on_file_navigates_to_parent_dir_entry ... ok
[INFO] [stdout] test wasd_s_moves_selection_down ... ok
[INFO] [stdout] test wasd_d_on_expanded_dir_does_not_collapse_it ... ok
[INFO] [stdout] test f1_renders_help_flash_message ... ok
[INFO] [stdout] test flash_message_suppressed_when_command_palette_open ... ok
[INFO] [stdout] test wasd_w_moves_selection_up ... ok
[INFO] [stdout] test f11_does_not_produce_flash_message ... ok
[INFO] [stdout] test wasd_d_on_collapsed_dir_expands_it_and_children_appear ... ok
[INFO] [stdout] test f7_renders_new_terminal_flash_message ... ok
[INFO] [stderr]      Running tests/integration_phase9.rs (/opt/rustwide/target/debug/deps/integration_phase9-32fd8fbf2fb8609d)
[INFO] [stdout] test space_on_dir_toggles_expand_and_collapse ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 13 tests
[INFO] [stdout] test command_all_returns_27_variants ... ok
[INFO] [stdout] test cycle_status_bar_theme_description_is_non_empty ... ok
[INFO] [stdout] test command_all_contains_cycle_status_bar_theme ... ok
[INFO] [stdout] test cycle_status_bar_theme_name_is_correct ... ok
[INFO] [stdout] test every_scheme_has_a_non_empty_name ... ok
[INFO] [stdout] test status_bar_theme_has_at_least_one_scheme ... ok
[INFO] [stdout] test scheme_names_are_unique ... ok
[INFO] [stdout] test f5_cycles_and_wraps_around_to_zero ... ok
[INFO] [stdout] test cycle_status_bar_theme_sets_flash_message ... ok
[INFO] [stdout] test status_bar_row_is_bottom_row_of_frame ... ok
[INFO] [stdout] test cycle_status_bar_theme_flash_contains_scheme_name ... ok
[INFO] [stdout] test status_bar_theme_starts_at_index_zero ... ok
[INFO] [stdout] test f5_in_prefix_mode_cancels_prefix_and_cycles_theme ... ok
[INFO] [stderr]    Doc-tests turbomux
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "16b5afcf2ad013fc656275353ec9425d69229a264be5bb47654f9d5a1af27ec8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "16b5afcf2ad013fc656275353ec9425d69229a264be5bb47654f9d5a1af27ec8", kill_on_drop: false }`
[INFO] [stdout] 16b5afcf2ad013fc656275353ec9425d69229a264be5bb47654f9d5a1af27ec8
