[INFO] fetching crate tui-file-explorer 0.9.8... [INFO] testing tui-file-explorer-0.9.8 against master#562dee4820c458d823175268e41601d4c060588a for pr-154210-2 [INFO] extracting crate tui-file-explorer 0.9.8 into /workspace/builds/worker-7-tc1/source [INFO] started tweaking crates.io crate tui-file-explorer 0.9.8 [INFO] removed 0 missing examples [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate tui-file-explorer 0.9.8 [INFO] tweaked toml for crates.io crate tui-file-explorer 0.9.8 written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate tui-file-explorer 0.9.8 on toolchain 562dee4820c458d823175268e41601d4c060588a [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate tui-file-explorer 0.9.8 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" "+562dee4820c458d823175268e41601d4c060588a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded line-clipping v0.3.5 [INFO] [stderr] Downloaded mac_address v1.1.8 [INFO] [stderr] Downloaded atomic v0.6.1 [INFO] [stderr] Downloaded wezterm-dynamic-derive v0.1.1 [INFO] [stderr] Downloaded ratatui-crossterm v0.1.0 [INFO] [stderr] Downloaded terminfo v0.9.0 [INFO] [stderr] Downloaded termios v0.3.3 [INFO] [stderr] Downloaded fancy-regex v0.11.0 [INFO] [stderr] Downloaded wezterm-bidi v0.2.3 [INFO] [stderr] Downloaded finl_unicode v1.4.0 [INFO] [stderr] Downloaded instability v0.3.11 [INFO] [stderr] Downloaded ratatui-core v0.1.0 [INFO] [stderr] Downloaded ratatui v0.30.0 [INFO] [stderr] Downloaded lab v0.11.0 [INFO] [stderr] Downloaded filedescriptor v0.8.3 [INFO] [stderr] Downloaded memmem v0.1.1 [INFO] [stderr] Downloaded wezterm-dynamic v0.2.1 [INFO] [stderr] Downloaded wezterm-input-types v0.1.0 [INFO] [stderr] Downloaded ratatui-termwiz v0.1.0 [INFO] [stderr] Downloaded wezterm-blob-leases v0.1.1 [INFO] [stderr] Downloaded tui-slider v0.3.2 [INFO] [stderr] Downloaded deltae v0.3.2 [INFO] [stderr] Downloaded compact_str v0.9.0 [INFO] [stderr] Downloaded wezterm-color-types v0.3.0 [INFO] [stderr] Downloaded ratatui-widgets v0.3.0 [INFO] [stderr] Downloaded kasuari v0.4.11 [INFO] [stderr] Downloaded lru v0.16.3 [INFO] [stderr] Downloaded unicode-truncate v2.0.1 [INFO] [stderr] Downloaded euclid v0.22.13 [INFO] [stderr] Downloaded vtparse v0.6.2 [INFO] [stderr] Downloaded ratatui-macros v0.7.0 [INFO] [stderr] Downloaded termwiz v0.23.3 [INFO] [stderr] Downloaded ordered-float v4.6.0 [INFO] [stderr] Downloaded csscolorparser v0.6.2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 7b98bec6c5fc88abb29fba68aba0554e9e9b12be6790ef0b634d7c80fb0cf068 [INFO] running `Command { std: "docker" "start" "-a" "7b98bec6c5fc88abb29fba68aba0554e9e9b12be6790ef0b634d7c80fb0cf068", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "7b98bec6c5fc88abb29fba68aba0554e9e9b12be6790ef0b634d7c80fb0cf068", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "7b98bec6c5fc88abb29fba68aba0554e9e9b12be6790ef0b634d7c80fb0cf068", kill_on_drop: false }` [INFO] [stdout] 7b98bec6c5fc88abb29fba68aba0554e9e9b12be6790ef0b634d7c80fb0cf068 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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" "+562dee4820c458d823175268e41601d4c060588a" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] a1424cb0f7c29694782396519317053d74afb5669acf69b13a222be0fbbc0b4c [INFO] running `Command { std: "docker" "start" "-a" "a1424cb0f7c29694782396519317053d74afb5669acf69b13a222be0fbbc0b4c", kill_on_drop: false }` [INFO] [stderr] Compiling foldhash v0.2.0 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling indoc v2.0.7 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Compiling instability v0.3.11 [INFO] [stderr] Compiling unicode-width v0.2.2 [INFO] [stderr] Compiling convert_case v0.10.0 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling castaway v0.2.4 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling deranged v0.5.8 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling num_threads v0.1.7 [INFO] [stderr] Compiling compact_str v0.9.0 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling litrs v1.0.0 [INFO] [stderr] Compiling hashbrown v0.16.1 [INFO] [stderr] Compiling line-clipping v0.3.5 [INFO] [stderr] Compiling utf8parse v0.2.2 [INFO] [stderr] Compiling anstyle-query v1.1.5 [INFO] [stderr] Compiling itertools v0.14.0 [INFO] [stderr] Compiling anstyle-parse v0.2.7 [INFO] [stderr] Compiling is_terminal_polyfill v1.70.2 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling anstyle v1.0.13 [INFO] [stderr] Compiling colorchoice v1.0.4 [INFO] [stderr] Compiling clap_lex v1.0.0 [INFO] [stderr] Compiling document-features v0.2.12 [INFO] [stderr] Compiling anstream v0.6.21 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling lru v0.16.3 [INFO] [stderr] Compiling signal-hook-mio v0.2.5 [INFO] [stderr] Compiling time v0.3.47 [INFO] [stderr] Compiling unicode-truncate v2.0.1 [INFO] [stderr] Compiling terminal_size v0.4.3 [INFO] [stderr] Compiling clap_builder v4.5.60 [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 derive_more-impl v2.1.1 [INFO] [stderr] Compiling clap_derive v4.5.55 [INFO] [stderr] Compiling derive_more v2.1.1 [INFO] [stderr] Compiling crossterm v0.29.0 [INFO] [stderr] Compiling clap v4.5.60 [INFO] [stderr] Compiling kasuari v0.4.11 [INFO] [stderr] Compiling darling_macro v0.23.0 [INFO] [stderr] Compiling strum v0.27.2 [INFO] [stderr] Compiling ratatui-core v0.1.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 ratatui-macros v0.7.0 [INFO] [stderr] Compiling ratatui v0.30.0 [INFO] [stderr] Compiling tui-slider v0.3.2 [INFO] [stderr] Compiling tui-file-explorer v0.9.8 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 18.85s [INFO] running `Command { std: "docker" "inspect" "a1424cb0f7c29694782396519317053d74afb5669acf69b13a222be0fbbc0b4c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a1424cb0f7c29694782396519317053d74afb5669acf69b13a222be0fbbc0b4c", kill_on_drop: false }` [INFO] [stdout] a1424cb0f7c29694782396519317053d74afb5669acf69b13a222be0fbbc0b4c [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 45c4142e3788adc86152ef71cdd39da66d7974a5bc9006cc84ceed7e8d3553e0 [INFO] running `Command { std: "docker" "start" "-a" "45c4142e3788adc86152ef71cdd39da66d7974a5bc9006cc84ceed7e8d3553e0", kill_on_drop: false }` [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling getrandom v0.4.1 [INFO] [stderr] Compiling crossterm v0.29.0 [INFO] [stderr] Compiling terminal_size v0.4.3 [INFO] [stderr] Compiling tempfile v3.26.0 [INFO] [stderr] Compiling clap_builder v4.5.60 [INFO] [stderr] Compiling ratatui-crossterm v0.1.0 [INFO] [stderr] Compiling ratatui v0.30.0 [INFO] [stderr] Compiling tui-slider v0.3.2 [INFO] [stderr] Compiling clap v4.5.60 [INFO] [stderr] Compiling tui-file-explorer v0.9.8 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 15.84s [INFO] running `Command { std: "docker" "inspect" "45c4142e3788adc86152ef71cdd39da66d7974a5bc9006cc84ceed7e8d3553e0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "45c4142e3788adc86152ef71cdd39da66d7974a5bc9006cc84ceed7e8d3553e0", kill_on_drop: false }` [INFO] [stdout] 45c4142e3788adc86152ef71cdd39da66d7974a5bc9006cc84ceed7e8d3553e0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] b8a169166dd93da4dbee7aa1c561f584d772b778eef7524a9fd471fe409aae6c [INFO] running `Command { std: "docker" "start" "-a" "b8a169166dd93da4dbee7aa1c561f584d772b778eef7524a9fd471fe409aae6c", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.19s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/tui_file_explorer-0759ff8a4065a98f) [INFO] [stdout] [INFO] [stdout] running 534 tests [INFO] [stdout] test app::tests::app_new_open_with_editor_is_none ... ok [INFO] [stdout] test app::tests::app_options_default_editor_is_none ... ok [INFO] [stdout] test app::tests::app_options_default_cd_on_exit_false ... ok [INFO] [stdout] test app::tests::app_options_default_extensions_empty ... ok [INFO] [stdout] test app::tests::active_pane_mut_returns_left_when_left_is_active ... ok [INFO] [stdout] test app::tests::app_options_default_show_theme_panel_false ... ok [INFO] [stdout] test app::tests::app_options_default_show_hidden_false ... ok [INFO] [stdout] test app::tests::active_pane_mut_returns_right_when_right_is_active ... ok [INFO] [stdout] test app::tests::app_options_default_single_pane_false ... ok [INFO] [stdout] test app::tests::app_options_default_startup_log_is_empty ... ok [INFO] [stdout] test app::tests::app_options_default_sort_mode_is_name ... ok [INFO] [stdout] test app::tests::app_options_default_verbose_is_false ... ok [INFO] [stdout] test app::tests::app_options_default_theme_idx_zero ... ok [INFO] [stdout] test app::tests::active_pane_returns_right_when_switched ... ok [INFO] [stdout] test app::tests::active_pane_returns_left_by_default ... ok [INFO] [stdout] test app::tests::app_new_editor_field_is_from_options ... ok [INFO] [stdout] test app::tests::capital_c_toggles_cd_on_exit_off ... ok [INFO] [stdout] test app::tests::clipboard_item_copy_icon_and_label ... ok [INFO] [stdout] test app::tests::clipboard_item_count_multi ... ok [INFO] [stdout] test app::tests::clipboard_item_count_single ... ok [INFO] [stdout] test app::tests::clipboard_item_cut_icon_and_label ... ok [INFO] [stdout] test app::tests::capital_c_sets_status_message_on ... ok [INFO] [stdout] test app::tests::capital_c_toggles_cd_on_exit_on ... ok [INFO] [stdout] test app::tests::confirm_delete_many_clears_marks_on_both_panes ... ok [INFO] [stdout] test app::tests::capital_o_closes_options_panel_when_already_open ... ok [INFO] [stdout] test app::tests::capital_o_opens_options_panel ... ok [INFO] [stdout] test app::tests::app_new_debug_scroll_zero_by_default ... ok [INFO] [stdout] test app::tests::app_new_verbose_false_by_default ... ok [INFO] [stdout] test app::tests::app_log_does_nothing_when_not_verbose ... ok [INFO] [stdout] test app::tests::app_new_drains_startup_log_into_debug_log ... ok [INFO] [stdout] test app::tests::app_log_preserves_startup_log_order ... ok [INFO] [stdout] test app::tests::app_new_debug_log_empty_by_default ... ok [INFO] [stdout] test app::tests::app_new_inherits_verbose_from_options ... ok [INFO] [stdout] test app::tests::app_log_appends_when_verbose ... ok [INFO] [stdout] test app::tests::app_log_accepts_string_and_str ... ok [INFO] [stdout] test app::tests::capital_c_sets_status_message_off ... ok [INFO] [stdout] test app::tests::confirm_delete_many_partial_error_reports_both_counts ... ok [INFO] [stdout] test app::tests::confirm_delete_many_reloads_both_panes ... ok [INFO] [stdout] test app::tests::confirm_delete_many_sets_success_status ... ok [INFO] [stdout] test app::tests::confirm_delete_many_removes_directory_recursively ... ok [INFO] [stdout] test app::tests::confirm_delete_nonexistent_path_sets_error_status ... ok [INFO] [stdout] test app::tests::confirm_delete_reloads_both_panes ... ok [INFO] [stdout] test app::tests::confirm_delete_many_removes_all_files ... ok [INFO] [stdout] test app::tests::confirm_delete_removes_file_and_updates_status ... ok [INFO] [stdout] test app::tests::confirm_delete_removes_directory_recursively ... ok [INFO] [stdout] test app::tests::copy_dir_skips_symlinks_without_failing ... ok [INFO] [stdout] test app::tests::debug_scroll_up_increments ... ok [INFO] [stdout] test app::tests::do_paste_copy_dir_recursively ... ok [INFO] [stdout] test app::tests::debug_scroll_up_clamps_at_log_length ... ok [INFO] [stdout] test app::tests::editor_custom_cycle_resets_to_none ... ok [INFO] [stdout] test app::tests::editor_binary_none_returns_option_none ... ok [INFO] [stdout] test app::tests::editor_cycle_full_loop_returns_to_start ... ok [INFO] [stdout] test app::tests::editor_cycle_order ... ok [INFO] [stdout] test app::tests::editor_default_is_none ... ok [INFO] [stdout] test app::tests::editor_from_key_empty_returns_none ... ok [INFO] [stdout] test app::tests::editor_from_key_custom_prefix_strips_prefix ... ok [INFO] [stdout] test app::tests::editor_label_names ... ok [INFO] [stdout] test app::tests::editor_from_key_unknown_is_custom ... ok [INFO] [stdout] test app::tests::editor_none_serialises_as_none_key ... ok [INFO] [stdout] test app::tests::editor_to_key_round_trips ... ok [INFO] [stdout] test app::tests::e_key_with_no_editor_sets_error_snackbar ... ok [INFO] [stdout] test app::tests::do_paste_copy_clears_previous_error_status ... ok [INFO] [stdout] test app::tests::do_paste_copy_file_succeeds ... ok [INFO] [stdout] test app::tests::inactive_pane_is_left_when_right_is_active ... ok [INFO] [stdout] test app::tests::do_paste_success_status_mentions_filename ... ok [INFO] [stdout] test app::tests::do_paste_cut_file_removes_source ... ok [INFO] [stdout] test app::tests::debug_scroll_ignored_when_not_verbose ... ok [INFO] [stdout] test app::tests::copy_dir_skips_valid_symlink_to_file ... ok [INFO] [stdout] test app::tests::marks_cleared_on_ascend ... ok [INFO] [stdout] test app::tests::multi_delete_cancelled_sets_status_and_no_files_deleted ... ok [INFO] [stdout] test app::tests::new_cd_on_exit_false_by_default ... ok [INFO] [stdout] test app::tests::marks_cleared_on_directory_descend ... ok [INFO] [stdout] test app::tests::helix_binary_matches_what_is_on_path ... ok [INFO] [stdout] test app::tests::helix_binary_returns_hx_or_helix ... ok [INFO] [stdout] test app::tests::new_cd_on_exit_true_when_requested ... ok [INFO] [stdout] test app::tests::new_modal_is_none ... ok [INFO] [stdout] test app::tests::new_sets_default_active_pane_to_left ... ok [INFO] [stdout] test app::tests::new_show_options_panel_false_by_default ... ok [INFO] [stdout] test app::tests::new_show_theme_panel_false_by_default ... ok [INFO] [stdout] test app::tests::new_show_theme_panel_true_when_requested ... ok [INFO] [stdout] test app::tests::new_single_pane_false_by_default ... ok [INFO] [stdout] test app::tests::new_single_pane_true_when_requested ... ok [INFO] [stdout] test app::tests::new_snackbar_is_none ... ok [INFO] [stdout] test app::tests::editor_binary_names ... ok [INFO] [stdout] test app::tests::do_paste_error_sets_error_status ... ok [INFO] [stdout] test app::tests::enter_on_dir_always_navigates_not_opens_editor ... ok [INFO] [stdout] test app::tests::debug_scroll_down_decrements ... ok [INFO] [stdout] test app::tests::next_theme_never_exceeds_themes_len ... ok [INFO] [stdout] test app::tests::e_key_with_editor_does_not_set_snackbar ... ok [INFO] [stdout] test app::tests::next_theme_increments_idx ... ok [INFO] [stdout] test app::tests::notify_error_sets_error_snackbar ... ok [INFO] [stdout] test app::tests::key_release_after_yank_does_not_clobber_clipboard ... ok [INFO] [stdout] test app::tests::do_paste_reloads_both_panes ... ok [INFO] [stdout] test app::tests::notify_replaces_previous_snackbar ... ok [INFO] [stdout] test app::tests::enter_on_file_with_editor_sets_open_with_editor_not_selected ... ok [INFO] [stdout] test app::tests::pane_other_left_returns_right ... ok [INFO] [stdout] test app::tests::new_theme_idx_from_options_is_respected ... ok [INFO] [stdout] test app::tests::new_theme_idx_is_zero ... ok [INFO] [stdout] test app::tests::notify_sets_info_snackbar ... ok [INFO] [stdout] test app::tests::new_selected_is_none ... ok [INFO] [stdout] test app::tests::new_status_msg_is_empty ... ok [INFO] [stdout] test app::tests::enter_on_file_with_editor_none_sets_selected_and_exits ... ok [INFO] [stdout] test app::tests::inactive_pane_is_right_when_left_is_active ... ok [INFO] [stdout] test app::tests::new_themes_list_is_non_empty ... ok [INFO] [stdout] test app::tests::debug_scroll_down_clamps_at_zero ... ok [INFO] [stdout] test app::tests::opening_options_panel_closes_theme_panel ... ok [INFO] [stdout] test app::tests::key_repeat_after_yank_does_not_clobber_clipboard ... ok [INFO] [stdout] test app::tests::opening_theme_panel_closes_options_panel ... ok [INFO] [stdout] test app::tests::new_clipboard_is_empty ... ok [INFO] [stdout] test app::tests::paste_clipboard_path_with_no_filename_sets_status ... ok [INFO] [stdout] test app::tests::paste_error_sets_error_snackbar_notification ... ok [INFO] [stdout] test app::tests::paste_copy_creates_file_in_destination ... ok [INFO] [stdout] test app::tests::paste_cut_moves_file_and_clears_clipboard ... ok [INFO] [stdout] test app::tests::next_theme_wraps_around ... ok [INFO] [stdout] test app::tests::paste_existing_dst_raises_overwrite_modal ... ok [INFO] [stdout] test app::tests::paste_multi_copy_creates_all_files_in_destination ... ok [INFO] [stdout] test app::tests::paste_multi_cut_moves_all_files_and_clears_clipboard ... ok [INFO] [stdout] test app::tests::paste_multi_success_sets_snackbar ... ok [INFO] [stdout] test app::tests::paste_error_status_starts_with_error_prefix ... ok [INFO] [stdout] test app::tests::paste_same_dir_cut_is_skipped ... ok [INFO] [stdout] test app::tests::paste_with_empty_clipboard_sets_status ... ok [INFO] [stdout] test app::tests::prev_theme_decrements_idx ... ok [INFO] [stdout] test app::tests::prev_theme_never_exceeds_themes_len ... ok [INFO] [stdout] test app::tests::paste_success_sets_snackbar_notification ... ok [INFO] [stdout] test app::tests::prev_theme_wraps_around ... ok [INFO] [stdout] test app::tests::prompt_delete_on_empty_dir_does_not_set_modal ... ok [INFO] [stdout] test app::tests::prompt_delete_without_marks_raises_single_delete_modal ... ok [INFO] [stdout] test app::tests::single_pane_toggle_via_field ... ok [INFO] [stdout] test app::tests::snackbar_info_is_not_expired_immediately ... ok [INFO] [stdout] test app::tests::space_release_does_not_double_toggle_mark ... ok [INFO] [stdout] test app::tests::space_mark_advances_cursor_down ... ok [INFO] [stdout] test app::tests::space_mark_toggles_off_when_already_marked ... ok [INFO] [stdout] test app::tests::prompt_delete_with_marks_paths_are_sorted ... ok [INFO] [stdout] test app::tests::status_msg_starts_with_error_on_failed_paste ... ok [INFO] [stdout] test app::tests::tab_key_switches_active_pane_from_right_to_left ... ok [INFO] [stdout] test app::tests::status_msg_is_cleared_by_do_paste_on_success ... ok [INFO] [stdout] test app::tests::tab_key_switches_active_pane_from_left_to_right ... ok [INFO] [stdout] test app::tests::theme_desc_matches_preset_catalogue ... ok [INFO] [stdout] test app::tests::prompt_delete_raises_modal_when_entry_exists ... ok [INFO] [stdout] test app::tests::theme_desc_returns_non_empty_string ... ok [INFO] [stdout] test app::tests::tab_key_two_switches_return_to_original ... ok [INFO] [stdout] test app::tests::theme_name_and_desc_change_together_with_idx ... ok [INFO] [stdout] test app::tests::space_mark_adds_entry_to_marked_set ... ok [INFO] [stdout] test app::tests::snackbar_is_expired_when_past_deadline ... ok [INFO] [stdout] test app::tests::snackbar_error_is_not_expired_immediately ... ok [INFO] [stdout] test app::tests::theme_name_returns_str_for_idx_zero ... ok [INFO] [stdout] test app::tests::theme_name_matches_preset_catalogue ... ok [INFO] [stdout] test app::tests::theme_returns_correct_preset_object ... ok [INFO] [stdout] test app::tests::which_on_path_finds_existing_binary ... ok [INFO] [stdout] test app::tests::yank_copy_status_mentions_copied_and_filename ... ok [INFO] [stdout] test app::tests::pane_other_right_returns_left ... ok [INFO] [stdout] test app::tests::yank_active_pane_marks_take_priority_over_inactive_pane_marks ... ok [INFO] [stdout] test app::tests::yank_cut_status_mentions_cut_and_filename ... ok [INFO] [stdout] test app::tests::yank_cut_populates_clipboard_with_cut_op ... ok [INFO] [stdout] test app::tests::yank_inactive_marks_from_right_pane_when_active_is_left_with_no_marks ... ok [INFO] [stdout] test app::tests::yank_copy_populates_clipboard_with_copy_op ... ok [INFO] [stdout] test app::tests::which_on_path_returns_false_for_nonexistent_binary ... ok [INFO] [stdout] test app::tests::yank_sets_status_message ... ok [INFO] [stdout] test app::tests::yank_falls_back_to_cursor_when_no_marks_in_either_pane ... ok [INFO] [stdout] test app::tests::yank_on_empty_dir_does_not_set_clipboard ... ok [INFO] [stdout] test app::tests::prompt_delete_with_marks_raises_multi_delete_modal ... ok [INFO] [stdout] test dual_pane::tests::active_mut_returns_left_by_default ... ok [INFO] [stdout] test app::tests::yank_inactive_pane_marks_does_not_clear_active_pane_marks ... ok [INFO] [stdout] test app::tests::yank_inactive_pane_marks_clears_inactive_pane_marks ... ok [INFO] [stdout] test dual_pane::tests::active_mut_returns_right_when_right_is_active ... ok [INFO] [stdout] test app::tests::yank_with_marks_clears_marks_after_yank ... ok [INFO] [stdout] test app::tests::yank_with_marks_yanks_all_marked_files ... ok [INFO] [stdout] test dual_pane::tests::builder_allow_extension_accumulates ... ok [INFO] [stdout] test app::tests::yank_with_marks_status_mentions_count ... ok [INFO] [stdout] test app::tests::yank_uses_inactive_pane_marks_when_active_pane_has_none ... ok [INFO] [stdout] test dual_pane::tests::builder_without_right_dir_mirrors_left ... ok [INFO] [stdout] test dual_pane::tests::active_returns_right_after_focus_switch ... ok [INFO] [stdout] test dual_pane::tests::builder_extension_filter_applies_to_both_panes ... ok [INFO] [stdout] test dual_pane::tests::active_returns_left_by_default ... ok [INFO] [stdout] test dual_pane::tests::builder_default_active_side_is_left ... ok [INFO] [stdout] test dual_pane::tests::dual_pane_active_default_is_left ... ok [INFO] [stdout] test dual_pane::tests::builder_default_single_pane_is_false ... ok [INFO] [stdout] test dual_pane::tests::dual_pane_active_other_left_returns_right ... ok [INFO] [stdout] test dual_pane::tests::dual_pane_active_other_right_returns_left ... ok [INFO] [stdout] test dual_pane::tests::dual_pane_outcome_selected_carries_path ... ok [INFO] [stdout] test dual_pane::tests::dual_pane_outcome_dismissed_eq ... ok [INFO] [stdout] test dual_pane::tests::dual_pane_outcome_mkdir_created_carries_path ... ok [INFO] [stdout] test dual_pane::tests::dual_pane_outcome_pending_eq ... ok [INFO] [stdout] test dual_pane::tests::builder_show_hidden_applies_to_both_panes ... ok [INFO] [stdout] test dual_pane::tests::dual_pane_outcome_rename_completed_carries_path ... ok [INFO] [stdout] test dual_pane::tests::builder_sort_mode_applies_to_both_panes ... ok [INFO] [stdout] test dual_pane::tests::builder_right_dir_sets_independent_right_pane ... ok [INFO] [stdout] test dual_pane::tests::builder_extension_filter_limits_visible_files_on_both_panes ... ok [INFO] [stdout] test dual_pane::tests::builder_single_pane_true_when_requested ... ok [INFO] [stdout] test dual_pane::tests::dual_pane_outcome_selected_neq_dismissed ... ok [INFO] [stdout] test dual_pane::tests::dual_pane_outcome_touch_created_carries_path ... ok [INFO] [stdout] test dual_pane::tests::dual_pane_outcome_unhandled_eq ... ok [INFO] [stdout] test dual_pane::tests::focus_left_after_switch_to_right_restores_left ... ok [INFO] [stdout] test dual_pane::tests::focus_left_sets_active_to_left ... ok [INFO] [stdout] test dual_pane::tests::focus_right_after_switch_to_left_restores_right ... ok [INFO] [stdout] test dual_pane::tests::focus_right_sets_active_to_right ... ok [INFO] [stdout] test dual_pane::tests::inactive_after_focus_right_is_left ... ok [INFO] [stdout] test dual_pane::tests::inactive_returns_left_when_right_is_active ... ok [INFO] [stdout] test dual_pane::tests::esc_returns_dismissed ... ok [INFO] [stdout] test dual_pane::tests::inactive_returns_right_when_left_is_active ... ok [INFO] [stdout] test dual_pane::tests::inactive_after_focus_left_is_right ... ok [INFO] [stdout] test dual_pane::tests::navigation_keys_forwarded_to_active_pane ... ok [INFO] [stdout] test dual_pane::tests::mkdir_created_outcome_is_surfaced_not_collapsed ... ok [INFO] [stdout] test dual_pane::tests::enter_on_file_returns_selected ... ok [INFO] [stdout] test dual_pane::tests::q_key_returns_dismissed ... ok [INFO] [stdout] test dual_pane::tests::r_key_on_inactive_pane_does_not_activate_rename_there ... ok [INFO] [stdout] test dual_pane::tests::navigation_after_tab_affects_right_pane ... ok [INFO] [stdout] test dual_pane::tests::r_key_surfaces_rename_completed_from_active_pane ... ok [INFO] [stdout] test dual_pane::tests::reload_both_picks_up_new_files ... ok [INFO] [stdout] test dual_pane::tests::tab_does_not_affect_inactive_pane_cursor ... ok [INFO] [stdout] test dual_pane::tests::tab_switches_active_pane_from_left_to_right ... ok [INFO] [stdout] test dual_pane::tests::tab_returns_pending ... ok [INFO] [stdout] test dual_pane::tests::toggle_single_pane_flips_state ... ok [INFO] [stdout] test dual_pane::tests::toggle_single_pane_twice_returns_to_original ... ok [INFO] [stdout] test dual_pane::tests::toggle_single_pane_from_false_to_true ... ok [INFO] [stdout] test dual_pane::tests::tab_switches_active_pane_from_right_to_left ... ok [INFO] [stdout] test dual_pane::tests::touch_created_outcome_is_surfaced_not_collapsed ... ok [INFO] [stdout] test dual_pane::tests::unrecognised_key_returns_unhandled ... ok [INFO] [stdout] test dual_pane::tests::w_key_returns_pending ... ok [INFO] [stdout] test dual_pane::tests::w_key_toggles_single_pane_off ... ok [INFO] [stdout] test dual_pane::tests::w_key_toggles_single_pane_on ... ok [INFO] [stdout] test explorer::tests::backspace_in_search_pops_char_not_ascend ... ok [INFO] [stdout] test explorer::tests::backspace_still_ascends ... ok [INFO] [stdout] test explorer::tests::builder_show_hidden_shows_dotfiles ... ok [INFO] [stdout] test explorer::tests::builder_allow_extension_filters_entries ... ok [INFO] [stdout] test explorer::tests::builder_sort_mode_applied ... ok [INFO] [stdout] test explorer::tests::can_mark_multiple_entries ... ok [INFO] [stdout] test explorer::tests::capital_g_key_jumps_to_bottom ... ok [INFO] [stdout] test explorer::tests::end_key_jumps_to_bottom ... ok [INFO] [stdout] test explorer::tests::enter_on_file_still_confirms_and_exits ... ok [INFO] [stdout] test explorer::tests::clear_marks_empties_marked_set ... ok [INFO] [stdout] test explorer::tests::cursor_clamped_after_reload_with_fewer_entries ... ok [INFO] [stdout] test explorer::tests::entry_count_matches_entries_len ... ok [INFO] [stdout] test explorer::tests::default_sort_mode_is_name ... ok [INFO] [stdout] test explorer::tests::current_entry_returns_highlighted ... ok [INFO] [stdout] test explorer::tests::entry_icon_css_returns_palette ... ok [INFO] [stdout] test explorer::tests::dirs_listed_before_files ... ok [INFO] [stdout] test explorer::tests::ascend_at_root_sets_status ... ok [INFO] [stdout] test explorer::tests::ascend_at_root_does_not_panic ... ok [INFO] [stdout] test explorer::tests::entry_icon_directory ... ok [INFO] [stdout] test explorer::tests::entry_icon_dmg_returns_disc ... ok [INFO] [stdout] test explorer::tests::entry_icon_exe_returns_gear ... ok [INFO] [stdout] test explorer::tests::entry_icon_gz_returns_package ... ok [INFO] [stdout] test explorer::tests::entry_icon_html_returns_globe ... ok [INFO] [stdout] test explorer::tests::entry_icon_iso_returns_disc ... ok [INFO] [stdout] test explorer::tests::entry_icon_jpg_returns_image ... ok [INFO] [stdout] test explorer::tests::entry_icon_json_returns_gear ... ok [INFO] [stdout] test explorer::tests::entry_icon_lock_returns_lock ... ok [INFO] [stdout] test explorer::tests::entry_icon_md_returns_memo ... ok [INFO] [stdout] test explorer::tests::entry_icon_mp3_returns_music ... ok [INFO] [stdout] test explorer::tests::entry_icon_mp4_returns_film ... ok [INFO] [stdout] test explorer::tests::entry_icon_no_extension_returns_document ... ok [INFO] [stdout] test explorer::tests::entry_icon_pdf_returns_book ... ok [INFO] [stdout] test explorer::tests::entry_icon_png_returns_image ... ok [INFO] [stdout] test explorer::tests::entry_icon_py_returns_snake ... ok [INFO] [stdout] test explorer::tests::entry_icon_recognises_known_extensions ... ok [INFO] [stdout] test explorer::tests::entry_icon_svg_returns_palette ... ok [INFO] [stdout] test explorer::tests::entry_icon_tar_returns_package ... ok [INFO] [stdout] test explorer::tests::entry_icon_toml_returns_gear ... ok [INFO] [stdout] test explorer::tests::entry_icon_ttf_returns_font ... ok [INFO] [stdout] test explorer::tests::entry_icon_unknown_extension_returns_document ... ok [INFO] [stdout] test explorer::tests::entry_icon_zip_returns_package ... ok [INFO] [stdout] test explorer::tests::fmt_size_1_5_kb ... ok [INFO] [stdout] test explorer::tests::fmt_size_1_gb_boundary ... ok [INFO] [stdout] test explorer::tests::fmt_size_2_mb ... ok [INFO] [stdout] test explorer::tests::fmt_size_1023_bytes_stays_bytes ... ok [INFO] [stdout] test explorer::tests::fmt_size_1_mb_boundary ... ok [INFO] [stdout] test explorer::tests::fmt_size_exact_boundaries ... ok [INFO] [stdout] test explorer::tests::fmt_size_exactly_1_kb ... ok [INFO] [stdout] test explorer::tests::extension_filter_only_shows_matching_files ... ok [INFO] [stdout] test explorer::tests::esc_when_not_searching_dismisses ... ok [INFO] [stdout] test explorer::tests::fmt_size_formats_bytes ... ok [INFO] [stdout] test explorer::tests::extension_filter_is_case_insensitive ... ok [INFO] [stdout] test explorer::tests::fmt_size_large_value ... ok [INFO] [stdout] test explorer::tests::fmt_size_one_byte ... ok [INFO] [stdout] test explorer::tests::fmt_size_zero_bytes ... ok [INFO] [stdout] test explorer::tests::g_key_jumps_to_top ... ok [INFO] [stdout] test explorer::tests::handle_key_enter_on_dir_descends ... ok [INFO] [stdout] test explorer::tests::handle_key_backspace_ascends ... ok [INFO] [stdout] test explorer::tests::handle_key_down_moves_cursor ... ok [INFO] [stdout] test explorer::tests::handle_key_esc_dismisses ... ok [INFO] [stdout] test explorer::tests::home_key_jumps_to_top ... ok [INFO] [stdout] test explorer::tests::handle_key_enter_on_valid_file_selects ... ok [INFO] [stdout] test explorer::tests::is_empty_reflects_visible_entries ... ok [INFO] [stdout] test explorer::tests::is_at_root_false_for_subdir ... ok [INFO] [stdout] test explorer::tests::is_searching_false_after_esc_cancels_search ... ok [INFO] [stdout] test explorer::tests::is_searching_false_by_default ... ok [INFO] [stdout] test explorer::tests::h_key_ascends_to_parent ... ok [INFO] [stdout] test explorer::tests::load_entries_nonexistent_dir_returns_empty_vec ... ok [INFO] [stdout] test explorer::tests::j_key_moves_cursor_down ... ok [INFO] [stdout] test explorer::tests::load_entries_search_query_is_case_insensitive ... ok [INFO] [stdout] test explorer::tests::mkdir_mode_backspace_pops_via_macro ... ok [INFO] [stdout] test explorer::tests::l_key_descends_into_dir ... ok [INFO] [stdout] test explorer::tests::marks_cleared_when_ascending_to_parent ... ok [INFO] [stdout] test explorer::tests::load_entries_empty_dir_returns_empty_vec ... ok [INFO] [stdout] test explorer::tests::marks_cleared_when_descending_into_directory ... ok [INFO] [stdout] test explorer::tests::k_key_moves_cursor_up ... ok [INFO] [stdout] test explorer::tests::load_entries_dirs_always_precede_files ... ok [INFO] [stdout] test explorer::tests::load_entries_ext_filter_excludes_non_matching_files ... ok [INFO] [stdout] test explorer::tests::left_arrow_ascends_to_parent ... ok [INFO] [stdout] test explorer::tests::mkdir_mode_char_pushes_to_input_via_macro ... ok [INFO] [stdout] test explorer::tests::load_entries_hidden_excluded_by_default ... ok [INFO] [stdout] test explorer::tests::load_entries_hidden_included_when_show_hidden_true ... ok [INFO] [stdout] test explorer::tests::mkdir_mode_esc_cancels_via_macro ... ok [INFO] [stdout] test explorer::tests::is_rename_active_false_by_default ... ok [INFO] [stdout] test explorer::tests::load_entries_ext_filter_always_includes_dirs ... ok [INFO] [stdout] test explorer::tests::mkdir_mode_unknown_key_returns_pending_via_macro ... ok [INFO] [stdout] test explorer::tests::is_searching_true_after_slash_key ... ok [INFO] [stdout] test explorer::tests::marked_paths_returns_reference_to_marked_set ... ok [INFO] [stdout] test explorer::tests::move_down_at_bottom_does_not_overflow ... ok [INFO] [stdout] test explorer::tests::move_down_on_empty_dir_does_not_panic ... ok [INFO] [stdout] test explorer::tests::move_up_at_top_does_not_underflow ... ok [INFO] [stdout] test explorer::tests::move_down_increments_cursor ... ok [INFO] [stdout] test explorer::tests::move_up_clamps_at_zero ... ok [INFO] [stdout] test explorer::tests::move_up_on_empty_dir_does_not_panic ... ok [INFO] [stdout] test explorer::tests::page_up_at_top_does_not_underflow ... ok [INFO] [stdout] test explorer::tests::move_down_clamps_at_last ... ok [INFO] [stdout] test explorer::tests::navigate_to_resets_cursor_and_scroll ... ok [INFO] [stdout] test explorer::tests::no_filter_shows_all_files ... ok [INFO] [stdout] test explorer::tests::r_key_activates_rename_mode_with_prefilled_name ... ok [INFO] [stdout] test explorer::tests::navigate_to_accepts_path_ref ... ok [INFO] [stdout] test explorer::tests::rename_mode_char_pushes_to_input_via_macro ... ok [INFO] [stdout] test explorer::tests::navigate_to_resets_cursor_to_zero ... ok [INFO] [stdout] test explorer::tests::r_key_on_empty_dir_does_not_activate_rename ... ok [INFO] [stdout] test explorer::tests::rename_mode_backspace_pops_via_macro ... ok [INFO] [stdout] test explorer::tests::navigate_to_accepts_str_slice ... ok [INFO] [stdout] test explorer::tests::rename_mode_esc_cancels_via_macro ... ok [INFO] [stdout] test explorer::tests::rename_mode_cursor_moves_to_renamed_entry ... ok [INFO] [stdout] test explorer::tests::right_arrow_clears_marks_on_dir_descend ... ok [INFO] [stdout] test explorer::tests::new_loads_entries ... ok [INFO] [stdout] test explorer::tests::rename_mode_unrecognised_key_returns_pending_without_cancelling ... ok [INFO] [stdout] test explorer::tests::page_up_retreats_cursor_by_ten ... ok [INFO] [stdout] test explorer::tests::rename_mode_can_rename_directory ... ok [INFO] [stdout] test explorer::tests::rename_mode_esc_cancels_without_renaming ... ok [INFO] [stdout] test explorer::tests::right_arrow_clears_search_on_dir_descend ... ok [INFO] [stdout] test explorer::tests::right_arrow_descends_into_dir ... ok [INFO] [stdout] test explorer::tests::rename_mode_backspace_pops_last_char ... ok [INFO] [stdout] test explorer::tests::right_arrow_on_file_at_last_entry_does_not_overflow ... ok [INFO] [stdout] test explorer::tests::page_down_at_bottom_does_not_overflow ... ok [INFO] [stdout] test explorer::tests::search_backspace_pops_last_char ... ok [INFO] [stdout] test explorer::tests::q_key_dismisses ... ok [INFO] [stdout] test explorer::tests::rename_mode_chars_append_to_input ... ok [INFO] [stdout] test explorer::tests::search_backspace_on_empty_deactivates ... ok [INFO] [stdout] test explorer::tests::search_active_chars_append_to_query ... ok [INFO] [stdout] test explorer::tests::search_esc_clears_and_deactivates_returns_pending ... ok [INFO] [stdout] test explorer::tests::search_clears_on_directory_descend ... ok [INFO] [stdout] test explorer::tests::scroll_offset_clamped_after_reload_with_empty_entries ... ok [INFO] [stdout] test explorer::tests::rename_input_empty_by_default ... ok [INFO] [stdout] test explorer::tests::rename_mode_enter_with_empty_input_is_noop ... ok [INFO] [stdout] test explorer::tests::slash_activates_search_mode ... ok [INFO] [stdout] test explorer::tests::sort_size_desc_orders_largest_first ... ok [INFO] [stdout] test explorer::tests::space_key_toggles_mark_off ... ok [INFO] [stdout] test explorer::tests::search_filters_entries_by_name ... ok [INFO] [stdout] test explorer::tests::sort_extension_groups_by_ext ... ok [INFO] [stdout] test explorer::tests::search_is_case_insensitive ... ok [INFO] [stdout] test explorer::tests::sort_mode_cycles_on_s_key ... ok [INFO] [stdout] test explorer::tests::space_key_marks_current_entry ... ok [INFO] [stdout] test explorer::tests::set_extension_filter_updates_entries ... ok [INFO] [stdout] test explorer::tests::status_cleared_after_reload ... ok [INFO] [stdout] test explorer::tests::touch_mode_char_pushes_to_input_via_macro ... ok [INFO] [stdout] test explorer::tests::set_sort_mode_reloads ... ok [INFO] [stdout] test explorer::tests::toggle_mark_at_last_entry_does_not_overflow ... ok [INFO] [stdout] test explorer::tests::status_is_empty_on_fresh_explorer ... ok [INFO] [stdout] test explorer::tests::toggle_hidden_changes_visibility ... ok [INFO] [stdout] test explorer::tests::toggle_mark_adds_entry_to_marked_set ... ok [INFO] [stdout] test explorer::tests::toggle_mark_advances_cursor_down ... ok [INFO] [stdout] test explorer::tests::page_down_advances_cursor_by_ten ... ok [INFO] [stdout] test explorer::tests::search_query_empty_when_not_searching ... ok [INFO] [stdout] test explorer::tests::toggle_mark_removes_already_marked_entry ... ok [INFO] [stdout] test explorer::tests::rename_mode_unknown_key_returns_pending_via_macro ... ok [INFO] [stdout] test explorer::tests::rename_mode_enter_renames_file_and_returns_rename_completed ... ok [INFO] [stdout] test explorer::tests::right_arrow_on_file_moves_down_not_exits ... ok [INFO] [stdout] test explorer::tests::touch_mode_esc_cancels_via_macro ... ok [INFO] [stdout] test fs::tests::copy_dir_all_copies_single_file ... ok [INFO] [stdout] test fs::tests::resolve_output_path_print_dir_false_returns_original ... ok [INFO] [stdout] test fs::tests::copy_dir_all_empty_src_creates_empty_dst ... ok [INFO] [stdout] test fs::tests::copy_dir_all_leaves_source_intact ... ok [INFO] [stdout] test fs::tests::resolve_output_path_print_dir_true_returns_parent ... ok [INFO] [stdout] test palette::tests::all_presets_descriptions_are_non_empty ... ok [INFO] [stdout] test palette::tests::all_presets_contains_nord ... ok [INFO] [stdout] test palette::tests::all_presets_first_entry_is_default ... ok [INFO] [stdout] test fs::tests::copy_dir_all_nonexistent_src_returns_error ... ok [INFO] [stdout] test fs::tests::resolve_output_path_dir_path_returns_parent_dir ... ok [INFO] [stdout] test fs::tests::resolve_output_path_print_dir_true_at_root_returns_root ... ok [INFO] [stdout] test palette::tests::all_presets_contains_catppuccin_mocha ... ok [INFO] [stdout] test palette::tests::all_presets_contains_dracula ... ok [INFO] [stdout] test fs::tests::copy_dir_all_creates_dst_when_absent ... ok [INFO] [stdout] test explorer::tests::touch_mode_backspace_pops_via_macro ... ok [INFO] [stdout] test explorer::tests::search_clears_on_ascend ... ok [INFO] [stdout] test palette::tests::all_presets_count_is_at_least_27 ... ok [INFO] [stdout] test palette::tests::all_presets_is_non_empty ... ok [INFO] [stdout] test palette::tests::all_presets_names_are_non_empty ... ok [INFO] [stdout] test fs::tests::copy_dir_all_copies_nested_structure ... ok [INFO] [stdout] test palette::tests::all_presets_names_are_unique ... ok [INFO] [stdout] test fs::tests::copy_dir_all_overwrites_existing_file_in_dst ... ok [INFO] [stdout] test palette::tests::builder_accent_overrides_field ... ok [INFO] [stdout] test palette::tests::builder_brand_overrides_field ... ok [INFO] [stdout] test explorer::tests::touch_mode_unknown_key_returns_pending_via_macro ... ok [INFO] [stdout] test palette::tests::builder_chained_overrides_multiple_fields ... ok [INFO] [stdout] test palette::tests::builder_dim_overrides_field ... ok [INFO] [stdout] test palette::tests::builder_does_not_mutate_other_fields ... ok [INFO] [stdout] test palette::tests::builder_match_file_overrides_field ... ok [INFO] [stdout] test palette::tests::builder_sel_bg_overrides_field ... ok [INFO] [stdout] test palette::tests::builder_success_overrides_field ... ok [INFO] [stdout] test palette::tests::default_theme_dim_matches_constant ... ok [INFO] [stdout] test palette::tests::default_theme_dir_matches_constant ... ok [INFO] [stdout] test palette::tests::default_theme_fg_matches_constant ... ok [INFO] [stdout] test palette::tests::default_theme_sel_bg_matches_constant ... ok [INFO] [stdout] test palette::tests::default_theme_match_file_matches_constant ... ok [INFO] [stdout] test palette::tests::default_theme_success_matches_constant ... ok [INFO] [stdout] test palette::tests::named_preset_nord_differs_from_dracula ... ok [INFO] [stdout] test palette::tests::named_preset_dracula_differs_from_default ... ok [INFO] [stdout] test palette::tests::default_theme_brand_matches_constant ... ok [INFO] [stdout] test palette::tests::theme_clone_equals_original ... ok [INFO] [stdout] test palette::tests::builder_dir_overrides_field ... ok [INFO] [stdout] test palette::tests::builder_fg_overrides_field ... ok [INFO] [stdout] test palette::tests::default_theme_accent_matches_constant ... ok [INFO] [stdout] test explorer::tests::unrecognised_key_returns_unhandled ... ok [INFO] [stdout] test palette::tests::theme_partial_eq_reflexive ... ok [INFO] [stdout] test persistence::tests::app_state_clone_equals_original ... ok [INFO] [stdout] test persistence::tests::app_state_default_equals_default ... ok [INFO] [stdout] test persistence::tests::blank_lines_are_ignored ... ok [INFO] [stdout] test persistence::tests::last_dir_empty_value_loads_as_none ... ok [INFO] [stdout] test persistence::tests::full_state_round_trips ... ok [INFO] [stdout] test persistence::tests::empty_theme_value_loads_as_none ... ok [INFO] [stdout] test persistence::tests::comment_lines_are_ignored ... ok [INFO] [stdout] test persistence::tests::cd_on_exit_true_round_trips ... ok [INFO] [stdout] test persistence::tests::invalid_bool_value_yields_none ... ok [INFO] [stdout] test persistence::tests::empty_file_returns_default_state ... ok [INFO] [stdout] test persistence::tests::last_dir_right_is_none_on_fresh_install ... ok [INFO] [stdout] test persistence::tests::all_fields_independent_round_trips ... ok [INFO] [stdout] test persistence::tests::app_state_default_all_fields_none ... ok [INFO] [stdout] test persistence::tests::cd_on_exit_false_round_trips ... ok [INFO] [stdout] test persistence::tests::all_sort_modes_round_trip ... ok [INFO] [stdout] test persistence::tests::resolve_theme_idx_finds_default_theme_at_zero ... ok [INFO] [stdout] test persistence::tests::resolve_theme_idx_finds_named_theme ... ok [INFO] [stdout] test persistence::tests::resolve_theme_idx_normalises_hyphens_to_spaces ... ok [INFO] [stdout] test persistence::tests::resolve_theme_idx_unknown_name_returns_zero ... ok [INFO] [stdout] test persistence::tests::resolve_theme_idx_all_presets_are_found ... ok [INFO] [stdout] test persistence::tests::last_dir_for_nonexistent_path_loads_as_none ... ok [INFO] [stdout] test persistence::tests::show_hidden_true_round_trips ... ok [INFO] [stdout] test persistence::tests::resolve_theme_idx_is_case_insensitive ... ok [INFO] [stdout] test persistence::tests::missing_file_returns_default_state ... ok [INFO] [stdout] test persistence::tests::single_pane_false_round_trips ... ok [INFO] [stdout] test persistence::tests::single_pane_true_round_trips ... ok [INFO] [stdout] test persistence::tests::partial_state_leaves_absent_fields_as_none ... ok [INFO] [stdout] test persistence::tests::last_dir_round_trips_for_existing_directory ... ok [INFO] [stdout] test persistence::tests::malformed_lines_without_equals_are_skipped ... ok [INFO] [stdout] test persistence::tests::sort_mode_from_key_size_desc ... ok [INFO] [stdout] test persistence::tests::resolve_theme_idx_persisted_name_survives_round_trip ... ok [INFO] [stdout] test persistence::tests::sort_mode_from_key_unknown_returns_none ... ok [INFO] [stdout] test persistence::tests::sort_mode_from_key_extension ... ok [INFO] [stdout] test persistence::tests::sort_mode_from_key_name ... ok [INFO] [stdout] test persistence::tests::show_hidden_false_round_trips ... ok [INFO] [stdout] test persistence::tests::sort_mode_key_round_trips_all_variants ... ok [INFO] [stdout] test persistence::tests::sort_mode_to_key_extension ... ok [INFO] [stdout] test persistence::tests::sort_mode_to_key_name ... ok [INFO] [stdout] test persistence::tests::sort_mode_to_key_size_desc ... ok [INFO] [stdout] test persistence::tests::surrounding_whitespace_in_values_is_trimmed ... ok [INFO] [stdout] test persistence::tests::last_dir_right_is_preserved_when_single_pane_is_active ... ok [INFO] [stdout] test persistence::tests::unknown_sort_mode_value_yields_none ... ok [INFO] [stdout] test persistence::tests::legacy_theme_file_with_trailing_whitespace_is_trimmed ... ok [INFO] [stdout] test persistence::tests::last_dir_right_is_updated_when_dual_pane_is_active ... ok [INFO] [stdout] test persistence::tests::save_state_creates_parent_directories ... ok [INFO] [stdout] test persistence::tests::save_state_overwrites_previous_content ... ok [INFO] [stdout] test persistence::tests::value_containing_equals_sign_is_preserved ... ok [INFO] [stdout] test persistence::tests::unknown_keys_are_silently_ignored ... ok [INFO] [stdout] test persistence::tests::theme_names_with_spaces_and_hyphens_round_trip ... ok [INFO] [stdout] test types::tests::explorer_outcome_pending_equals_pending ... ok [INFO] [stdout] test types::tests::explorer_outcome_is_clone ... ok [INFO] [stdout] test render::tests::render_footer_mkdir_active_does_not_panic ... ok [INFO] [stdout] test persistence::tests::legacy_theme_file_content_is_readable ... ok [INFO] [stdout] test render::tests::render_footer_rename_active_does_not_panic ... ok [INFO] [stdout] test types::tests::explorer_outcome_rename_completed_carries_path ... ok [INFO] [stdout] test render::tests::render_footer_all_inactive_does_not_panic ... ok [INFO] [stdout] test types::tests::explorer_outcome_rename_completed_is_clone ... ok [INFO] [stdout] test types::tests::explorer_outcome_rename_completed_neq_touch_created ... ok [INFO] [stdout] test types::tests::explorer_outcome_dismissed_equals_dismissed ... ok [INFO] [stdout] test render::tests::render_footer_search_active_does_not_panic ... ok [INFO] [stdout] test types::tests::explorer_outcome_selected_carries_path ... ok [INFO] [stdout] test types::tests::explorer_outcome_selected_neq_dismissed ... ok [INFO] [stdout] test types::tests::explorer_outcome_unhandled_equals_unhandled ... ok [INFO] [stdout] test types::tests::fs_entry_construction_directory ... ok [INFO] [stdout] test types::tests::fs_entry_construction_file ... ok [INFO] [stdout] test types::tests::fs_entry_equality ... ok [INFO] [stdout] test types::tests::fs_entry_no_extension_is_empty_string ... ok [INFO] [stdout] test types::tests::sort_mode_default_is_name ... ok [INFO] [stdout] test types::tests::sort_mode_full_cycle_returns_to_start ... ok [INFO] [stdout] test types::tests::sort_mode_is_copy ... ok [INFO] [stdout] test types::tests::sort_mode_label_extension ... ok [INFO] [stdout] test types::tests::sort_mode_label_name ... ok [INFO] [stdout] test types::tests::sort_mode_label_size_desc ... ok [INFO] [stdout] test types::tests::sort_mode_next_extension_wraps_to_name ... ok [INFO] [stdout] test types::tests::sort_mode_next_name_gives_size_desc ... ok [INFO] [stdout] test types::tests::sort_mode_next_size_desc_gives_extension ... ok [INFO] [stdout] test ui::tests::action_bar_spans_contains_expected_key_labels ... ok [INFO] [stdout] test ui::tests::action_bar_spans_count_is_stable ... ok [INFO] [stdout] test ui::tests::action_bar_spans_description_spans_are_not_bold ... ok [INFO] [stdout] test ui::tests::action_bar_spans_description_spans_use_dim_colour ... ok [INFO] [stdout] test ui::tests::action_bar_spans_key_spans_are_bold ... ok [INFO] [stdout] test ui::tests::action_bar_spans_key_spans_use_accent_colour ... ok [INFO] [stdout] test ui::tests::default_app_debug_log_is_empty ... ok [INFO] [stdout] test ui::tests::default_app_verbose_is_false ... ok [INFO] [stdout] test render::tests::render_footer_touch_active_does_not_panic ... ok [INFO] [stdout] test ui::tests::nav_hints_description_spans_use_dim_colour ... ok [INFO] [stdout] test ui::tests::nav_hints_key_spans_are_bold ... ok [INFO] [stdout] test ui::tests::nav_hints_key_spans_use_accent_colour ... ok [INFO] [stdout] test ui::tests::nav_hints_spans_contain_arrow_keys ... ok [INFO] [stdout] test ui::tests::nav_hints_span_count_is_stable ... ok [INFO] [stdout] test ui::tests::nav_hints_spans_contain_search_and_sort ... ok [INFO] [stdout] test ui::tests::non_verbose_app_log_is_noop ... ok [INFO] [stdout] test ui::tests::snackbar_error_uses_brand_colour ... ok [INFO] [stdout] test ui::tests::snackbar_info_and_error_colours_are_distinct ... ok [INFO] [stdout] test ui::tests::render_debug_panel_shows_line_count ... ok [INFO] [stdout] test ui::tests::snackbar_geometry_height_is_three ... ok [INFO] [stdout] test ui::tests::snackbar_info_uses_success_colour ... ok [INFO] [stdout] test ui::tests::snackbar_is_expired_after_deadline ... ok [INFO] [stdout] test ui::tests::snackbar_is_not_expired_when_fresh ... ok [INFO] [stdout] test ui::tests::snackbar_message_is_preserved ... ok [INFO] [stdout] test ui::tests::snackbar_width_capped_to_area ... ok [INFO] [stdout] test ui::tests::snackbar_width_at_least_minimum ... ok [INFO] [stdout] test ui::tests::startup_log_followed_by_runtime_log_preserves_order ... ok [INFO] [stdout] test ui::tests::draw_with_verbose_small_terminal_does_not_panic ... ok [INFO] [stdout] test ui::tests::startup_log_transferred_into_debug_log ... ok [INFO] [stdout] test ui::tests::verbose_app_log_accumulates ... ok [INFO] [stdout] test ui::tests::render_debug_panel_contains_log_line ... ok [INFO] [stdout] test ui::tests::draw_with_verbose_tiny_terminal_does_not_panic ... ok [INFO] [stdout] test ui::tests::draw_with_verbose_many_log_lines_does_not_panic ... ok [INFO] [stdout] test ui::tests::draw_with_verbose_empty_log_does_not_panic ... ok [INFO] [stdout] test ui::tests::draw_with_verbose_does_not_panic ... ok [INFO] [stdout] test ui::tests::verbose_app_has_verbose_true ... ok [INFO] [stdout] test ui::tests::draw_without_verbose_does_not_panic ... ok [INFO] [stdout] test ui::tests::draw_with_verbose_tall_terminal_does_not_panic ... ok [INFO] [stdout] test ui::tests::draw_with_verbose_medium_terminal_does_not_panic ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 534 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.27s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/tfe-d7a7b475113eece5) [INFO] [stdout] [INFO] [stdout] running 157 tests [INFO] [stdout] test doctor::tests::check_binary_exe_missing ... ok [INFO] [stdout] test doctor::tests::check_config_existing_state_passes ... ok [INFO] [stdout] test doctor::tests::check_config_default_state_shows_defaults ... ok [INFO] [stdout] test doctor::tests::check_config_no_state_path_is_fail ... ok [INFO] [stdout] test doctor::tests::check_binary_exe_found_cargo_on_path ... ok [INFO] [stdout] test doctor::tests::check_binary_cargo_not_on_path ... ok [INFO] [stdout] test doctor::tests::check_config_fresh_install_is_warn ... ok [INFO] [stdout] test doctor::tests::check_editor_not_configured ... ok [INFO] [stdout] test doctor::tests::check_editor_configured_but_not_on_path ... ok [INFO] [stdout] test doctor::tests::check_editor_configured_and_on_path ... ok [INFO] [stdout] test doctor::tests::check_environment_shell_missing_is_warn_on_unix_pass_on_windows ... ok [INFO] [stdout] test doctor::tests::check_environment_all_set ... ok [INFO] [stdout] test doctor::tests::check_environment_cwd_missing_is_fail ... ok [INFO] [stdout] test doctor::tests::check_environment_home_missing_is_fail ... ok [INFO] [stdout] test doctor::tests::check_platform_always_passes ... ok [INFO] [stdout] test doctor::tests::check_shell_detected_no_rc_path_is_fail ... ok [INFO] [stdout] test doctor::tests::check_shell_detected_rc_missing_is_warn ... ok [INFO] [stdout] test doctor::tests::check_shell_detected_wrapper_installed ... ok [INFO] [stdout] test doctor::tests::check_shell_detected_wrapper_missing_is_fail ... ok [INFO] [stdout] test doctor::tests::check_shell_no_detection_is_warn ... ok [INFO] [stdout] test doctor::tests::check_terminal_good_size_and_tty ... ok [INFO] [stdout] test doctor::tests::check_terminal_small_and_not_tty_both_count ... ok [INFO] [stdout] test doctor::tests::check_terminal_small_size_is_warn ... ok [INFO] [stdout] test doctor::tests::fail_increments_failures ... ok [INFO] [stdout] test doctor::tests::fail_with_empty_hint_omits_arrow ... ok [INFO] [stdout] test doctor::tests::full_report_healthy_system ... ok [INFO] [stdout] test doctor::tests::heading_appears_in_output ... ok [INFO] [stdout] test doctor::tests::multiple_checks_accumulate_counters ... ok [INFO] [stdout] test doctor::tests::pass_increments_oks ... ok [INFO] [stdout] test doctor::tests::check_terminal_no_size_is_fail ... ok [INFO] [stdout] test doctor::tests::pass_line_contains_ok_marker ... ok [INFO] [stdout] test doctor::tests::check_terminal_not_tty_is_warn ... ok [INFO] [stdout] test doctor::tests::full_report_broken_install ... ok [INFO] [stdout] test doctor::tests::full_report_fresh_install ... ok [INFO] [stdout] test doctor::tests::detail_appears_indented ... ok [INFO] [stdout] test doctor::tests::summary_all_pass ... ok [INFO] [stdout] test doctor::tests::new_report_starts_empty ... ok [INFO] [stdout] test doctor::tests::summary_with_warnings ... ok [INFO] [stdout] test doctor::tests::warn_increments_warnings ... ok [INFO] [stdout] test doctor::tests::fail_line_contains_fail_marker ... ok [INFO] [stdout] test doctor::tests::warn_line_contains_warn_marker ... ok [INFO] [stdout] test info::tests::full_info_report_contains_all_sections ... ok [INFO] [stdout] test info::tests::full_info_report_fresh_install ... ok [INFO] [stdout] test info::tests::new_report_starts_empty ... ok [INFO] [stdout] test info::tests::section_binary_ends_with_blank ... ok [INFO] [stdout] test info::tests::output_joins_with_newlines ... ok [INFO] [stdout] test info::tests::section_binary_shows_exe_and_cwd ... ok [INFO] [stdout] test doctor::tests::warn_with_empty_hint_omits_arrow ... ok [INFO] [stdout] test info::tests::section_binary_shows_heading ... ok [INFO] [stdout] test doctor::tests::write_to_produces_newline_separated_output ... ok [INFO] [stdout] test doctor::tests::summary_with_failures ... ok [INFO] [stdout] test info::tests::section_binary_unknown_when_missing ... ok [INFO] [stdout] test info::tests::section_config_no_path ... ok [INFO] [stdout] test info::tests::section_config_shows_heading ... ok [INFO] [stdout] test info::tests::section_environment_shows_heading ... ok [INFO] [stdout] test info::tests::section_environment_shows_not_set_for_missing ... ok [INFO] [stdout] test info::tests::section_platform_shows_heading ... ok [INFO] [stdout] test info::tests::section_environment_shows_set_vars ... ok [INFO] [stdout] test info::tests::section_platform_ends_with_blank ... ok [INFO] [stdout] test info::tests::section_shell_detected ... ok [INFO] [stdout] test info::tests::section_shell_shows_heading ... ok [INFO] [stdout] test info::tests::section_terminal_ends_with_blank ... ok [INFO] [stdout] test info::tests::section_terminal_shows_heading ... ok [INFO] [stdout] test info::tests::section_shell_not_detected ... ok [INFO] [stdout] test info::tests::section_terminal_unknown_size ... ok [INFO] [stdout] test info::tests::section_terminal_tty_true ... ok [INFO] [stdout] test info::tests::section_version_followed_by_blank_line ... ok [INFO] [stdout] test info::tests::write_to_produces_newline_terminated_lines ... ok [INFO] [stdout] test info::tests::section_version_shows_tfe_prefix ... ok [INFO] [stdout] test shell_init::tests::auto_install_does_nothing_when_shell_unrecognised ... ok [INFO] [stdout] test info::tests::section_config_shows_path_and_exists ... ok [INFO] [stdout] test info::tests::section_config_shows_path_not_exists ... ok [INFO] [stdout] test info::tests::section_environment_ends_with_blank ... ok [INFO] [stdout] test info::tests::section_platform_shows_os_arch_family ... ok [INFO] [stdout] test info::tests::section_terminal_shows_size ... ok [INFO] [stdout] test info::tests::section_terminal_tty_false ... ok [INFO] [stdout] test shell_init::tests::auto_install_detects_wrapper_in_zprofile_and_skips_install ... ok [INFO] [stdout] test shell_init::tests::auto_install_already_installed_outcome_carries_rc_path ... ok [INFO] [stdout] test shell_init::tests::auto_install_detects_wrapper_in_zshenv_and_skips_install ... ok [INFO] [stdout] test shell_init::tests::auto_install_does_not_duplicate_when_already_installed ... ok [INFO] [stdout] test shell_init::tests::auto_install_bash_returns_installed_on_first_run ... ok [INFO] [stdout] source:/tmp/test_rc [INFO] [stdout] test shell_init::tests::auto_install_nushell_does_not_duplicate_when_already_installed ... ok [INFO] [stdout] test shell_init::tests::auto_install_writes_wrapper_on_first_run ... ok [INFO] [stdout] test shell_init::tests::auto_install_uses_zdotdir_when_set ... ok [INFO] [stdout] test shell_init::tests::auto_install_falls_back_to_zshenv_when_zshrc_absent ... ok [INFO] [stdout] test shell_init::tests::auto_install_nushell_returns_already_installed_when_config_nu_has_sentinel ... ok [INFO] [stdout] test shell_init::tests::auto_install_returns_unknown_shell_when_shell_is_none_and_home_is_none ... ok [INFO] [stdout] test shell_init::tests::auto_install_fish_returns_installed_on_first_run ... ok [INFO] [stdout] test shell_init::tests::auto_install_installed_outcome_carries_rc_path ... ok [INFO] [stdout] test shell_init::tests::auto_install_nushell_writes_config_nu_on_first_run ... ok [INFO] [stdout] test shell_init::tests::auto_install_returns_already_installed_on_second_run ... ok [INFO] [stdout] test shell_init::tests::auto_install_returns_installed_on_first_run ... ok [INFO] [stdout] test shell_init::tests::auto_install_zsh_already_installed_in_zshenv_returns_already_installed ... ok [INFO] [stdout] test shell_init::tests::display_returns_lowercase_name ... ok [INFO] [stdout] test shell_init::tests::emit_source_directive_does_not_panic ... ok [INFO] [stdout] test shell_init::tests::from_str_is_case_insensitive ... ok [INFO] [stdout] test shell_init::tests::from_str_recognises_nushell ... ok [INFO] [stdout] test shell_init::tests::from_str_returns_none_for_unknown ... ok [INFO] [stdout] test shell_init::tests::auto_install_nushell_creates_parent_directories_for_config_nu ... ok [INFO] [stdout] test shell_init::tests::install_does_not_duplicate_when_called_twice ... ok [INFO] [stdout] test shell_init::tests::install_nushell_creates_config_nu_when_missing ... ok [INFO] [stdout] test shell_init::tests::from_str_recognises_bash ... ok [INFO] [stdout] test shell_init::tests::from_str_recognises_fish ... ok [INFO] [stdout] test shell_init::tests::install_nushell_snippet_passes_is_installed ... ok [INFO] [stdout] test shell_init::tests::from_str_recognises_zsh ... ok [INFO] [stdout] test shell_init::tests::install_nushell_creates_parent_directories ... ok [INFO] [stdout] test shell_init::tests::install_or_print_bash_uses_bash_profile_when_present ... ok [INFO] [stdout] test shell_init::tests::install_creates_rc_file_when_missing ... ok [INFO] [stdout] test shell_init::tests::install_nushell_does_not_duplicate_when_called_twice ... ok [INFO] [stdout] test shell_init::tests::install_or_print_installs_when_rc_writable ... ok [INFO] [stdout] test shell_init::tests::is_installed_detects_hand_written_fish_wrapper ... ok [INFO] [stdout] test shell_init::tests::is_installed_nushell_returns_false_when_sentinel_absent ... ok [INFO] [stdout] test shell_init::tests::is_installed_nushell_returns_true_when_sentinel_present ... ok [INFO] [stdout] test shell_init::tests::from_str_recognises_powershell ... ok [INFO] [stdout] test shell_init::tests::rc_path_fish_falls_back_to_home_config ... ok [INFO] [stdout] test shell_init::tests::rc_path_fish_uses_xdg_config_home_when_set ... ok [INFO] [stdout] test shell_init::tests::rc_path_nu_returns_none_when_nu_config_dir_unset ... ok [INFO] [stdout] test shell_init::tests::rc_path_nu_uses_nu_config_dir ... ok [INFO] [stdout] test shell_init::tests::rc_path_powershell_falls_back_to_home_config_on_unix ... ok [INFO] [stdout] test shell_init::tests::rc_path_returns_none_when_home_unset ... ok [INFO] [stdout] test shell_init::tests::rc_path_zsh_defaults_to_zshrc ... ok [INFO] [stdout] test shell_init::tests::install_or_print_returns_already_installed_when_sentinel_present ... ok [INFO] [stdout] test shell_init::tests::rc_path_bash_ends_with_bashrc ... ok [INFO] [stdout] test shell_init::tests::rc_path_zsh_falls_back_to_zshenv_when_it_exists ... ok [INFO] [stdout] test shell_init::tests::is_installed_detects_sentinel_in_nushell_config ... ok [INFO] [stdout] test shell_init::tests::snippet_bash_contains_function_body ... ok [INFO] [stdout] test shell_init::tests::install_or_print_zsh_uses_zdotdir ... ok [INFO] [stdout] test shell_init::tests::install_or_print_zsh_falls_back_to_zshenv_when_zshrc_absent ... ok [INFO] [stdout] test shell_init::tests::is_installed_returns_false_for_empty_file ... ok [INFO] [stdout] test shell_init::tests::is_installed_detects_hand_written_bash_wrapper ... ok [INFO] [stdout] test shell_init::tests::is_installed_returns_false_for_missing_file ... ok [INFO] [stdout] test shell_init::tests::is_installed_returns_false_when_sentinel_absent ... ok [INFO] [stdout] test shell_init::tests::is_installed_returns_true_when_sentinel_present ... ok [INFO] [stdout] test shell_init::tests::is_installed_detects_sentinel_based_wrapper ... ok [INFO] [stdout] test shell_init::tests::rc_path_zsh_prefers_zdotdir ... ok [INFO] [stdout] test shell_init::tests::rc_path_zsh_prefers_zshrc_over_zshenv_when_both_exist ... ok [INFO] [stdout] test shell_init::tests::install_written_snippet_passes_is_installed ... ok [INFO] [stdout] test shell_init::tests::snippet_bash_handles_source_directive ... ok [INFO] [stdout] test shell_init::tests::snippet_fish_differs_from_bash ... ok [INFO] [stdout] test shell_init::tests::snippet_fish_handles_source_directive ... ok [INFO] [stdout] test shell_init::tests::snippet_nushell_contains_def_wrapped ... ok [INFO] [stdout] test shell_init::tests::snippet_contains_sentinel ... ok [INFO] [stdout] test shell_init::tests::snippet_nushell_contains_def_env ... ok [INFO] [stdout] test shell_init::tests::snippet_nushell_differs_from_bash ... ok [INFO] [stdout] test shell_init::tests::install_creates_parent_directories ... ok [INFO] [stdout] test shell_init::tests::snippet_nushell_uses_caret_tfe ... ok [INFO] [stdout] test shell_init::tests::install_appends_snippet_to_existing_file ... ok [INFO] [stdout] test shell_init::tests::snippet_pwsh_handles_source_directive ... ok [INFO] [stdout] test shell_init::tests::snippet_nushell_uses_str_trim ... ok [INFO] [stdout] test shell_init::tests::snippet_fish_contains_function_body ... ok [INFO] [stdout] test shell_init::tests::snippet_powershell_contains_function_body ... ok [INFO] [stdout] test shell_init::tests::snippet_nushell_does_not_use_each_closure ... ok [INFO] [stdout] test shell_init::tests::snippet_zsh_identical_to_bash ... ok [INFO] [stdout] test shell_init::tests::source_directive_prefix_constant_value ... ok [INFO] [stdout] test shell_init::tests::snippet_powershell_differs_from_bash ... ok [INFO] [stdout] test shell_init::tests::snippet_nushell_uses_cd ... ok [INFO] [stdout] test shell_init::tests::install_or_print_returns_printed_when_rc_not_writable ... FAILED [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] [INFO] [stdout] ---- shell_init::tests::install_or_print_returns_printed_when_rc_not_writable stdout ---- [INFO] [stdout] [INFO] [stdout] thread 'shell_init::tests::install_or_print_returns_printed_when_rc_not_writable' (666) panicked at src/shell_init.rs:1491:13: [INFO] [stdout] assertion `left == right` failed: read-only dir must fall back to stdout [INFO] [stdout] left: Installed("/tmp/.tmpM76ee6/readonly/.zshrc") [INFO] [stdout] right: PrintedToStdout [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x6141bd425a7a - std[31e582c13f4e914f]::backtrace_rs::backtrace::libunwind::trace [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9 [INFO] [stdout] 1: 0x6141bd425a7a - std[31e582c13f4e914f]::backtrace_rs::backtrace::trace_unsynchronized:: [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14 [INFO] [stdout] 2: 0x6141bd425a7a - std[31e582c13f4e914f]::sys::backtrace::_print_fmt [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/sys/backtrace.rs:74:9 [INFO] [stdout] 3: 0x6141bd425a7a - <::print::DisplayBacktrace as core[fa0eadad68403074]::fmt::Display>::fmt [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/sys/backtrace.rs:44:26 [INFO] [stdout] 4: 0x6141bd43a66a - ::fmt [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/core/src/fmt/rt.rs:152:76 [INFO] [stdout] 5: 0x6141bd43a66a - core[fa0eadad68403074]::fmt::write [INFO] [stdout] 6: 0x6141bd42a402 - std[31e582c13f4e914f]::io::default_write_fmt::> [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/io/mod.rs:639:11 [INFO] [stdout] 7: 0x6141bd42a402 - as std[31e582c13f4e914f]::io::Write>::write_fmt [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/io/mod.rs:1994:13 [INFO] [stdout] 8: 0x6141bd402c1f - ::print [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/sys/backtrace.rs:47:9 [INFO] [stdout] 9: 0x6141bd402c1f - std[31e582c13f4e914f]::panicking::default_hook::{closure#0} [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/panicking.rs:292:27 [INFO] [stdout] 10: 0x6141bd41d2f9 - std[31e582c13f4e914f]::panicking::default_hook [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/panicking.rs:316:9 [INFO] [stdout] 11: 0x6141bd39f6cc - core[fa0eadad68403074]::ops::function::Fn<(&'a std[31e582c13f4e914f]::panic::PanicHookInfo<'b>,), Output = ()> + core[fa0eadad68403074]::marker::Sync + core[fa0eadad68403074]::marker::Send> as core[fa0eadad68403074]::ops::function::Fn<(&std[31e582c13f4e914f]::panic::PanicHookInfo,)>>::call [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/alloc/src/boxed.rs:2254:9 [INFO] [stdout] 12: 0x6141bd39f6cc - test[7530e63dc052480e]::test_main_with_exit_callback::::{closure#0} [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/test/src/lib.rs:145:21 [INFO] [stdout] 13: 0x6141bd41d4b2 - core[fa0eadad68403074]::ops::function::Fn<(&'a std[31e582c13f4e914f]::panic::PanicHookInfo<'b>,), Output = ()> + core[fa0eadad68403074]::marker::Sync + core[fa0eadad68403074]::marker::Send> as core[fa0eadad68403074]::ops::function::Fn<(&std[31e582c13f4e914f]::panic::PanicHookInfo,)>>::call [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/alloc/src/boxed.rs:2254:9 [INFO] [stdout] 14: 0x6141bd41d4b2 - std[31e582c13f4e914f]::panicking::panic_with_hook [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/panicking.rs:833:13 [INFO] [stdout] 15: 0x6141bd402cd8 - std[31e582c13f4e914f]::panicking::panic_handler::{closure#0} [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/panicking.rs:698:13 [INFO] [stdout] 16: 0x6141bd3f7cb9 - std[31e582c13f4e914f]::sys::backtrace::__rust_end_short_backtrace:: [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/sys/backtrace.rs:182:18 [INFO] [stdout] 17: 0x6141bd403b9d - __rustc[fc8e3a9f23f26cb]::rust_begin_unwind [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/panicking.rs:689:5 [INFO] [stdout] 18: 0x6141bd43adbc - core[fa0eadad68403074]::panicking::panic_fmt [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/core/src/panicking.rs:80:14 [INFO] [stdout] 19: 0x6141bd43acd3 - core[fa0eadad68403074]::panicking::assert_failed_inner [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/core/src/panicking.rs:434:23 [INFO] [stdout] 20: 0x6141bd387672 - core[fa0eadad68403074]::panicking::assert_failed:: [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/core/src/panicking.rs:394:5 [INFO] [stdout] 21: 0x6141bd373604 - tfe[7a6aff15ec7b5ab8]::shell_init::tests::install_or_print_returns_printed_when_rc_not_writable [INFO] [stdout] at /opt/rustwide/workdir/src/shell_init.rs:1491:13 [INFO] [stdout] 22: 0x6141bd368567 - tfe[7a6aff15ec7b5ab8]::shell_init::tests::install_or_print_returns_printed_when_rc_not_writable::{closure#0} [INFO] [stdout] at /opt/rustwide/workdir/src/shell_init.rs:1471:63 [INFO] [stdout] 23: 0x6141bd38a546 - >::call_once [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 24: 0x6141bd3937ab - core[fa0eadad68403074]::result::Result<(), alloc[49b8922c36ca62de]::string::String> as core[fa0eadad68403074]::ops::function::FnOnce<()>>::call_once [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 25: 0x6141bd3937ab - test[7530e63dc052480e]::__rust_begin_short_backtrace::, fn() -> core[fa0eadad68403074]::result::Result<(), alloc[49b8922c36ca62de]::string::String>> [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/test/src/lib.rs:663:18 [INFO] [stdout] 26: 0x6141bd3a019b - test[7530e63dc052480e]::run_test_in_process::{closure#0} [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/test/src/lib.rs:686:74 [INFO] [stdout] 27: 0x6141bd3a019b - as core[fa0eadad68403074]::ops::function::FnOnce<()>>::call_once [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/core/src/panic/unwind_safe.rs:275:9 [INFO] [stdout] 28: 0x6141bd3a019b - std[31e582c13f4e914f]::panicking::catch_unwind::do_call::, core[fa0eadad68403074]::result::Result<(), alloc[49b8922c36ca62de]::string::String>> [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/panicking.rs:581:40 [INFO] [stdout] 29: 0x6141bd3a019b - std[31e582c13f4e914f]::panicking::catch_unwind::, core[fa0eadad68403074]::panic::unwind_safe::AssertUnwindSafe> [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/panicking.rs:544:19 [INFO] [stdout] 30: 0x6141bd3a019b - std[31e582c13f4e914f]::panic::catch_unwind::, core[fa0eadad68403074]::result::Result<(), alloc[49b8922c36ca62de]::string::String>> [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/panic.rs:359:14 [INFO] [stdout] 31: 0x6141bd3a019b - test[7530e63dc052480e]::run_test_in_process [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/test/src/lib.rs:686:27 [INFO] [stdout] 32: 0x6141bd3a019b - test[7530e63dc052480e]::run_test::{closure#0} [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/test/src/lib.rs:607:43 [INFO] [stdout] 33: 0x6141bd39a5f4 - test[7530e63dc052480e]::run_test::{closure#1} [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/test/src/lib.rs:637:41 [INFO] [stdout] 34: 0x6141bd39a5f4 - std[31e582c13f4e914f]::sys::backtrace::__rust_begin_short_backtrace:: [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/sys/backtrace.rs:166:18 [INFO] [stdout] 35: 0x6141bd3a2da2 - std[31e582c13f4e914f]::thread::lifecycle::spawn_unchecked::::{closure#1}::{closure#0} [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/thread/lifecycle.rs:91:13 [INFO] [stdout] 36: 0x6141bd3a2da2 - ::{closure#1}::{closure#0}> as core[fa0eadad68403074]::ops::function::FnOnce<()>>::call_once [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/core/src/panic/unwind_safe.rs:275:9 [INFO] [stdout] 37: 0x6141bd3a2da2 - std[31e582c13f4e914f]::panicking::catch_unwind::do_call::::{closure#1}::{closure#0}>, ()> [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/panicking.rs:581:40 [INFO] [stdout] 38: 0x6141bd3a2da2 - std[31e582c13f4e914f]::panicking::catch_unwind::<(), core[fa0eadad68403074]::panic::unwind_safe::AssertUnwindSafe::{closure#1}::{closure#0}>> [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/panicking.rs:544:19 [INFO] [stdout] 39: 0x6141bd3a2da2 - std[31e582c13f4e914f]::panic::catch_unwind::::{closure#1}::{closure#0}>, ()> [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/panic.rs:359:14 [INFO] [stdout] 40: 0x6141bd3a2da2 - std[31e582c13f4e914f]::thread::lifecycle::spawn_unchecked::::{closure#1} [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/thread/lifecycle.rs:89:26 [INFO] [stdout] 41: 0x6141bd3a2da2 - ::{closure#1} as core[fa0eadad68403074]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 42: 0x6141bd424e6f - + core[fa0eadad68403074]::marker::Send> as core[fa0eadad68403074]::ops::function::FnOnce<()>>::call_once [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/alloc/src/boxed.rs:2240:9 [INFO] [stdout] 43: 0x6141bd424e6f - ::new::thread_start [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/sys/thread/unix.rs:118:17 [INFO] [stdout] 44: 0x7721e2367aa4 - [INFO] [stdout] 45: 0x7721e23f4a64 - clone [INFO] [stdout] 46: 0x0 - [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] shell_init::tests::install_or_print_returns_printed_when_rc_not_writable [INFO] [stdout] [INFO] [stdout] test result: FAILED. 156 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s [INFO] [stdout] [INFO] [stderr] error: test failed, to rerun pass `--bin tfe` [INFO] running `Command { std: "docker" "inspect" "b8a169166dd93da4dbee7aa1c561f584d772b778eef7524a9fd471fe409aae6c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b8a169166dd93da4dbee7aa1c561f584d772b778eef7524a9fd471fe409aae6c", kill_on_drop: false }` [INFO] [stdout] b8a169166dd93da4dbee7aa1c561f584d772b778eef7524a9fd471fe409aae6c