[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 1.95.0 for beta-1.96-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FM4ckie%2FTurboMux" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-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-0-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/M4ckie/TurboMux on toolchain 1.95.0 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "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" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded vte v0.13.1 [INFO] [stderr] Downloaded vte_generate_state_changes v0.1.2 [INFO] [stderr] Downloaded num-conv v0.2.1 [INFO] [stderr] Downloaded wezterm-color-types v0.3.0 [INFO] [stderr] Downloaded memmem v0.1.1 [INFO] [stderr] Downloaded env_filter v1.0.1 [INFO] [stderr] Downloaded kasuari v0.4.12 [INFO] [stderr] Downloaded unicode-truncate v2.0.1 [INFO] [stderr] Downloaded mac_address v1.1.8 [INFO] [stderr] Downloaded wezterm-blob-leases v0.1.1 [INFO] [stderr] Downloaded wezterm-dynamic-derive v0.1.1 [INFO] [stderr] Downloaded instability v0.3.12 [INFO] [stderr] Downloaded vtparse v0.6.2 [INFO] [stderr] Downloaded line-clipping v0.3.5 [INFO] [stderr] Downloaded wezterm-dynamic v0.2.1 [INFO] [stderr] Downloaded env_logger v0.11.10 [INFO] [stderr] Downloaded ratatui-macros v0.7.0 [INFO] [stderr] Downloaded termios v0.3.3 [INFO] [stderr] Downloaded ratatui-crossterm v0.1.0 [INFO] [stderr] Downloaded lab v0.11.0 [INFO] [stderr] Downloaded csscolorparser v0.6.2 [INFO] [stderr] Downloaded wezterm-input-types v0.1.0 [INFO] [stderr] Downloaded serial2 v0.2.34 [INFO] [stderr] Downloaded ratatui-termwiz v0.1.0 [INFO] [stderr] Downloaded terminfo v0.9.0 [INFO] [stderr] Downloaded pest_generator v2.8.6 [INFO] [stderr] Downloaded compact_str v0.9.0 [INFO] [stderr] Downloaded ratatui v0.30.0 [INFO] [stderr] Downloaded pest_derive v2.8.6 [INFO] [stderr] Downloaded pest_meta v2.8.6 [INFO] [stderr] Downloaded finl_unicode v1.4.0 [INFO] [stderr] Downloaded jiff-static v0.2.23 [INFO] [stderr] Downloaded fancy-regex v0.11.0 [INFO] [stderr] Downloaded wezterm-bidi v0.2.3 [INFO] [stderr] Downloaded ratatui-core v0.1.0 [INFO] [stderr] Downloaded ratatui-widgets v0.3.0 [INFO] [stderr] Downloaded termwiz v0.23.3 [INFO] [stderr] Downloaded jiff v0.2.23 [INFO] [stderr] Downloaded deltae v0.3.2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 1b18827d4f750f24b2f21206b22c9102c8e08a442511cfd854ebfcca7e7e5b7d [INFO] running `Command { std: "docker" "start" "-a" "1b18827d4f750f24b2f21206b22c9102c8e08a442511cfd854ebfcca7e7e5b7d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "1b18827d4f750f24b2f21206b22c9102c8e08a442511cfd854ebfcca7e7e5b7d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1b18827d4f750f24b2f21206b22c9102c8e08a442511cfd854ebfcca7e7e5b7d", kill_on_drop: false }` [INFO] [stdout] 1b18827d4f750f24b2f21206b22c9102c8e08a442511cfd854ebfcca7e7e5b7d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+1.95.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 24bcdbd07b64efb4e9e0bbbbab8b5168e050d9413486b0eda8e5eae1e8d3b60e [INFO] running `Command { std: "docker" "start" "-a" "24bcdbd07b64efb4e9e0bbbbab8b5168e050d9413486b0eda8e5eae1e8d3b60e", kill_on_drop: false }` [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling foldhash v0.2.0 [INFO] [stderr] Compiling allocator-api2 v0.2.21 [INFO] [stderr] Compiling unicode-segmentation v1.13.2 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Compiling unicode-width v0.2.2 [INFO] [stderr] Compiling itertools v0.14.0 [INFO] [stderr] Compiling ryu v1.0.23 [INFO] [stderr] Compiling indoc v2.0.7 [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 castaway v0.2.4 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling instability v0.3.12 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling compact_str v0.9.0 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling deranged v0.5.8 [INFO] [stderr] Compiling hashbrown v0.16.1 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling cfg_aliases v0.1.1 [INFO] [stderr] Compiling num-conv v0.2.1 [INFO] [stderr] Compiling linux-raw-sys v0.12.1 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling nix v0.28.0 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling line-clipping v0.3.5 [INFO] [stderr] Compiling rustix v0.38.44 [INFO] [stderr] Compiling signal-hook-mio v0.2.5 [INFO] [stderr] Compiling convert_case v0.10.0 [INFO] [stderr] Compiling anstyle-parse v1.0.0 [INFO] [stderr] Compiling winnow v0.7.15 [INFO] [stderr] Compiling colorchoice v1.0.5 [INFO] [stderr] Compiling toml_write v0.1.2 [INFO] [stderr] Compiling anstyle v1.0.14 [INFO] [stderr] Compiling linux-raw-sys v0.4.15 [INFO] [stderr] Compiling serial2 v0.2.34 [INFO] [stderr] Compiling socket2 v0.6.3 [INFO] [stderr] Compiling anstream v1.0.0 [INFO] [stderr] Compiling vte_generate_state_changes v0.1.2 [INFO] [stderr] Compiling shell-words v1.1.1 [INFO] [stderr] Compiling jiff v0.2.23 [INFO] [stderr] Compiling lru v0.16.3 [INFO] [stderr] Compiling indexmap v2.13.0 [INFO] [stderr] Compiling downcast-rs v1.2.1 [INFO] [stderr] Compiling vte v0.13.1 [INFO] [stderr] Compiling time v0.3.47 [INFO] [stderr] Compiling crossterm v0.28.1 [INFO] [stderr] Compiling unicode-truncate v2.0.1 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling serde_json v1.0.149 [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 serde_derive v1.0.228 [INFO] [stderr] Compiling derive_more-impl v2.1.1 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling tokio-macros v2.6.1 [INFO] [stderr] Compiling tokio v1.50.0 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling derive_more v2.1.1 [INFO] [stderr] Compiling kasuari v0.4.12 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling crossterm v0.29.0 [INFO] [stderr] Compiling filedescriptor v0.8.3 [INFO] [stderr] Compiling portable-pty v0.9.0 [INFO] [stderr] Compiling env_filter v1.0.1 [INFO] [stderr] Compiling env_logger v0.11.10 [INFO] [stderr] Compiling strum v0.27.2 [INFO] [stderr] Compiling ratatui-core v0.1.0 [INFO] [stderr] Compiling darling_macro v0.23.0 [INFO] [stderr] Compiling darling v0.23.0 [INFO] [stderr] Compiling ratatui-widgets v0.3.0 [INFO] [stderr] Compiling ratatui-crossterm v0.1.0 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling ratatui-macros v0.7.0 [INFO] [stderr] Compiling ratatui v0.30.0 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling turbomux v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 43.39s [INFO] running `Command { std: "docker" "inspect" "24bcdbd07b64efb4e9e0bbbbab8b5168e050d9413486b0eda8e5eae1e8d3b60e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "24bcdbd07b64efb4e9e0bbbbab8b5168e050d9413486b0eda8e5eae1e8d3b60e", kill_on_drop: false }` [INFO] [stdout] 24bcdbd07b64efb4e9e0bbbbab8b5168e050d9413486b0eda8e5eae1e8d3b60e [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+1.95.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] eaa739a532dc9e5f60662008c6ab1032f5d51fa55e2e6fad4f5f3f13bf43981e [INFO] running `Command { std: "docker" "start" "-a" "eaa739a532dc9e5f60662008c6ab1032f5d51fa55e2e6fad4f5f3f13bf43981e", kill_on_drop: false }` [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling once_cell v1.21.4 [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 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 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: `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 12.83s [INFO] running `Command { std: "docker" "inspect" "eaa739a532dc9e5f60662008c6ab1032f5d51fa55e2e6fad4f5f3f13bf43981e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "eaa739a532dc9e5f60662008c6ab1032f5d51fa55e2e6fad4f5f3f13bf43981e", kill_on_drop: false }` [INFO] [stdout] eaa739a532dc9e5f60662008c6ab1032f5d51fa55e2e6fad4f5f3f13bf43981e [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+1.95.0" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] e4b29a7fd3cccc0a5670a16091045c02f5954cab61fa283d7c054313a75b3603 [INFO] running `Command { std: "docker" "start" "-a" "e4b29a7fd3cccc0a5670a16091045c02f5954cab61fa283d7c054313a75b3603", kill_on_drop: false }` [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: `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: `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_phase16") generated 1 warning (run `cargo fix --test "integration_phase16" -p turbomux` to apply 1 suggestion) [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` (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.27s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/turbomux-76ef5433c85a2dc3) [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_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_boundary_bottom_right_is_outside ... 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_preserves_existing_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_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_terminal_without_pane_sets_normal_mode ... ok [INFO] [stdout] test app::tests::mouse_click_sidebar_sets_focus ... ok [INFO] [stdout] test app::tests::sidebar_visible_false_config_hides_sidebar ... ok [INFO] [stdout] test app::tests::drag_state_set_on_border_click ... 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::with_active_terminal_mut_returns_none_when_no_terminal ... 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 claude::tests::malformed_line_is_skipped_without_error ... 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::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::sidechain_entries_are_excluded ... ok [INFO] [stdout] test claude::tests::single_valid_entry_extracts_tokens ... ok [INFO] [stdout] test clipboard::tests::base64_empty ... ok [INFO] [stdout] test clipboard::tests::base64_hello ... ok [INFO] [stdout] test claude::socket::tests::malformed_json_does_not_crash ... ok [INFO] [stdout] test claude::socket::tests::client_can_send_json_and_event_arrives ... ok [INFO] [stdout] test app::tests::mouse_click_editor_sets_focus ... ok [INFO] [stdout] test clipboard::tests::base64_single_byte ... ok [INFO] [stdout] test clipboard::tests::base64_two_bytes ... ok [INFO] [stdout] test claude::socket::tests::socket_file_is_created ... 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] test clipboard::tests::copy_overwrites_previous_internal ... ok [INFO] [stdout] ]52;c;dGVzdCB0ZXh0test clipboard::tests::copy_with_osc52_updates_internal ... ok [INFO] [stdout] test clipboard::tests::clipboard_new_smoke ... ok [INFO] [stdout] test config::tests::build_command_appends_file_path_to_args ... ok [INFO] [stdout] test config::tests::build_command_with_base_args_keeps_order ... ok [INFO] [stdout] test config::tests::build_command_returns_correct_command_string ... ok [INFO] [stdout] test config::tests::detect_falls_back_to_vim_when_env_unset ... ok [INFO] [stdout] test app::tests::apply_focus_sidebar_sets_normal_mode ... 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 app::tests::editor_config_override_takes_precedence_over_env_var ... ok [INFO] [stdout] test app::tests::drag_state_cleared_on_mouse_up ... ok [INFO] [stdout] test config::tests::detect_uses_editor_env_var ... ok [INFO] [stdout] test config_file::tests::invalid_toml_returns_default_without_panicking ... ok [INFO] [stdout] test config_file::tests::load_with_nonexistent_file_returns_default ... ok [INFO] [stdout] test app::tests::mouse_click_terminal_sets_focus ... ok [INFO] [stdout] test editor::tests::active_pane_id_returns_pane_of_active_tab ... ok [INFO] [stdout] test config_file::tests::valid_toml_populates_fields ... 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 editor::tests::close_tab_when_empty_returns_none ... ok [INFO] [stdout] test app::tests::apply_focus_editor_without_pane_sets_normal_mode ... ok [INFO] [stdout] test editor::tests::find_tab_by_path_returns_none_for_unknown_path ... ok [INFO] [stdout] test editor::tests::find_tab_by_path_returns_correct_index ... 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::close_tab_adjusts_active_to_last_remaining ... 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 editor::tests::split_tree_hsplit_compute_rects_returns_two_rects ... ok [INFO] [stdout] test event::tests::app_event_mouse_variant_constructs ... ok [INFO] [stdout] test event::tests::app_event_pty_output_variant_constructs ... ok [INFO] [stdout] test event::tests::app_event_pty_exit_variant_constructs ... ok [INFO] [stdout] test file_explorer::tests::ensure_visible_does_nothing_when_already_in_view ... ok [INFO] [stdout] test event::tests::app_event_tick_variant_constructs ... 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_scrolls_up_when_selected_is_above_viewport ... ok [INFO] [stdout] test event::tests::app_event_key_variant_constructs ... ok [INFO] [stdout] test event::tests::app_event_resize_variant_constructs ... ok [INFO] [stdout] test file_explorer::tests::move_down_clamps_at_last_entry ... ok [INFO] [stdout] test app::tests::default_config_does_not_change_layout_defaults ... ok [INFO] [stdout] test app::tests::sidebar_width_config_sets_layout_default ... ok [INFO] [stdout] test file_explorer::tests::read_dir_sorted_on_missing_path_returns_empty ... ok [INFO] [stdout] test file_explorer::tests::move_up_clamps_at_zero ... ok [INFO] [stdout] test file_explorer::tests::read_dir_sorted_dirs_come_before_files ... ok [INFO] [stdout] test file_explorer::tests::read_dir_sorted_alphabetical_within_each_group ... ok [INFO] [stdout] test file_explorer::tests::scroll_down_at_max_stays_clamped ... ok [INFO] [stdout] test file_explorer::tests::scroll_down_empty_entries_does_not_panic ... ok [INFO] [stdout] test claude::tests::total_tokens_sums_input_and_output ... ok [INFO] [stdout] test file_explorer::tests::scroll_up_decrements_offset ... ok [INFO] [stdout] test app::tests::terminal_panel_visible_false_config_hides_panel ... ok [INFO] [stdout] test file_explorer::tests::toggle_expand_on_expanded_dir_removes_children ... ok [INFO] [stdout] test file_explorer::tests::toggle_expand_on_file_is_a_noop ... ok [INFO] [stdout] test file_finder::tests::close_sets_not_visible ... ok [INFO] [stdout] test file_finder::tests::confirm_on_empty_filtered_returns_none ... ok [INFO] [stdout] test file_explorer::tests::move_down_advances_selection ... ok [INFO] [stdout] test file_explorer::tests::scroll_up_at_zero_stays_zero ... 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_finder::tests::git_directory_excluded ... ok [INFO] [stdout] test file_finder::tests::confirm_returns_selected_path ... ok [INFO] [stdout] test file_finder::tests::empty_query_shows_all_files ... ok [INFO] [stdout] test file_finder::tests::move_down_clamps_at_last ... ok [INFO] [stdout] test file_finder::tests::move_down_advances_selection ... 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::new_starts_with_empty_all_files ... ok [INFO] [stdout] test claude::socket::tests::multiple_concurrent_connections ... ok [INFO] [stdout] test clipboard::tests::base64_hello_world ... ok [INFO] [stdout] test file_finder::tests::move_up_clamps_at_zero ... ok [INFO] [stdout] test file_finder::tests::new_starts_with_empty_input ... ok [INFO] [stdout] test file_finder::tests::node_modules_directory_excluded ... ok [INFO] [stdout] test clipboard::tests::base64_three_bytes_exact ... 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 editor::tests::add_tab_creates_tab_and_sets_active ... 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 editor::tests::add_tab_derives_title_from_filename ... 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 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_on_empty_list_returns_none ... ok [INFO] [stdout] test keybindings::palette::tests::confirm_returns_selected_command ... ok [INFO] [stdout] test keybindings::palette::tests::empty_input_returns_all_non_excluded_commands ... ok [INFO] [stdout] test keybindings::palette::tests::excluded_commands_never_appear_after_filtering ... ok [INFO] [stdout] test clipboard::tests::copy_with_osc52_oversized_still_copies_internal ... 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_horizontal ... ok [INFO] [stdout] test keybindings::palette::tests::is_palette_command_returns_false_for_zoom_pane ... ok [INFO] [stdout] test keybindings::palette::tests::move_selection_down_advances_index ... 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::move_selection_up_decrements_index ... 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_excluded_commands_never_appear ... ok [INFO] [stdout] test keybindings::palette::tests::open_excludes_four_commands ... ok [INFO] [stdout] test keybindings::palette::tests::open_resets_selection_to_zero ... ok [INFO] [stdout] test keybindings::palette::tests::is_palette_command_returns_false_for_split_vertical ... ok [INFO] [stdout] test keybindings::palette::tests::pop_char_on_empty_input_does_not_panic ... ok [INFO] [stdout] test file_finder::tests::open_resets_selection ... ok [INFO] [stdout] test file_finder::tests::move_up_decrements_selection ... ok [INFO] [stdout] test file_finder::tests::push_char_filters_results_for_main ... ok [INFO] [stdout] test file_finder::tests::pop_char_broadens_results ... ok [INFO] [stdout] test file_explorer::tests::select_returns_none_for_directory ... ok [INFO] [stdout] test file_explorer::tests::toggle_expand_on_dir_inserts_children ... ok [INFO] [stdout] test file_finder::tests::target_directory_excluded ... ok [INFO] [stdout] test file_finder::tests::open_sets_visible ... ok [INFO] [stdout] test file_finder::tests::open_populates_all_files ... ok [INFO] [stdout] test file_finder::tests::open_resets_input ... ok [INFO] [stdout] test keybindings::palette::tests::is_palette_command_returns_true_for_normal_command ... 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_appends_to_input ... ok [INFO] [stdout] test keybindings::palette::tests::push_char_triggers_filtering ... ok [INFO] [stdout] test keybindings::tests::check_timeout_returns_false_when_not_in_prefix_mode ... 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_changes_current_mode ... ok [INFO] [stdout] test keybindings::tests::f10_returns_flash_command_palette ... 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::f1_returns_flash_help ... ok [INFO] [stdout] test keybindings::tests::exit_to_previous_restores_prior_mode ... 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_e_executes_focus_sidebar ... ok [INFO] [stdout] test keybindings::tests::enter_mode_stores_previous_mode ... ok [INFO] [stdout] test keybindings::tests::f3_returns_flash_find_in_file ... ok [INFO] [stdout] test keybindings::tests::f5_executes_cycle_status_bar_theme ... ok [INFO] [stdout] test keybindings::tests::f6_returns_flash_cycle_focus ... ok [INFO] [stdout] test keybindings::tests::prefix_esc_returns_consumed_and_exits_prefix_mode ... 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::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::f9_returns_flash_toggle_terminal_panel ... ok [INFO] [stdout] test keybindings::tests::f4_returns_flash_toggle_sidebar ... ok [INFO] [stdout] test keybindings::tests::prefix_unknown_key_returns_consumed_and_exits_prefix_mode ... 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::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::default_has_one_welcome_tab_at_index_zero ... 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_p_executes_open_command_palette ... 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_bold_sets_bold_flag ... ok [INFO] [stdout] test pty::buffer::tests::apply_sgr_256_color_fg ... ok [INFO] [stdout] test pty::buffer::tests::apply_sgr_reset_zeroes_all_attributes ... 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_bg ... ok [INFO] [stdout] test pty::buffer::tests::carriage_return_sets_col_to_zero ... ok [INFO] [stdout] test pty::buffer::tests::apply_sgr_truecolor_fg ... 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_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::erase_in_line_mode_0_clears_from_cursor_to_end ... ok [INFO] [stdout] test pty::buffer::tests::erase_in_line_mode_2_clears_entire_line ... ok [INFO] [stdout] test pty::buffer::tests::char_at_out_of_bounds_col_returns_space ... ok [INFO] [stdout] test pty::buffer::tests::char_at_returns_char_in_grid ... ok [INFO] [stdout] test pty::buffer::tests::move_cursor_to_clamps_col_to_cols_minus_one ... ok [INFO] [stdout] test layout::tests::toggle_bottom_panel_off_hides_bottom_panel_and_main_fills_height ... ok [INFO] [stdout] test layout::tests::status_bar_is_always_one_row_tall ... ok [INFO] [stdout] test layout::tests::both_toggled_off_leaves_only_tab_bar_and_editor_area ... 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::new_scroll_region_covers_full_screen ... ok [INFO] [stdout] test layout::tests::tab_bar_is_always_one_row_tall ... ok [INFO] [stdout] test pty::buffer::tests::new_cursor_starts_at_origin ... ok [INFO] [stdout] test pty::buffer::tests::newline_not_at_bottom_moves_cursor_down ... ok [INFO] [stdout] test layout::tests::status_bar_x_and_width_span_full_area_width ... ok [INFO] [stdout] test layout::tests::all_vertical_regions_sum_to_area_height ... ok [INFO] [stdout] test pty::buffer::tests::process_bytes_plain_text_appears_on_grid ... ok [INFO] [stdout] test pty::buffer::tests::process_bytes_sgr_color_sequence ... ok [INFO] [stdout] test pty::buffer::tests::put_char_advances_cursor_col ... ok [INFO] [stdout] test pty::buffer::tests::put_char_at_col_boundary_wraps_to_next_line ... ok [INFO] [stdout] test pty::buffer::tests::new_creates_correct_dimensions ... ok [INFO] [stdout] test layout::tests::toggle_sidebar_off_hides_sidebar_and_editor_fills_width ... ok [INFO] [stdout] test pty::buffer::tests::newline_at_bottom_scrolls_and_preserves_scrollback ... ok [INFO] [stdout] test pty::buffer::tests::process_bytes_erase_display_2j_clears_screen ... ok [INFO] [stdout] test layout::tests::sidebar_width_respects_percent_setting ... ok [INFO] [stdout] test layout::tests::default_state_produces_all_four_regions ... ok [INFO] [stdout] test pty::keys::tests::arrow_right_encodes_as_esc_bracket_c ... ok [INFO] [stdout] test pty::buffer::tests::put_char_writes_to_current_position ... ok [INFO] [stdout] test pty::buffer::tests::scroll_up_moves_top_row_to_scrollback ... ok [INFO] [stdout] test pty::buffer::tests::tab_clamps_at_last_col ... ok [INFO] [stdout] test pty::buffer::tests::scroll_up_inserts_blank_row_at_bottom ... ok [INFO] [stdout] test config::tests::detect_prefers_visual_over_editor ... FAILED [INFO] [stdout] test pty::buffer::tests::tab_advances_to_next_multiple_of_8_from_col_0 ... ok [INFO] [stdout] test pty::buffer::tests::tab_advances_to_next_multiple_of_8_from_col_8 ... ok [INFO] [stdout] test pty::keys::tests::arrow_down_encodes_as_esc_bracket_b ... ok [INFO] [stdout] test pty::buffer::tests::tab_advances_to_next_multiple_of_8_from_col_3 ... ok [INFO] [stdout] test pty::keys::tests::arrow_left_encodes_as_esc_bracket_d ... ok [INFO] [stdout] test pty::keys::tests::arrow_up_encodes_as_esc_bracket_a ... 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_uppercase_c_also_encodes_as_byte_3 ... ok [INFO] [stdout] test pty::keys::tests::ctrl_z_encodes_as_byte_26 ... 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::enter_encodes_as_carriage_return ... ok [INFO] [stdout] test layout::tests::status_bar_y_is_flush_with_bottom_of_area ... ok [INFO] [stdout] test pty::keys::tests::f1_encodes_as_esc_o_p ... ok [INFO] [stdout] test pty::keys::tests::f5_encodes_as_esc_bracket_15_tilde ... ok [INFO] [stdout] test pty::keys::tests::regular_char_z_encodes_correctly ... ok [INFO] [stdout] test pty::keys::tests::unknown_key_returns_none ... ok [INFO] [stdout] test pty::keys::tests::regular_char_a_encodes_as_byte_97 ... ok [INFO] [stdout] test pty::keys::tests::shift_up_encodes_with_modifier_code_2 ... ok [INFO] [stdout] test terminal_panel::tests::active_pane_id_on_empty_returns_none ... ok [INFO] [stdout] test session::tests::load_returns_none_on_empty_file ... ok [INFO] [stdout] test terminal_panel::tests::new_active_terminal_starts_at_zero ... ok [INFO] [stdout] test terminal_panel::tests::new_creates_empty_panel ... 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 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 session::tests::save_creates_dot_turbomux_directory ... ok [INFO] [stdout] test terminal_panel::tests::prev_terminal_decrements_index ... 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 session::tests::backward_compat_old_file_without_any_known_field ... 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_and_load_round_trip_terminals ... ok [INFO] [stdout] test session::tests::zero_terminals_saved_produces_empty_vec ... ok [INFO] [stdout] test session::tests::backward_compat_old_file_without_terminals_field ... ok [INFO] [stdout] test session::tests::load_returns_none_on_corrupt_json ... ok [INFO] [stdout] test session::tests::save_and_load_round_trip_editor_files ... ok [INFO] [stdout] test session::tests::nonexistent_terminal_cwd_falls_back_to_project_root ... 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 claude::socket::tests::socket_cleaned_up_on_drop ... ok [INFO] [stdout] test terminal_panel::tests::active_pane_id_returns_pane_of_active_terminal ... ok [INFO] [stdout] test keybindings::palette::tests::open_sets_visible ... ok [INFO] [stdout] test session::tests::load_returns_none_when_file_missing ... ok [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] [INFO] [stdout] ---- config::tests::detect_prefers_visual_over_editor stdout ---- [INFO] [stdout] [INFO] [stdout] thread 'config::tests::detect_prefers_visual_over_editor' (181) panicked at src/config.rs:100:9: [INFO] [stdout] assertion `left == right` failed [INFO] [stdout] left: "nano" [INFO] [stdout] right: "emacs" [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x5fd8c785ba9a - std[e28293b1aa0f68bd]::backtrace_rs::backtrace::libunwind::trace [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9 [INFO] [stdout] 1: 0x5fd8c785ba9a - std[e28293b1aa0f68bd]::backtrace_rs::backtrace::trace_unsynchronized:: [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14 [INFO] [stdout] 2: 0x5fd8c785ba9a - std[e28293b1aa0f68bd]::sys::backtrace::_print_fmt [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:74:9 [INFO] [stdout] 3: 0x5fd8c785ba9a - <::print::DisplayBacktrace as core[c1f1a4ba060b9bfa]::fmt::Display>::fmt [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:44:26 [INFO] [stdout] 4: 0x5fd8c787325a - ::fmt [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/fmt/rt.rs:152:76 [INFO] [stdout] 5: 0x5fd8c787325a - core[c1f1a4ba060b9bfa]::fmt::write [INFO] [stdout] 6: 0x5fd8c7861112 - std[e28293b1aa0f68bd]::io::default_write_fmt::> [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/io/mod.rs:639:11 [INFO] [stdout] 7: 0x5fd8c7861112 - as std[e28293b1aa0f68bd]::io::Write>::write_fmt [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/io/mod.rs:1994:13 [INFO] [stdout] 8: 0x5fd8c783765f - ::print [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:47:9 [INFO] [stdout] 9: 0x5fd8c783765f - std[e28293b1aa0f68bd]::panicking::default_hook::{closure#0} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:292:27 [INFO] [stdout] 10: 0x5fd8c7852bb9 - std[e28293b1aa0f68bd]::panicking::default_hook [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:316:9 [INFO] [stdout] 11: 0x5fd8c770e75c - core[c1f1a4ba060b9bfa]::ops::function::Fn<(&'a std[e28293b1aa0f68bd]::panic::PanicHookInfo<'b>,), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Sync + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::Fn<(&std[e28293b1aa0f68bd]::panic::PanicHookInfo,)>>::call [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2254:9 [INFO] [stdout] 12: 0x5fd8c770e75c - test[273d7611820c9051]::test_main_with_exit_callback::::{closure#0} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:145:21 [INFO] [stdout] 13: 0x5fd8c7852d72 - core[c1f1a4ba060b9bfa]::ops::function::Fn<(&'a std[e28293b1aa0f68bd]::panic::PanicHookInfo<'b>,), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Sync + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::Fn<(&std[e28293b1aa0f68bd]::panic::PanicHookInfo,)>>::call [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2254:9 [INFO] [stdout] 14: 0x5fd8c7852d72 - std[e28293b1aa0f68bd]::panicking::panic_with_hook [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:833:13 [INFO] [stdout] 15: 0x5fd8c7837718 - std[e28293b1aa0f68bd]::panicking::panic_handler::{closure#0} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:698:13 [INFO] [stdout] 16: 0x5fd8c782e739 - std[e28293b1aa0f68bd]::sys::backtrace::__rust_end_short_backtrace:: [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:182:18 [INFO] [stdout] 17: 0x5fd8c78386dd - __rustc[b7974e8690430dd9]::rust_begin_unwind [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:689:5 [INFO] [stdout] 18: 0x5fd8c7873b6c - core[c1f1a4ba060b9bfa]::panicking::panic_fmt [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panicking.rs:80:14 [INFO] [stdout] 19: 0x5fd8c78739f3 - core[c1f1a4ba060b9bfa]::panicking::assert_failed_inner [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panicking.rs:439:17 [INFO] [stdout] 20: 0x5fd8c7600f78 - core::panicking::assert_failed::he9b4c54dd1a254ac [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panicking.rs:394:5 [INFO] [stdout] 21: 0x5fd8c75d96c1 - turbomux::config::tests::detect_prefers_visual_over_editor::h96b1d2fa174ecf36 [INFO] [stdout] at /opt/rustwide/workdir/src/config.rs:100:9 [INFO] [stdout] 22: 0x5fd8c75d9727 - turbomux::config::tests::detect_prefers_visual_over_editor::{{closure}}::h3987edc5c243ae7c [INFO] [stdout] at /opt/rustwide/workdir/src/config.rs:93:43 [INFO] [stdout] 23: 0x5fd8c757ae66 - core::ops::function::FnOnce::call_once::ha3ec2ce022864f05 [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 24: 0x5fd8c770283b - core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 25: 0x5fd8c770283b - test[273d7611820c9051]::__rust_begin_short_backtrace::, fn() -> core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>> [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:663:18 [INFO] [stdout] 26: 0x5fd8c770f22b - test[273d7611820c9051]::run_test_in_process::{closure#0} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:686:74 [INFO] [stdout] 27: 0x5fd8c770f22b - as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panic/unwind_safe.rs:274:9 [INFO] [stdout] 28: 0x5fd8c770f22b - std[e28293b1aa0f68bd]::panicking::catch_unwind::do_call::, core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>> [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:581:40 [INFO] [stdout] 29: 0x5fd8c770f22b - std[e28293b1aa0f68bd]::panicking::catch_unwind::, core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe> [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:544:19 [INFO] [stdout] 30: 0x5fd8c770f22b - std[e28293b1aa0f68bd]::panic::catch_unwind::, core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>> [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panic.rs:359:14 [INFO] [stdout] 31: 0x5fd8c770f22b - test[273d7611820c9051]::run_test_in_process [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:686:27 [INFO] [stdout] 32: 0x5fd8c770f22b - test[273d7611820c9051]::run_test::{closure#0} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:607:43 [INFO] [stdout] 33: 0x5fd8c770a944 - test[273d7611820c9051]::run_test::{closure#1} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:637:41 [INFO] [stdout] 34: 0x5fd8c770a944 - std[e28293b1aa0f68bd]::sys::backtrace::__rust_begin_short_backtrace:: [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:166:18 [INFO] [stdout] 35: 0x5fd8c7711e32 - std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked::::{closure#1}::{closure#0} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/thread/lifecycle.rs:91:13 [INFO] [stdout] 36: 0x5fd8c7711e32 - ::{closure#1}::{closure#0}> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panic/unwind_safe.rs:274:9 [INFO] [stdout] 37: 0x5fd8c7711e32 - std[e28293b1aa0f68bd]::panicking::catch_unwind::do_call::::{closure#1}::{closure#0}>, ()> [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:581:40 [INFO] [stdout] 38: 0x5fd8c7711e32 - std[e28293b1aa0f68bd]::panicking::catch_unwind::<(), core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe::{closure#1}::{closure#0}>> [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:544:19 [INFO] [stdout] 39: 0x5fd8c7711e32 - std[e28293b1aa0f68bd]::panic::catch_unwind::::{closure#1}::{closure#0}>, ()> [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panic.rs:359:14 [INFO] [stdout] 40: 0x5fd8c7711e32 - std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked::::{closure#1} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/thread/lifecycle.rs:89:26 [INFO] [stdout] 41: 0x5fd8c7711e32 - ::{closure#1} as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 42: 0x5fd8c785ae5f - + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2240:9 [INFO] [stdout] 43: 0x5fd8c785ae5f - ::new::thread_start [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/thread/unix.rs:118:17 [INFO] [stdout] 44: 0x7a954a9c0aa4 - [INFO] [stdout] 45: 0x7a954aa4da64 - clone [INFO] [stdout] 46: 0x0 - [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] config::tests::detect_prefers_visual_over_editor [INFO] [stdout] [INFO] [stdout] test result: FAILED. 297 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.39s [INFO] [stdout] [INFO] [stderr] error: test failed, to rerun pass `--lib` [INFO] running `Command { std: "docker" "inspect" "e4b29a7fd3cccc0a5670a16091045c02f5954cab61fa283d7c054313a75b3603", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e4b29a7fd3cccc0a5670a16091045c02f5954cab61fa283d7c054313a75b3603", kill_on_drop: false }` [INFO] [stdout] e4b29a7fd3cccc0a5670a16091045c02f5954cab61fa283d7c054313a75b3603