[INFO] fetching crate spout 0.2.1...
[INFO] testing spout-0.2.1 against 1.100.0-beta.1 for beta-1.100-2
[INFO] extracting crate spout 0.2.1 into /workspace/builds/worker-5-tc2/source
[INFO] started tweaking crates.io crate spout 0.2.1
[INFO] finished tweaking crates.io crate spout 0.2.1
[INFO] tweaked toml for crates.io crate spout 0.2.1 written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate spout 0.2.1 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate spout 0.2.1 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.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/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:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] f2bcdb217822a6096dd98731f3194ba2953d9fe405ea728178a4e44b31f0a50d
[INFO] running `Command { std: "docker" "start" "f2bcdb217822a6096dd98731f3194ba2953d9fe405ea728178a4e44b31f0a50d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f2bcdb217822a6096dd98731f3194ba2953d9fe405ea728178a4e44b31f0a50d", 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" "f2bcdb217822a6096dd98731f3194ba2953d9fe405ea728178a4e44b31f0a50d" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f2bcdb217822a6096dd98731f3194ba2953d9fe405ea728178a4e44b31f0a50d", 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" "f2bcdb217822a6096dd98731f3194ba2953d9fe405ea728178a4e44b31f0a50d" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.185
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling option-ext v0.2.0
[INFO] [stderr]    Compiling hashbrown v0.17.0
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling unsafe-libyaml v0.2.11
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling unicode-width v0.2.0
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling fd-lock v4.0.4
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling clap_complete v4.6.2
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling serde_yaml_ng v0.10.0
[INFO] [stderr]    Compiling spout v0.2.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 21.91s
[INFO] running `Command { std: "docker" "inspect" "f2bcdb217822a6096dd98731f3194ba2953d9fe405ea728178a4e44b31f0a50d", 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" "f2bcdb217822a6096dd98731f3194ba2953d9fe405ea728178a4e44b31f0a50d" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling sdd v3.0.10
[INFO] [stderr]    Compiling serial_test_derive v3.4.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling scc v2.4.0
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling serial_test v3.4.0
[INFO] [stderr]    Compiling spout v0.2.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 9.12s
[INFO] running `Command { std: "docker" "inspect" "f2bcdb217822a6096dd98731f3194ba2953d9fe405ea728178a4e44b31f0a50d", 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" "f2bcdb217822a6096dd98731f3194ba2953d9fe405ea728178a4e44b31f0a50d" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.16s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/build/spout/229060b4d37f6328/out/spout-229060b4d37f6328)
[INFO] [stdout] 
[INFO] [stdout] running 270 tests
[INFO] [stdout] test allocator::tests::is_port_free_on_os_returns_false_for_bound_tcp_port ... ok
[INFO] [stdout] test allocator::tests::alloc_udp_returns_port_in_range ... ok
[INFO] [stdout] test allocator::tests::alloc_skips_ports_bound_by_os ... ok
[INFO] [stdout] test allocator::tests::alloc_is_idempotent_per_project_service ... ok
[INFO] [stdout] test allocator::tests::alloc_udp_and_tcp_can_share_a_port_number ... ok
[INFO] [stdout] test allocator::tests::probe_bound_ports_distinguishes_bound_from_free ... ok
[INFO] [stdout] test allocator::tests::alloc_refuses_when_orphan_exists_for_same_service ... ok
[INFO] [stdout] test allocator::tests::alloc_different_services_same_project_get_different_ports ... ok
[INFO] [stdout] test allocator::tests::probe_bound_ports_empty_registry_returns_empty_set ... ok
[INFO] [stdout] test allocator::tests::probe_bound_ports_includes_currently_bound_registrations ... ok
[INFO] [stdout] test cli::tests::cli_debug_assert ... ok
[INFO] [stdout] test allocator::tests::alloc_fresh_returns_first_free_port_in_range ... ok
[INFO] [stdout] test allocator::tests::is_port_free_on_os_returns_false_for_bound_udp_port ... ok
[INFO] [stdout] test allocator::tests::is_port_free_on_os_returns_true_for_free_tcp_port ... ok
[INFO] [stdout] test cli::tests::parses_alloc_with_udp_flag ... ok
[INFO] [stdout] test cli::tests::parses_alloc ... ok
[INFO] [stdout] test allocator::tests::tcp_and_udp_probes_are_independent ... ok
[INFO] [stdout] test allocator::tests::alloc_idempotent_path_ignores_orphan_check ... ok
[INFO] [stdout] test cli::tests::parses_env_with_project_name ... ok
[INFO] [stdout] test cli::tests::parses_alloc_with_file_flag ... ok
[INFO] [stdout] test cli::tests::parses_ls_no_tui_flag ... ok
[INFO] [stdout] test cli::tests::parses_alloc_with_no_service_and_no_file ... ok
[INFO] [stdout] test cli::tests::parses_env_bare_means_current_project ... ok
[INFO] [stdout] test cli::tests::ls_accepts_list_alias ... ok
[INFO] [stdout] test cli::tests::parses_ls_project_flag_with_name ... ok
[INFO] [stdout] test allocator::tests::alloc_different_projects_get_different_ports ... ok
[INFO] [stdout] test allocator::tests::alloc_does_not_refuse_when_no_orphan_exists ... ok
[INFO] [stdout] test cli::tests::parses_ls_project_flag_without_value_means_current ... ok
[INFO] [stdout] test cli::tests::parses_ls_bare ... ok
[INFO] [stdout] test cli::tests::parses_reproject_with_from_and_to ... ok
[INFO] [stdout] test cli::tests::parses_check_with_udp_flag ... ok
[INFO] [stdout] test cli::tests::parses_set_with_udp_flag ... ok
[INFO] [stdout] test cli::tests::rm_accepts_free_alias ... ok
[INFO] [stdout] test commands::alloc::compose::tests::host_container_form_is_tcp ... ok
[INFO] [stdout] test cli::tests::parses_whois_with_history ... ok
[INFO] [stdout] test cli::tests::verbose_is_global ... ok
[INFO] [stdout] test commands::alloc::compose::tests::long_form_default_protocol_is_tcp ... ok
[INFO] [stdout] test commands::alloc::compose::tests::bind_ip_shorthand_parses_as_tcp ... ok
[INFO] [stdout] test cli::tests::parses_completions_for_bash ... ok
[INFO] [stdout] test cli::tests::parses_alloc_with_multiple_file_flags_in_order ... ok
[INFO] [stdout] test commands::alloc::compose::tests::empty_doc_yields_empty_vec ... ok
[INFO] [stdout] test commands::alloc::compose::tests::merge_protocol_follows_winning_file ... ok
[INFO] [stdout] test commands::alloc::compose::tests::merge_result_is_alphabetical ... ok
[INFO] [stdout] test commands::alloc::compose::tests::non_numeric_container_port_is_unparseable ... ok
[INFO] [stdout] test cli::tests::reproject_requires_both_from_and_to ... ok
[INFO] [stdout] test commands::alloc::compose::tests::merge_overlay_adds_service_not_in_base ... ok
[INFO] [stdout] test commands::alloc::compose::tests::multi_port_preserves_mixed_protocols ... ok
[INFO] [stdout] test commands::alloc::compose::tests::merge_overlay_wins_when_both_declare_service ... ok
[INFO] [stdout] test commands::alloc::compose::tests::long_form_with_udp_protocol ... ok
[INFO] [stdout] test commands::alloc::compose::tests::services_without_ports_are_skipped ... ok
[INFO] [stdout] test commands::alloc::compose::tests::merge_both_empty_is_empty ... ok
[INFO] [stdout] test commands::alloc::compose::tests::merge_preserves_base_only_services ... ok
[INFO] [stdout] test commands::alloc::compose::tests::multiple_services_preserve_names ... ok
[INFO] [stdout] test commands::alloc::compose::tests::services_with_empty_ports_list_are_skipped ... ok
[INFO] [stdout] test commands::alloc::compose::tests::port_range_shorthand_is_unparseable ... ok
[INFO] [stdout] test commands::alloc::compose::tests::long_form_missing_target_is_dropped ... ok
[INFO] [stdout] test commands::alloc::compose::tests::unparseable_spec_keeps_valid_siblings ... ok
[INFO] [stdout] test commands::alloc::compose::tests::numeric_port_without_quotes_is_tcp ... ok
[INFO] [stdout] test commands::alloc::compose::tests::slash_udp_suffix_is_udp ... ok
[INFO] [stdout] test commands::alloc::compose::tests::short_form_numeric_is_tcp ... ok
[INFO] [stdout] test commands::alloc::compose::tests::malformed_yaml_is_compose_invalid ... ok
[INFO] [stdout] test commands::alloc::compose::tests::services_field_missing_is_ok_returns_empty ... ok
[INFO] [stdout] test commands::alloc::tests::build_allocations_single_port_service_keeps_bare_name ... ok
[INFO] [stdout] test commands::alloc::tests::format_summary_cites_all_files_when_multiple_present ... ok
[INFO] [stdout] test commands::alloc::tests::format_summary_mixed_new_and_existing ... ok
[INFO] [stdout] test commands::alloc::compose::tests::multi_port_service_records_all_ports_in_order ... ok
[INFO] [stdout] test commands::alloc::tests::format_summary_one_port_uses_singular ... ok
[INFO] [stdout] test commands::alloc::compose::tests::unknown_protocol_suffix_is_unparseable ... ok
[INFO] [stdout] test commands::alloc::tests::build_allocations_duplicate_container_port_skipped_with_warning ... ok
[INFO] [stdout] test commands::alloc::tests::load_chain_folds_explicit_three_files_last_wins ... ok
[INFO] [stdout] test commands::alloc::tests::resolve_explicit_missing_mid_chain_errors ... ok
[INFO] [stdout] test commands::alloc::tests::load_chain_overlay_wins_on_port_conflict ... ok
[INFO] [stdout] test commands::alloc::tests::resolve_explicit_path_ignores_override_in_cwd ... ok
[INFO] [stdout] test commands::alloc::tests::resolve_explicit_chain_preserves_order ... ok
[INFO] [stdout] test commands::alloc::tests::resolve_finds_docker_compose_yml ... ok
[INFO] [stdout] test commands::alloc::tests::resolve_falls_through_to_compose_yaml ... ok
[INFO] [stdout] test commands::alloc::tests::resolve_honours_explicit_path ... ok
[INFO] [stdout] test commands::alloc::tests::load_chain_overlay_adds_services_missing_from_base ... ok
[INFO] [stdout] test commands::alloc::tests::resolve_missing_explicit_path_is_compose_not_found ... ok
[INFO] [stdout] test commands::alloc::tests::resolve_missing_file_is_compose_not_found ... ok
[INFO] [stdout] test commands::alloc::tests::build_allocations_registers_every_port_of_multi_port_service ... ok
[INFO] [stdout] test commands::alloc::tests::build_allocations_multi_port_mixed_tcp_udp ... ok
[INFO] [stdout] test commands::alloc::tests::build_allocations_multi_port_is_idempotent ... ok
[INFO] [stdout] test commands::alloc::tests::resolve_returns_base_and_override_when_both_exist ... ok
[INFO] [stdout] test commands::prune::scanner::tests::scan_empty_registry_yields_no_candidates ... ok
[INFO] [stdout] test commands::alloc::tests::resolve_prefers_docker_compose_yml_over_compose_yaml ... ok
[INFO] [stdout] test commands::prune::scanner::tests::scan_flags_path_missing_identities ... ok
[INFO] [stdout] test commands::prune::scanner::tests::format_report_groups_by_project_and_reports_count ... ok
[INFO] [stdout] test commands::prune::scanner::tests::nothing_to_prune_uses_the_actual_cutoff ... ok
[INFO] [stdout] test commands::prune::scanner::tests::scan_age_filters_by_cutoff ... ok
[INFO] [stdout] test commands::prune::tests::dry_run_reports_candidates ... ok
[INFO] [stdout] test commands::alloc::tests::resolve_override_without_base_is_friendly_error ... ok
[INFO] [stdout] test commands::prune::scanner::tests::scan_respects_older_than_cutoff ... ok
[INFO] [stdout] test commands::prune::tests::interactive_bare_enter_keeps_the_entry ... ok
[INFO] [stdout] test commands::alloc::tests::resolve_pairs_base_with_mismatched_override_extension ... ok
[INFO] [stdout] test commands::prune::tests::bulk_with_no_candidates_says_nothing_to_prune ... ok
[INFO] [stdout] test commands::reproject::tests::run_refuses_when_from_equals_to ... ok
[INFO] [stdout] test commands::prune::tests::bulk_path_missing_uses_path_reason_string ... ok
[INFO] [stdout] test commands::prune::tests::bulk_removes_all_and_records_reasons ... ok
[INFO] [stdout] test commands::tests::check_returns_false_when_port_is_bound ... ok
[INFO] [stdout] test commands::rm::tests::rm_project_n_response_keeps_everything ... ok
[INFO] [stdout] test commands::prune::tests::interactive_bang_applies_yes_to_all_remaining ... ok
[INFO] [stdout] test commands::rm::tests::rm_project_unknown_project_errors_one ... ok
[INFO] [stdout] test commands::rm::tests::rm_project_dry_run_lists_without_removing ... ok
[INFO] [stdout] test commands::rm::tests::rm_project_yes_removes_all_in_one_lock ... ok
[INFO] [stdout] test commands::rm::tests::rm_project_records_distinct_history_reason ... ok
[INFO] [stdout] test commands::prune::tests::interactive_y_removes_and_writes_rich_reason ... ok
[INFO] [stdout] test commands::rm::tests::rm_one_in_named_project_other_than_current ... ok
[INFO] [stdout] test commands::tests::env_named_project_with_no_services_returns_none ... ok
[INFO] [stdout] test commands::rm::tests::rm_project_y_response_removes_everything ... ok
[INFO] [stdout] test commands::tests::env_named_project_emits_sorted_key_value_lines ... ok
[INFO] [stdout] test commands::tests::env_unknown_project_returns_none ... ok
[INFO] [stdout] test commands::tests::get_with_explicit_project_reads_from_that_project ... ok
[INFO] [stdout] test commands::prune::tests::interactive_q_stops_without_touching_remaining ... ok
[INFO] [stdout] test commands::tests::ls_empty_registry_is_descriptive ... ok
[INFO] [stdout] test commands::tests::ls_filters_to_named_project ... ok
[INFO] [stdout] test commands::tests::set_rejects_privileged_port ... ok
[INFO] [stdout] test commands::tests::whois_lists_both_protocols_tcp_first ... ok
[INFO] [stdout] test commands::tests::get_failure_in_empty_project_with_history_uses_alloc_fresh_hint ... ok
[INFO] [stdout] test commands::tests::whois_returns_active_registration ... ok
[INFO] [stdout] test commands::tests::get_failure_ignores_history_from_other_projects ... ok
[INFO] [stdout] test commands::tests::whois_returns_none_when_unknown ... ok
[INFO] [stdout] test date::tests::civil_from_days_2026_04_20 ... ok
[INFO] [stdout] test date::tests::civil_from_days_epoch_is_1970_01_01 ... ok
[INFO] [stdout] test date::tests::civil_from_days_y2k ... ok
[INFO] [stdout] test date::tests::days_between_is_signed ... ok
[INFO] [stdout] test date::tests::civil_from_days_leap_day_2000 ... ok
[INFO] [stdout] test date::tests::days_between_same_date_is_zero ... ok
[INFO] [stdout] test date::tests::days_between_malformed_input_is_none ... ok
[INFO] [stdout] test date::tests::days_between_spans_month_and_year_boundaries ... ok
[INFO] [stdout] test date::tests::days_ago_on_today_is_zero ... ok
[INFO] [stdout] test date::tests::parse_iso_date_rejects_out_of_range_month_and_day ... ok
[INFO] [stdout] test date::tests::parse_iso_date_round_trips_civil_values ... ok
[INFO] [stdout] test commands::tests::get_failure_picks_most_recent_when_multiple_removals ... ok
[INFO] [stdout] test date::tests::days_from_civil_inverts_civil_from_days ... ok
[INFO] [stdout] test commands::tests::env_current_project_after_alloc_contains_the_service ... ok
[INFO] [stdout] test date::tests::today_iso_is_well_formed ... ok
[INFO] [stdout] test error::tests::alloc_orphan_match_exits_ten ... ok
[INFO] [stdout] test error::tests::alloc_orphan_match_multiple_orphans_list_format ... ok
[INFO] [stdout] test error::tests::alloc_orphan_match_single_orphan_inline_format ... ok
[INFO] [stdout] test error::tests::compose_invalid_exits_eight ... ok
[INFO] [stdout] test error::tests::display_messages_are_non_empty ... ok
[INFO] [stdout] test error::tests::io_exits_seven ... ok
[INFO] [stdout] test error::tests::compose_not_found_exits_eight ... ok
[INFO] [stdout] test error::tests::no_free_port_found_exits_two ... ok
[INFO] [stdout] test commands::tests::rm_removes_and_appends_to_history ... ok
[INFO] [stdout] test commands::tests::get_failure_includes_recently_removed_when_history_exists ... ok
[INFO] [stdout] test error::tests::port_already_claimed_exits_five ... ok
[INFO] [stdout] test error::tests::port_errors_mention_the_protocol ... ok
[INFO] [stdout] test error::tests::port_in_use_exits_six ... ok
[INFO] [stdout] test error::tests::registry_corrupt_exits_three ... ok
[INFO] [stdout] test error::tests::registry_version_unknown_exits_four ... ok
[INFO] [stdout] test commands::tests::whois_history_finds_released_ports ... ok
[INFO] [stdout] test error::tests::service_not_registered_with_multiple_orphans_lists_all_and_uses_first_in_hint ... ok
[INFO] [stdout] test error::tests::reproject_conflict_exits_eleven ... ok
[INFO] [stdout] test error::tests::service_not_registered_with_no_orphans_uses_alloc_hint ... ok
[INFO] [stdout] test error::tests::service_not_registered_exits_one ... ok
[INFO] [stdout] test error::tests::service_not_registered_with_orphan_suggests_reproject_and_drops_other_hints ... ok
[INFO] [stdout] test error::tests::service_not_registered_orphan_hint_wins_over_recently_removed ... ok
[INFO] [stdout] test date::tests::parse_iso_date_rejects_malformed_input ... ok
[INFO] [stdout] test commands::rm::tests::rm_one_in_current_project ... ok
[INFO] [stdout] test error::tests::service_not_registered_with_one_orphan_includes_orphan_line ... ok
[INFO] [stdout] test commands::tests::get_failure_in_empty_project_suggests_alloc ... ok
[INFO] [stdout] test commands::tests::set_registers_port_for_current_project ... ok
[INFO] [stdout] test format::rich::tests::rich_active_colours_port_cyan ... ok
[INFO] [stdout] test format::plain::tests::all_empty_registry_is_descriptive ... ok
[INFO] [stdout] test format::plain::tests::project_block_prefixes_bound_port_with_solid_circle ... ok
[INFO] [stdout] test format::rich::tests::rich_columns_align_across_differing_name_lengths ... ok
[INFO] [stdout] test format::plain::tests::project_block_shows_protocol_suffix_on_every_row ... ok
[INFO] [stdout] test format::rich::tests::rich_inactive_palette_emits_no_escapes ... ok
[INFO] [stdout] test format::rich::tests::rich_header_names_every_column ... ok
[INFO] [stdout] test commands::tests::get_failure_in_populated_project_lists_available_services ... ok
[INFO] [stdout] test error::tests::usage_exits_nine ... ok
[INFO] [stdout] test format::rich::tests::rich_row_carries_env_var_and_date ... ok
[INFO] [stdout] test format::tests::port_status_glyph_distinguishes_bound_from_free ... ok
[INFO] [stdout] test project::tests::parse_empty_returns_none ... ok
[INFO] [stdout] test format::plain::tests::plain_layout_emits_no_ansi_escapes ... ok
[INFO] [stdout] test format::plain::tests::project_block_prefixes_free_port_with_open_circle ... ok
[INFO] [stdout] test format::rich::tests::rich_bound_dot_is_green_free_dot_is_dim ... ok
[INFO] [stdout] test project::tests::parse_https ... ok
[INFO] [stdout] test project::tests::parse_ssh_with_protocol ... ok
[INFO] [stdout] test project::tests::parse_scp_like_without_dotgit ... ok
[INFO] [stdout] test project::tests::parse_scp_like_without_user ... ok
[INFO] [stdout] test project::tests::parse_http_no_user ... ok
[INFO] [stdout] test format::rich::tests::rich_single_empty_project_is_descriptive ... ok
[INFO] [stdout] test project::tests::current_project_returns_something_non_empty ... ok
[INFO] [stdout] test project::tests::resolve_with_override_honours_explicit_name ... ok
[INFO] [stdout] test project::tests::parse_gitlab_multi_group ... ok
[INFO] [stdout] test project::tests::parse_local_path_passes_through ... ok
[INFO] [stdout] test project::tests::resolve_with_override_trims_whitespace ... ok
[INFO] [stdout] test format::tests::should_colour_truth_table ... ok
[INFO] [stdout] test project_markers::tests::marker_subdir_returns_none_when_marker_only_at_git_root ... ok
[INFO] [stdout] test commands::tests::ls_shows_project_and_services_after_alloc ... ok
[INFO] [stdout] test project_markers::tests::marker_subdir_nearest_wins_over_root_marker ... ok
[INFO] [stdout] test commands::tests::rm_unregistered_service_errors ... ok
[INFO] [stdout] test project_markers::tests::marker_subdir_recognises_all_four_filenames ... ok
[INFO] [stdout] test project_markers::tests::marker_subdir_returns_none_when_no_marker ... ok
[INFO] [stdout] test project_markers::tests::marker_subdir_ignores_directory_named_like_marker ... ok
[INFO] [stdout] test project_markers::tests::marker_subdir_returns_relative_path_when_marker_on_cwd ... ok
[INFO] [stdout] test project_markers::tests::marker_subdir_returns_none_when_cwd_is_root_with_marker ... ok
[INFO] [stdout] test protocol::tests::default_is_tcp ... ok
[INFO] [stdout] test protocol::tests::deserialises_from_lowercase_string ... ok
[INFO] [stdout] test commands::tests::get_returns_service_not_registered_when_empty ... ok
[INFO] [stdout] test protocol::tests::is_port_claimed_filters_by_protocol ... ok
[INFO] [stdout] test protocol::tests::v1_entry_reads_with_protocol_defaulted_to_tcp ... ok
[INFO] [stdout] test protocol::tests::rejects_uppercase_and_unknown_values ... ok
[INFO] [stdout] test protocol::tests::ord_places_tcp_before_udp ... ok
[INFO] [stdout] test project_markers::tests::marker_subdir_walks_up_from_deeper_cwd ... ok
[INFO] [stdout] test protocol::tests::display_renders_lowercase ... ok
[INFO] [stdout] test protocol::tests::v2_round_trips_udp_entry ... ok
[INFO] [stdout] test protocol::tests::is_port_claimed_finds_udp_registration ... ok
[INFO] [stdout] test protocol::tests::v1_file_upgrades_to_v2_on_first_mutating_write ... ok
[INFO] [stdout] test protocol::tests::serialises_as_lowercase_string ... ok
[INFO] [stdout] test project::tests::resolve_with_override_falls_through_on_none ... ok
[INFO] [stdout] test registry::io::tests::read_unknown_version_exits_four ... ok
[INFO] [stdout] test registry::io::tests::registry_path_resolves_to_an_absolute_path ... ok
[INFO] [stdout] test registry::io::tests::with_lock_applies_mutation ... ok
[INFO] [stdout] test registry::tests::history_for_port_sorted_most_recent_first ... ok
[INFO] [stdout] test registry::io::tests::read_corrupt_json_exits_three ... ok
[INFO] [stdout] test registry::tests::history_for_service_returns_empty_when_never_removed ... ok
[INFO] [stdout] test registry::io::tests::write_then_read_round_trip ... ok
[INFO] [stdout] test registry::tests::orphans_for_service_excludes_current_project_even_if_path_based ... ok
[INFO] [stdout] test registry::tests::orphans_for_service_finds_entry_under_ancestor_path ... ok
[INFO] [stdout] test registry::io::tests::lock_path_replaces_extension ... ok
[INFO] [stdout] test registry::io::tests::read_missing_file_returns_empty_registry ... ok
[INFO] [stdout] test registry::tests::is_port_claimed_returns_none_for_free ... ok
[INFO] [stdout] test registry::io::tests::with_lock_propagates_error_from_closure ... ok
[INFO] [stdout] test registry::tests::history_for_service_filters_by_project_and_service ... ok
[INFO] [stdout] test registry::tests::history_for_service_sorts_most_recent_first ... ok
[INFO] [stdout] test registry::tests::orphans_for_service_ignores_unrelated_paths ... ok
[INFO] [stdout] test registry::tests::orphans_for_service_finds_entry_under_cwd_exact_path ... ok
[INFO] [stdout] test registry::tests::orphans_for_service_ignores_other_services ... ok
[INFO] [stdout] test registry::tests::orphans_for_service_returns_empty_when_no_path_projects ... ok
[INFO] [stdout] test registry::tests::orphans_for_service_returns_multiple_ancestor_matches ... ok
[INFO] [stdout] test registry::tests::registry_set_get_remove_roundtrip ... ok
[INFO] [stdout] test registry::tests::remove_carries_allocated_date_into_history ... ok
[INFO] [stdout] test registry::tests::reproject_moves_all_services_to_empty_target ... ok
[INFO] [stdout] test registry::tests::reproject_preserves_protocol ... ok
[INFO] [stdout] test registry::tests::reproject_records_history_with_reprojected_reason ... ok
[INFO] [stdout] test services::tests::env_var_name_bare_port_is_not_double_appended ... ok
[INFO] [stdout] test services::tests::env_var_name_empty_string_gets_port_suffix ... ok
[INFO] [stdout] test project::tests::resolve_with_override_falls_through_on_whitespace_only ... ok
[INFO] [stdout] test registry::tests::reproject_refuses_on_conflict_listing_offenders_sorted ... ok
[INFO] [stdout] test registry::tests::reproject_returns_zero_when_source_empty ... ok
[INFO] [stdout] test services::tests::env_var_name_multiple_hyphens ... ok
[INFO] [stdout] test services::tests::env_var_name_preserves_digits ... ok
[INFO] [stdout] test services::tests::env_var_name_postgres_becomes_postgres_port ... ok
[INFO] [stdout] test services::tests::env_var_name_numeric_service_name ... ok
[INFO] [stdout] test services::tests::env_var_name_uppercase_port_suffix_is_not_double_appended ... ok
[INFO] [stdout] test registry::tests::remove_empties_project_entry ... ok
[INFO] [stdout] test services::tests::parse_icons_empty_string_is_empty_map ... ok
[INFO] [stdout] test project::tests::parse_scp_like_with_user ... ok
[INFO] [stdout] test registry::tests::reproject_succeeds_when_target_has_different_services ... ok
[INFO] [stdout] test services::tests::parse_icons_multiple_entries ... ok
[INFO] [stdout] test services::tests::parse_icons_single_entry ... ok
[INFO] [stdout] test project::tests::parse_https_without_dotgit ... ok
[INFO] [stdout] test services::tests::env_var_name_already_uppercase_only_appends_suffix ... ok
[INFO] [stdout] test services::tests::parse_icons_skips_empty_value ... ok
[INFO] [stdout] test services::tests::env_var_name_sanitises_shell_metachars ... ok
[INFO] [stdout] test services::tests::parse_icons_skips_empty_key ... ok
[INFO] [stdout] test services::tests::parse_icons_allows_equals_in_value ... ok
[INFO] [stdout] test services::tests::parse_icons_trims_whitespace_around_keys_and_values ... ok
[INFO] [stdout] test services::tests::parse_icons_tolerates_trailing_and_repeated_commas ... ok
[INFO] [stdout] test services::tests::env_var_name_hyphen_becomes_underscore ... ok
[INFO] [stdout] test services::tests::env_var_name_lowercase_port_suffix_is_not_double_appended ... ok
[INFO] [stdout] test services::tests::parse_icons_skips_entry_with_no_equals ... ok
[INFO] [stdout] test registry::io::tests::concurrent_with_lock_serialises_writes ... ok
[INFO] [stdout] test registry::tests::is_port_claimed_finds_existing ... ok
[INFO] [stdout] test project::tests::resolve_with_override_falls_through_on_empty_string ... ok
[INFO] [stdout] test commands::tests::alloc_then_get_returns_same_port ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 270 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "f2bcdb217822a6096dd98731f3194ba2953d9fe405ea728178a4e44b31f0a50d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f2bcdb217822a6096dd98731f3194ba2953d9fe405ea728178a4e44b31f0a50d", kill_on_drop: false }`
[INFO] [stdout] f2bcdb217822a6096dd98731f3194ba2953d9fe405ea728178a4e44b31f0a50d
