[INFO] cloning repository https://github.com/rickyshin93/launch
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/rickyshin93/launch" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frickyshin93%2Flaunch", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frickyshin93%2Flaunch'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] a0f47f40ca5c9e7257cc6829c90d9cf24a616c67
[INFO] testing rickyshin93/launch against 1.97.0-beta.6 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frickyshin93%2Flaunch" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/rickyshin93/launch
[INFO] finished tweaking git repo https://github.com/rickyshin93/launch
[INFO] tweaked toml for git repo https://github.com/rickyshin93/launch written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/rickyshin93/launch on toolchain 1.97.0-beta.6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/rickyshin93/launch 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.97.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded clap_complete v4.6.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] d7dc648206430b2e025822d7f5e1dda63aa3d62b2f31c8b372f50807ad6fe456
[INFO] running `Command { std: "docker" "start" "d7dc648206430b2e025822d7f5e1dda63aa3d62b2f31c8b372f50807ad6fe456", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d7dc648206430b2e025822d7f5e1dda63aa3d62b2f31c8b372f50807ad6fe456", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d7dc648206430b2e025822d7f5e1dda63aa3d62b2f31c8b372f50807ad6fe456" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d7dc648206430b2e025822d7f5e1dda63aa3d62b2f31c8b372f50807ad6fe456", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d7dc648206430b2e025822d7f5e1dda63aa3d62b2f31c8b372f50807ad6fe456" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.184
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling option-ext v0.2.0
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling hashbrown v0.17.0
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling unicode-width v0.2.2
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling fuzzy-matcher v0.3.7
[INFO] [stderr]    Compiling unsafe-libyaml v0.2.11
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling shell-words v1.1.1
[INFO] [stderr]    Compiling colored v3.1.1
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling console v0.16.3
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling shellexpand v3.1.2
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling dialoguer v0.12.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling clap_derive v4.6.0
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling clap v4.6.0
[INFO] [stderr]    Compiling clap_complete v4.6.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling on v0.6.4 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 30.16s
[INFO] running `Command { std: "docker" "inspect" "d7dc648206430b2e025822d7f5e1dda63aa3d62b2f31c8b372f50807ad6fe456", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d7dc648206430b2e025822d7f5e1dda63aa3d62b2f31c8b372f50807ad6fe456" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling on v0.6.4 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 6.42s
[INFO] running `Command { std: "docker" "inspect" "d7dc648206430b2e025822d7f5e1dda63aa3d62b2f31c8b372f50807ad6fe456", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d7dc648206430b2e025822d7f5e1dda63aa3d62b2f31c8b372f50807ad6fe456" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.13s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/on-898e78c107e8c028)
[INFO] [stdout] 
[INFO] [stdout] running 211 tests
[INFO] [stdout] test config::tests::build_pane_command_escapes_dir_with_single_quote ... ok
[INFO] [stdout] test config::tests::build_pane_command_env_shell_escape ... ok
[INFO] [stdout] test browser::tests::empty_urls_is_ok ... ok
[INFO] [stdout] test config::tests::base_dir_path ... ok
[INFO] [stdout] test config::tests::build_pane_command_escapes_dir_with_spaces ... ok
[INFO] [stdout] test config::tests::build_pane_command_with_env ... ok
[INFO] [stdout] test config::tests::build_pane_command_with_logging ... ok
[INFO] [stdout] test config::tests::config_path_format ... ok
[INFO] [stdout] test config::tests::create_config_from_detection_roundtrip ... ok
[INFO] [stdout] test config::tests::build_pane_command_pid_file_not_in_tmp ... ok
[INFO] [stdout] test config::tests::detect_docker_compose ... ok
[INFO] [stdout] test config::tests::detect_empty_dir ... ok
[INFO] [stdout] test config::tests::detect_iterm_from_env ... ok
[INFO] [stdout] test config::tests::build_pane_command_with_cmd ... ok
[INFO] [stdout] test config::tests::detect_tmux_from_env ... ok
[INFO] [stdout] test config::tests::detect_ghostty_from_env ... ok
[INFO] [stdout] test config::tests::detect_docker_compose_yaml_extension ... ok
[INFO] [stdout] test config::tests::expand_tilde_paths ... ok
[INFO] [stdout] test config::tests::detect_unknown_terminal_returns_none ... ok
[INFO] [stdout] test config::tests::detect_node_project ... ok
[INFO] [stdout] test config::tests::detect_node_with_dev_script ... ok
[INFO] [stdout] test config::tests::detect_node_ignores_devdependencies_substring ... ok
[INFO] [stdout] test config::tests::detect_rust_project ... ok
[INFO] [stdout] test config::tests::detect_monorepo ... ok
[INFO] [stdout] test config::tests::filter_issues_keeps_only_named_project ... ok
[INFO] [stdout] test config::tests::home_or_fallback_uses_home_when_some ... ok
[INFO] [stdout] test config::tests::detect_node_with_start_only ... ok
[INFO] [stdout] test config::tests::home_or_fallback_falls_back_to_cwd ... ok
[INFO] [stdout] test config::tests::filter_issues_none_returns_all ... ok
[INFO] [stdout] test config::tests::merge_inherits_from_base ... ok
[INFO] [stdout] test config::tests::parse_and_expand_root ... ok
[INFO] [stdout] test config::tests::parse_minimal_yaml ... ok
[INFO] [stdout] test config::tests::parse_legacy_iterm_format ... ok
[INFO] [stdout] test config::tests::ensure_dirs_creates_directories ... ok
[INFO] [stdout] test config::tests::parse_browser_detailed_with_wait_for ... ok
[INFO] [stdout] test config::tests::merge_current_overrides_base ... ok
[INFO] [stdout] test config::tests::ensure_dirs_creates_pids_dir ... ok
[INFO] [stdout] test config::tests::create_and_load_template ... ok
[INFO] [stdout] test config::tests::parse_post_stop_hook ... ok
[INFO] [stdout] test config::tests::terminal_takes_priority_over_iterm ... ok
[INFO] [stdout] test config::tests::parse_top_level_env ... ok
[INFO] [stdout] test config::tests::parse_new_terminal_format ... ok
[INFO] [stdout] test config::tests::top_level_env_injected_into_panes_pane_wins ... ok
[INFO] [stdout] test config::tests::detect_python_django_manage_py ... ok
[INFO] [stdout] test config::tests::validate_reports_yaml_parse_error ... ok
[INFO] [stdout] test config::tests::parse_yaml_with_env ... ok
[INFO] [stdout] test config::tests::validate_returns_empty_for_present_extends ... ok
[INFO] [stdout] test config::tests::validate_reports_empty_hook_command ... ok
[INFO] [stdout] test config::tests::validate_returns_empty_for_valid_configs ... ok
[INFO] [stdout] test config::tests::parse_yaml_without_hooks ... ok
[INFO] [stdout] test config::tests::pid_file_path_under_state_pids ... ok
[INFO] [stdout] test config::tests::validate_ignores_non_yaml_files ... ok
[INFO] [stdout] test config::tests::validate_reports_missing_extends_base ... ok
[INFO] [stdout] test config::tests::parse_yaml_with_hooks ... ok
[INFO] [stdout] test editor::tests::empty_folders_is_ok ... ok
[INFO] [stdout] test editor::tests::no_folders_field_is_ok ... ok
[INFO] [stdout] test editor::tests::none_editor_is_ok ... ok
[INFO] [stdout] test ghostty::tests::empty_panes_is_ok ... ok
[INFO] [stdout] test ghostty::tests::grid_falls_back_to_vertical_for_2 ... ok
[INFO] [stdout] test ghostty::tests::grid_script_for_3_panes ... ok
[INFO] [stdout] test ghostty::tests::grid_script_for_4_panes ... ok
[INFO] [stdout] test ghostty::tests::grid_script_for_9_panes ... ok
[INFO] [stdout] test ghostty::tests::grid_term_index_maps_correctly_for_3 ... ok
[INFO] [stdout] test ghostty::tests::single_pane_no_splits ... ok
[INFO] [stdout] test ghostty::tests::vertical_script_contains_split ... ok
[INFO] [stdout] test iterm::tests::empty_panes_is_ok ... ok
[INFO] [stdout] test iterm::tests::grid_falls_back_to_vertical_for_2 ... ok
[INFO] [stdout] test ghostty::tests::grid_term_index_maps_correctly_for_4 ... ok
[INFO] [stdout] test iterm::tests::grid_script_for_4_panes ... ok
[INFO] [stdout] test ghostty::tests::multi_tab_vertical ... ok
[INFO] [stdout] test iterm::tests::grid_script_for_7_panes ... ok
[INFO] [stdout] test iterm::tests::grid_script_for_3_panes ... ok
[INFO] [stdout] test iterm::tests::multi_tab_vertical ... ok
[INFO] [stdout] test ghostty::tests::script_uses_ghostty_api ... ok
[INFO] [stdout] test iterm::tests::grid_script_for_9_panes ... ok
[INFO] [stdout] test iterm::tests::single_pane_no_splits ... ok
[INFO] [stdout] test iterm::tests::multi_tab_grid ... ok
[INFO] [stdout] test iterm::tests::vertical_script_contains_split ... ok
[INFO] [stdout] test list::conflict::tests::build_index_dup_port_takes_alphabetically_first ... ok
[INFO] [stdout] test list::conflict::tests::build_index_one_owner_per_port ... ok
[INFO] [stdout] test list::conflict::tests::match_conflict_returns_none_for_unknown_port ... ok
[INFO] [stdout] test list::conflict::tests::match_conflict_returns_none_when_no_port ... ok
[INFO] [stdout] test list::entry::tests::from_parts_no_browser_urls_yields_dash_columns ... ok
[INFO] [stdout] test list::conflict::tests::build_index_empty ... ok
[INFO] [stdout] test list::entry::tests::uptime_clamps_to_zero_on_clock_skew ... ok
[INFO] [stdout] test list::entry::tests::uptime_parses_rfc3339_and_returns_diff ... ok
[INFO] [stdout] test list::entry::tests::uptime_parses_naive_local_format_used_by_on_state_files ... ok
[INFO] [stdout] test list::entry::tests::uptime_returns_none_for_unparseable_string ... ok
[INFO] [stdout] test list::format::tests::exactly_one_day ... ok
[INFO] [stdout] test list::format::tests::exactly_one_hour ... ok
[INFO] [stdout] test list::format::tests::exactly_one_minute ... ok
[INFO] [stdout] test list::format::tests::just_under_a_day ... ok
[INFO] [stdout] test list::format::tests::just_under_a_minute ... ok
[INFO] [stdout] test list::format::tests::just_under_an_hour ... ok
[INFO] [stdout] test list::format::tests::none_renders_as_question_mark ... ok
[INFO] [stdout] test list::format::tests::several_days ... ok
[INFO] [stdout] test list::format::tests::several_hours ... ok
[INFO] [stdout] test list::format::tests::several_minutes ... ok
[INFO] [stdout] test list::format::tests::sub_minute_seconds ... ok
[INFO] [stdout] test list::format::tests::truncate_empty ... ok
[INFO] [stdout] test list::format::tests::truncate_exactly_one_over ... ok
[INFO] [stdout] test list::format::tests::truncate_max_zero_defends_to_one ... ok
[INFO] [stdout] test list::format::tests::truncate_several_over ... ok
[INFO] [stdout] test list::format::tests::truncate_single ... ok
[INFO] [stdout] test list::entry::tests::from_parts_running_carries_status_and_panes ... ok
[INFO] [stdout] test list::format::tests::truncate_under_limit ... ok
[INFO] [stdout] test list::format::tests::zero_seconds ... ok
[INFO] [stdout] test list::json::tests::empty_yields_two_empty_arrays ... ok
[INFO] [stdout] test list::json::tests::extra_urls_included_in_running ... ok
[INFO] [stdout] test list::json::tests::mixed_running_and_stopped_groups_correctly ... ok
[INFO] [stdout] test list::entry::tests::from_parts_remote_url_has_no_port ... ok
[INFO] [stdout] test list::json::tests::running_emits_full_shape ... ok
[INFO] [stdout] test list::json::tests::running_with_unparseable_started_at_yields_null_uptime ... ok
[INFO] [stdout] test list::entry::tests::from_parts_single_localhost_url_extracts_port ... ok
[INFO] [stdout] test list::json::tests::stopped_with_conflict_emits_conflict_with ... ok
[INFO] [stdout] test list::json::tests::stopped_only_with_no_url_uses_nulls ... ok
[INFO] [stdout] test list::tests::render_aligns_name_and_url_columns_across_running ... ok
[INFO] [stdout] test list::tests::render_empty_yields_empty_string ... ok
[INFO] [stdout] test list::tests::render_long_pane_list_is_truncated ... ok
[INFO] [stdout] test list::tests::render_running_with_extra_urls_shows_count_suffix ... ok
[INFO] [stdout] test config::tests::extends_detects_cycle ... ok
[INFO] [stdout] test list::tests::render_mixed_sections_separated_by_blank_line ... ok
[INFO] [stdout] test list::tests::render_single_running_row ... ok
[INFO] [stdout] test list::json::tests::field_order_is_stable_in_running_row ... ok
[INFO] [stdout] test list::json::tests::field_order_is_stable_in_stopped_row ... ok
[INFO] [stdout] test config::tests::extends_yaml_roundtrip ... ok
[INFO] [stdout] test list::tests::render_stopped_conflict_emits_warning_marker ... ok
[INFO] [stdout] test list::tests::sort_empty_input_is_noop ... ok
[INFO] [stdout] test list::tests::render_stopped_no_url_shows_dash ... ok
[INFO] [stdout] test list::tests::sort_only_running_alphabetical ... ok
[INFO] [stdout] test list::tests::sort_stopped_conflicts_before_clean ... ok
[INFO] [stdout] test config::tests::extends_supports_multi_level_inheritance ... ok
[INFO] [stdout] test list::tests::sort_running_alphabetical_then_stopped ... ok
[INFO] [stdout] test port::tests::extract_empty_inputs ... ok
[INFO] [stdout] test port::tests::first_localhost_port_127_0_0_1_with_port ... ok
[INFO] [stdout] test port::tests::extract_no_port_urls ... ok
[INFO] [stdout] test port::tests::first_localhost_port_garbage_returns_none ... ok
[INFO] [stdout] test port::tests::extract_from_localhost_urls ... ok
[INFO] [stdout] test port::tests::first_localhost_port_port_too_large_returns_none ... ok
[INFO] [stdout] test port::tests::first_localhost_port_with_path_and_query ... ok
[INFO] [stdout] test port::tests::first_localhost_port_no_port_returns_none ... ok
[INFO] [stdout] test port::tests::first_localhost_port_remote_host_returns_none ... ok
[INFO] [stdout] test port::tests::parse_empty_output ... ok
[INFO] [stdout] test list::entry::tests::from_parts_multiple_urls_splits_first_and_rest ... ok
[INFO] [stdout] test port::tests::parse_ipv6_listener ... ok
[INFO] [stdout] test port::tests::parse_multiple_ports_one_process ... ok
[INFO] [stdout] test port::tests::extract_combined_and_deduped ... ok
[INFO] [stdout] test port::tests::extract_from_commands ... ok
[INFO] [stdout] test port::tests::parse_multiple_processes ... ok
[INFO] [stdout] test git::tests::non_git_dir_ignored ... ok
[INFO] [stdout] test port::tests::parse_single_listener ... ok
[INFO] [stdout] test port::tests::check_ports_filters_to_requested ... ok
[INFO] [stdout] test port::tests::wait_for_tcp_succeeds_when_listening ... ok
[INFO] [stdout] test port::tests::first_localhost_port_localhost_with_port ... ok
[INFO] [stdout] test process::tests::descendants_empty_when_no_children ... ok
[INFO] [stdout] test process::tests::descendants_handles_bogus_cycle ... ok
[INFO] [stdout] test process::tests::descendants_walks_full_tree ... ok
[INFO] [stdout] test process::tests::non_interactive_false_for_unset_or_falsy ... ok
[INFO] [stdout] test process::tests::non_interactive_true_for_truthy_env ... ok
[INFO] [stdout] test process::tests::parse_port_action_defaults_to_skip ... ok
[INFO] [stdout] test process::tests::parse_port_action_abort ... ok
[INFO] [stdout] test process::tests::parse_port_action_kill ... ok
[INFO] [stdout] test process::tests::parse_yes_default_y_variants ... ok
[INFO] [stdout] test process::tests::parse_ps_pid_ppid_skips_header_and_garbage ... ok
[INFO] [stdout] test process::tests::parse_yes_default_empty_is_yes ... ok
[INFO] [stdout] test process::tests::parse_yes_default_no_variants ... ok
[INFO] [stdout] test selection::tests::duplicate_only_is_idempotent ... ok
[INFO] [stdout] test selection::tests::no_flags_selects_everything ... ok
[INFO] [stdout] test selection::tests::only_and_short_flags_take_union ... ok
[INFO] [stdout] test selection::tests::only_editor_equivalent_to_short_flag ... ok
[INFO] [stdout] test process::tests::run_hooks_warn_continue_returns_ok ... ok
[INFO] [stdout] test selection::tests::short_editor_flag_excludes_others ... ok
[INFO] [stdout] test selection::tests::short_flags_combine ... ok
[INFO] [stdout] test state::tests::dead_pid_is_not_alive ... ok
[INFO] [stdout] test state::tests::alive_pane_names_filters_dead ... ok
[INFO] [stdout] test process::tests::run_hooks_abort_on_fail_returns_err ... ok
[INFO] [stdout] test state::tests::is_running_false_when_no_state ... ok
[INFO] [stdout] test state::tests::pid_existing_without_permission_is_alive ... ok
[INFO] [stdout] test process::tests::run_hooks_uses_root_as_cwd ... ok
[INFO] [stdout] test state::tests::self_pid_is_alive ... ok
[INFO] [stdout] test state::tests::state_path_format ... ok
[INFO] [stdout] test state::tests::verify_pane_alive_dead_pid_is_dead ... ok
[INFO] [stdout] test state::tests::load_nonexistent_returns_none ... ok
[INFO] [stdout] test state::tests::save_and_load_roundtrip ... ok
[INFO] [stdout] test process::tests::run_hooks_injects_env ... ok
[INFO] [stdout] test state::tests::verify_pane_alive_without_lstart_falls_back_to_pid_check ... ok
[INFO] [stdout] test terminal::tests::default_attach_is_noop ... ok
[INFO] [stdout] test terminal::tests::default_capture_pane_returns_none ... ok
[INFO] [stdout] test terminal::tests::ghostty_backend_properties ... ok
[INFO] [stdout] test terminal::tests::iterm_backend_properties ... ok
[INFO] [stdout] test terminal::tests::tmux_backend_properties ... ok
[INFO] [stdout] test terminal::tests::unknown_type_returns_os_default ... ok
[INFO] [stdout] test tmux::tests::args_chain_single_pane_single_command ... ok
[INFO] [stdout] test tmux::tests::args_chain_three_panes ... ok
[INFO] [stdout] test tmux::tests::empty_panes_is_ok ... ok
[INFO] [stdout] test tmux::tests::session_name_format ... ok
[INFO] [stdout] test state::tests::process_started_at_for_self_is_some ... ok
[INFO] [stdout] test tmux::tests::args_chain_multi_window_when_max_per_tab ... ok
[INFO] [stdout] test state::tests::process_started_at_for_dead_pid_is_none ... ok
[INFO] [stdout] test port::tests::process_cmdline_for_dead_pid_is_none ... ok
[INFO] [stdout] test port::tests::process_cmdline_for_self_is_some ... ok
[INFO] [stdout] test state::tests::verify_pane_alive_with_stale_lstart_is_dead ... ok
[INFO] [stdout] test git::tests::deduplicates_dirs ... ok
[INFO] [stdout] test state::tests::verify_pane_alive_with_matching_lstart_is_alive ... ok
[INFO] [stdout] test git::tests::clean_repo_returns_empty ... ok
[INFO] [stdout] test config::tests::build_pane_command_without_cmd ... ok
[INFO] [stdout] test config::tests::parse_browser_legacy_list_still_works ... ok
[INFO] [stdout] test list::conflict::tests::match_conflict_returns_owner_when_port_in_use ... ok
[INFO] [stdout] test git::tests::dirty_repo_returns_count ... ok
[INFO] [stdout] test port::tests::kill_pid_terminates_sleep_process ... ok
[INFO] [stdout] test port::tests::wait_for_tcp_times_out_when_closed ... ok
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/on-59a1506669f89a56)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 211 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.44s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 211 tests
[INFO] [stdout] test browser::tests::empty_urls_is_ok ... ok
[INFO] [stdout] test config::tests::build_pane_command_escapes_dir_with_single_quote ... ok
[INFO] [stdout] test config::tests::build_pane_command_with_cmd ... ok
[INFO] [stdout] test config::tests::build_pane_command_escapes_dir_with_spaces ... ok
[INFO] [stdout] test config::tests::build_pane_command_with_env ... ok
[INFO] [stdout] test config::tests::build_pane_command_with_logging ... ok
[INFO] [stdout] test config::tests::config_path_format ... ok
[INFO] [stdout] test config::tests::build_pane_command_pid_file_not_in_tmp ... ok
[INFO] [stdout] test config::tests::build_pane_command_without_cmd ... ok
[INFO] [stdout] test config::tests::create_config_from_detection_roundtrip ... ok
[INFO] [stdout] test config::tests::detect_ghostty_from_env ... ok
[INFO] [stdout] test config::tests::detect_docker_compose_yaml_extension ... ok
[INFO] [stdout] test config::tests::detect_empty_dir ... ok
[INFO] [stdout] test config::tests::detect_unknown_terminal_returns_none ... ok
[INFO] [stdout] test config::tests::detect_tmux_from_env ... ok
[INFO] [stdout] test config::tests::detect_python_django_manage_py ... ok
[INFO] [stdout] test config::tests::detect_docker_compose ... ok
[INFO] [stdout] test config::tests::detect_iterm_from_env ... ok
[INFO] [stdout] test config::tests::ensure_dirs_creates_directories ... ok
[INFO] [stdout] test config::tests::ensure_dirs_creates_pids_dir ... ok
[INFO] [stdout] test config::tests::detect_node_ignores_devdependencies_substring ... ok
[INFO] [stdout] test config::tests::detect_node_project ... ok
[INFO] [stdout] test config::tests::detect_monorepo ... ok
[INFO] [stdout] test config::tests::create_and_load_template ... ok
[INFO] [stdout] test config::tests::detect_node_with_start_only ... ok
[INFO] [stdout] test config::tests::detect_rust_project ... ok
[INFO] [stdout] test config::tests::parse_browser_detailed_with_wait_for ... ok
[INFO] [stdout] test config::tests::parse_browser_legacy_list_still_works ... ok
[INFO] [stdout] test config::tests::extends_detects_cycle ... ok
[INFO] [stdout] test config::tests::extends_supports_multi_level_inheritance ... ok
[INFO] [stdout] test config::tests::detect_node_with_dev_script ... ok
[INFO] [stdout] test config::tests::base_dir_path ... ok
[INFO] [stdout] test config::tests::parse_new_terminal_format ... ok
[INFO] [stdout] test config::tests::extends_yaml_roundtrip ... ok
[INFO] [stdout] test config::tests::parse_post_stop_hook ... ok
[INFO] [stdout] test config::tests::filter_issues_keeps_only_named_project ... ok
[INFO] [stdout] test config::tests::filter_issues_none_returns_all ... ok
[INFO] [stdout] test config::tests::merge_current_overrides_base ... ok
[INFO] [stdout] test config::tests::parse_yaml_with_hooks ... ok
[INFO] [stdout] test config::tests::parse_yaml_without_hooks ... ok
[INFO] [stdout] test config::tests::parse_legacy_iterm_format ... ok
[INFO] [stdout] test config::tests::parse_minimal_yaml ... ok
[INFO] [stdout] test config::tests::expand_tilde_paths ... ok
[INFO] [stdout] test config::tests::parse_and_expand_root ... ok
[INFO] [stdout] test config::tests::home_or_fallback_falls_back_to_cwd ... ok
[INFO] [stdout] test config::tests::merge_inherits_from_base ... ok
[INFO] [stdout] test config::tests::home_or_fallback_uses_home_when_some ... ok
[INFO] [stdout] test editor::tests::no_folders_field_is_ok ... ok
[INFO] [stdout] test editor::tests::none_editor_is_ok ... ok
[INFO] [stdout] test ghostty::tests::empty_panes_is_ok ... ok
[INFO] [stdout] test ghostty::tests::grid_falls_back_to_vertical_for_2 ... ok
[INFO] [stdout] test ghostty::tests::grid_script_for_3_panes ... ok
[INFO] [stdout] test config::tests::validate_reports_yaml_parse_error ... ok
[INFO] [stdout] test config::tests::validate_reports_empty_hook_command ... ok
[INFO] [stdout] test config::tests::top_level_env_injected_into_panes_pane_wins ... ok
[INFO] [stdout] test config::tests::validate_ignores_non_yaml_files ... ok
[INFO] [stdout] test ghostty::tests::grid_script_for_4_panes ... ok
[INFO] [stdout] test config::tests::validate_returns_empty_for_present_extends ... ok
[INFO] [stdout] test ghostty::tests::multi_tab_vertical ... ok
[INFO] [stdout] test ghostty::tests::grid_script_for_9_panes ... ok
[INFO] [stdout] test config::tests::validate_reports_missing_extends_base ... ok
[INFO] [stdout] test ghostty::tests::grid_term_index_maps_correctly_for_4 ... ok
[INFO] [stdout] test ghostty::tests::grid_term_index_maps_correctly_for_3 ... ok
[INFO] [stdout] test config::tests::validate_returns_empty_for_valid_configs ... ok
[INFO] [stdout] test editor::tests::empty_folders_is_ok ... ok
[INFO] [stdout] test ghostty::tests::vertical_script_contains_split ... ok
[INFO] [stdout] test iterm::tests::grid_script_for_4_panes ... ok
[INFO] [stdout] test iterm::tests::grid_script_for_7_panes ... ok
[INFO] [stdout] test iterm::tests::grid_script_for_9_panes ... ok
[INFO] [stdout] test iterm::tests::empty_panes_is_ok ... ok
[INFO] [stdout] test iterm::tests::multi_tab_vertical ... ok
[INFO] [stdout] test iterm::tests::multi_tab_grid ... ok
[INFO] [stdout] test iterm::tests::vertical_script_contains_split ... ok
[INFO] [stdout] test iterm::tests::single_pane_no_splits ... ok
[INFO] [stdout] test list::conflict::tests::build_index_dup_port_takes_alphabetically_first ... ok
[INFO] [stdout] test list::conflict::tests::build_index_one_owner_per_port ... ok
[INFO] [stdout] test list::conflict::tests::match_conflict_returns_none_for_unknown_port ... ok
[INFO] [stdout] test git::tests::non_git_dir_ignored ... ok
[INFO] [stdout] test list::conflict::tests::match_conflict_returns_owner_when_port_in_use ... ok
[INFO] [stdout] test list::entry::tests::from_parts_no_browser_urls_yields_dash_columns ... ok
[INFO] [stdout] test list::entry::tests::from_parts_remote_url_has_no_port ... ok
[INFO] [stdout] test list::entry::tests::from_parts_multiple_urls_splits_first_and_rest ... ok
[INFO] [stdout] test config::tests::build_pane_command_env_shell_escape ... ok
[INFO] [stdout] test config::tests::parse_top_level_env ... ok
[INFO] [stdout] test config::tests::parse_yaml_with_env ... ok
[INFO] [stdout] test config::tests::pid_file_path_under_state_pids ... ok
[INFO] [stdout] test config::tests::terminal_takes_priority_over_iterm ... ok
[INFO] [stdout] test ghostty::tests::script_uses_ghostty_api ... ok
[INFO] [stdout] test list::entry::tests::uptime_parses_rfc3339_and_returns_diff ... ok
[INFO] [stdout] test ghostty::tests::single_pane_no_splits ... ok
[INFO] [stdout] test list::entry::tests::uptime_returns_none_for_unparseable_string ... ok
[INFO] [stdout] test iterm::tests::grid_falls_back_to_vertical_for_2 ... ok
[INFO] [stdout] test list::format::tests::exactly_one_day ... ok
[INFO] [stdout] test list::format::tests::exactly_one_hour ... ok
[INFO] [stdout] test list::format::tests::just_under_a_day ... ok
[INFO] [stdout] test iterm::tests::grid_script_for_3_panes ... ok
[INFO] [stdout] test list::conflict::tests::build_index_empty ... ok
[INFO] [stdout] test list::conflict::tests::match_conflict_returns_none_when_no_port ... ok
[INFO] [stdout] test list::format::tests::just_under_a_minute ... ok
[INFO] [stdout] test list::entry::tests::uptime_parses_naive_local_format_used_by_on_state_files ... ok
[INFO] [stdout] test list::format::tests::just_under_an_hour ... ok
[INFO] [stdout] test list::format::tests::none_renders_as_question_mark ... ok
[INFO] [stdout] test list::format::tests::several_days ... ok
[INFO] [stdout] test list::format::tests::several_hours ... ok
[INFO] [stdout] test list::format::tests::several_minutes ... ok
[INFO] [stdout] test list::entry::tests::from_parts_running_carries_status_and_panes ... ok
[INFO] [stdout] test list::format::tests::sub_minute_seconds ... ok
[INFO] [stdout] test list::format::tests::truncate_empty ... ok
[INFO] [stdout] test list::format::tests::truncate_exactly_one_over ... ok
[INFO] [stdout] test list::format::tests::exactly_one_minute ... ok
[INFO] [stdout] test list::format::tests::truncate_several_over ... ok
[INFO] [stdout] test list::format::tests::truncate_max_zero_defends_to_one ... ok
[INFO] [stdout] test list::format::tests::truncate_single ... ok
[INFO] [stdout] test list::format::tests::zero_seconds ... ok
[INFO] [stdout] test list::json::tests::empty_yields_two_empty_arrays ... ok
[INFO] [stdout] test list::json::tests::extra_urls_included_in_running ... ok
[INFO] [stdout] test list::json::tests::field_order_is_stable_in_running_row ... ok
[INFO] [stdout] test list::format::tests::truncate_under_limit ... ok
[INFO] [stdout] test list::json::tests::field_order_is_stable_in_stopped_row ... ok
[INFO] [stdout] test list::json::tests::running_with_unparseable_started_at_yields_null_uptime ... ok
[INFO] [stdout] test list::json::tests::mixed_running_and_stopped_groups_correctly ... ok
[INFO] [stdout] test list::json::tests::stopped_with_conflict_emits_conflict_with ... ok
[INFO] [stdout] test list::json::tests::running_emits_full_shape ... ok
[INFO] [stdout] test list::tests::render_empty_yields_empty_string ... ok
[INFO] [stdout] test list::json::tests::stopped_only_with_no_url_uses_nulls ... ok
[INFO] [stdout] test list::tests::render_mixed_sections_separated_by_blank_line ... ok
[INFO] [stdout] test list::tests::render_long_pane_list_is_truncated ... ok
[INFO] [stdout] test list::tests::render_running_with_extra_urls_shows_count_suffix ... ok
[INFO] [stdout] test list::tests::sort_only_running_alphabetical ... ok
[INFO] [stdout] test list::tests::render_stopped_conflict_emits_warning_marker ... ok
[INFO] [stdout] test list::tests::sort_running_alphabetical_then_stopped ... ok
[INFO] [stdout] test list::tests::render_aligns_name_and_url_columns_across_running ... ok
[INFO] [stdout] test list::tests::render_stopped_no_url_shows_dash ... ok
[INFO] [stdout] test list::tests::sort_empty_input_is_noop ... ok
[INFO] [stdout] test list::tests::sort_stopped_conflicts_before_clean ... ok
[INFO] [stdout] test port::tests::extract_empty_inputs ... ok
[INFO] [stdout] test port::tests::check_ports_filters_to_requested ... ok
[INFO] [stdout] test port::tests::first_localhost_port_no_port_returns_none ... ok
[INFO] [stdout] test port::tests::extract_from_localhost_urls ... ok
[INFO] [stdout] test port::tests::first_localhost_port_port_too_large_returns_none ... ok
[INFO] [stdout] test port::tests::first_localhost_port_remote_host_returns_none ... ok
[INFO] [stdout] test port::tests::parse_ipv6_listener ... ok
[INFO] [stdout] test list::entry::tests::from_parts_single_localhost_url_extracts_port ... ok
[INFO] [stdout] test port::tests::parse_multiple_ports_one_process ... ok
[INFO] [stdout] test list::entry::tests::uptime_clamps_to_zero_on_clock_skew ... ok
[INFO] [stdout] test port::tests::first_localhost_port_with_path_and_query ... ok
[INFO] [stdout] test list::tests::render_single_running_row ... ok
[INFO] [stdout] test port::tests::extract_combined_and_deduped ... ok
[INFO] [stdout] test port::tests::extract_from_commands ... ok
[INFO] [stdout] test port::tests::parse_empty_output ... ok
[INFO] [stdout] test port::tests::extract_no_port_urls ... ok
[INFO] [stdout] test port::tests::first_localhost_port_garbage_returns_none ... ok
[INFO] [stdout] test port::tests::first_localhost_port_localhost_with_port ... ok
[INFO] [stdout] test port::tests::parse_multiple_processes ... ok
[INFO] [stdout] test port::tests::wait_for_tcp_succeeds_when_listening ... ok
[INFO] [stdout] test port::tests::first_localhost_port_127_0_0_1_with_port ... ok
[INFO] [stdout] test port::tests::parse_single_listener ... ok
[INFO] [stdout] test process::tests::descendants_empty_when_no_children ... ok
[INFO] [stdout] test process::tests::descendants_handles_bogus_cycle ... ok
[INFO] [stdout] test process::tests::non_interactive_false_for_unset_or_falsy ... ok
[INFO] [stdout] test process::tests::parse_yes_default_empty_is_yes ... ok
[INFO] [stdout] test process::tests::non_interactive_true_for_truthy_env ... ok
[INFO] [stdout] test process::tests::parse_port_action_abort ... ok
[INFO] [stdout] test process::tests::parse_ps_pid_ppid_skips_header_and_garbage ... ok
[INFO] [stdout] test process::tests::parse_port_action_kill ... ok
[INFO] [stdout] test process::tests::descendants_walks_full_tree ... ok
[INFO] [stdout] test process::tests::parse_port_action_defaults_to_skip ... ok
[INFO] [stdout] test process::tests::parse_yes_default_no_variants ... ok
[INFO] [stdout] test process::tests::run_hooks_warn_continue_returns_ok ... ok
[INFO] [stdout] test process::tests::parse_yes_default_y_variants ... ok
[INFO] [stdout] test git::tests::dirty_repo_returns_count ... ok
[INFO] [stdout] test git::tests::deduplicates_dirs ... ok
[INFO] [stdout] test selection::tests::duplicate_only_is_idempotent ... ok
[INFO] [stdout] test selection::tests::no_flags_selects_everything ... ok
[INFO] [stdout] test selection::tests::only_and_short_flags_take_union ... ok
[INFO] [stdout] test selection::tests::short_flags_combine ... ok
[INFO] [stdout] test state::tests::alive_pane_names_filters_dead ... ok
[INFO] [stdout] test state::tests::is_running_false_when_no_state ... ok
[INFO] [stdout] test state::tests::load_nonexistent_returns_none ... ok
[INFO] [stdout] test state::tests::self_pid_is_alive ... ok
[INFO] [stdout] test state::tests::dead_pid_is_not_alive ... ok
[INFO] [stdout] test state::tests::pid_existing_without_permission_is_alive ... ok
[INFO] [stdout] test state::tests::save_and_load_roundtrip ... ok
[INFO] [stdout] test selection::tests::only_editor_equivalent_to_short_flag ... ok
[INFO] [stdout] test state::tests::state_path_format ... ok
[INFO] [stdout] test state::tests::verify_pane_alive_dead_pid_is_dead ... ok
[INFO] [stdout] test selection::tests::short_editor_flag_excludes_others ... ok
[INFO] [stdout] test state::tests::verify_pane_alive_without_lstart_falls_back_to_pid_check ... ok
[INFO] [stdout] test terminal::tests::default_capture_pane_returns_none ... ok
[INFO] [stdout] test process::tests::run_hooks_abort_on_fail_returns_err ... ok
[INFO] [stdout] test terminal::tests::iterm_backend_properties ... ok
[INFO] [stdout] test terminal::tests::ghostty_backend_properties ... ok
[INFO] [stdout] test process::tests::run_hooks_uses_root_as_cwd ... ok
[INFO] [stdout] test terminal::tests::default_attach_is_noop ... ok
[INFO] [stdout] test terminal::tests::tmux_backend_properties ... ok
[INFO] [stdout] test tmux::tests::empty_panes_is_ok ... ok
[INFO] [stdout] test tmux::tests::args_chain_multi_window_when_max_per_tab ... ok
[INFO] [stdout] test tmux::tests::args_chain_single_pane_single_command ... ok
[INFO] [stdout] test tmux::tests::args_chain_three_panes ... ok
[INFO] [stdout] test tmux::tests::session_name_format ... ok
[INFO] [stdout] test port::tests::process_cmdline_for_dead_pid_is_none ... ok
[INFO] [stdout] test terminal::tests::unknown_type_returns_os_default ... ok
[INFO] [stdout] test state::tests::process_started_at_for_dead_pid_is_none ... ok
[INFO] [stdout] test state::tests::process_started_at_for_self_is_some ... ok
[INFO] [stdout] test state::tests::verify_pane_alive_with_stale_lstart_is_dead ... ok
[INFO] [stdout] test git::tests::clean_repo_returns_empty ... ok
[INFO] [stdout] test port::tests::process_cmdline_for_self_is_some ... ok
[INFO] [stdout] test state::tests::verify_pane_alive_with_matching_lstart_is_alive ... ok
[INFO] [stdout] test process::tests::run_hooks_injects_env ... ok
[INFO] [stdout] test port::tests::kill_pid_terminates_sleep_process ... ok
[INFO] [stdout] test port::tests::wait_for_tcp_times_out_when_closed ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 211 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.45s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]      Running tests/list_v2.rs (/opt/rustwide/target/debug/deps/list_v2-39cb38fdcc2d3db9)
[INFO] [stdout] running 4 tests
[INFO] [stdout] test list_json_empty_when_no_configs ... ok
[INFO] [stdout] test list_tty_no_projects_message_when_no_configs ... ok
[INFO] [stdout] test list_json_groups_running_and_stopped_and_marks_conflict ... ok
[INFO] [stderr]    Doc-tests on
[INFO] [stdout] test list_tty_shows_running_then_stopped_with_conflict_marker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "d7dc648206430b2e025822d7f5e1dda63aa3d62b2f31c8b372f50807ad6fe456", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d7dc648206430b2e025822d7f5e1dda63aa3d62b2f31c8b372f50807ad6fe456", kill_on_drop: false }`
[INFO] [stdout] d7dc648206430b2e025822d7f5e1dda63aa3d62b2f31c8b372f50807ad6fe456
