[INFO] cloning repository https://github.com/wiresock/alighieri
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/wiresock/alighieri" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwiresock%2Falighieri", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwiresock%2Falighieri'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 07c02f74838e512a477bec3f30ec3a708ec598bc
[INFO] testing wiresock/alighieri against 1.98.0-beta.1 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwiresock%2Falighieri" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/wiresock/alighieri
[INFO] finished tweaking git repo https://github.com/wiresock/alighieri
[INFO] tweaked toml for git repo https://github.com/wiresock/alighieri written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/wiresock/alighieri on toolchain 1.98.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/wiresock/alighieri 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.98.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:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 72b080822aa32de1fffa22aba76801b0b9496eae935065edd6b7eb0f4d3fd2f8
[INFO] running `Command { std: "docker" "start" "72b080822aa32de1fffa22aba76801b0b9496eae935065edd6b7eb0f4d3fd2f8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "72b080822aa32de1fffa22aba76801b0b9496eae935065edd6b7eb0f4d3fd2f8", 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" "72b080822aa32de1fffa22aba76801b0b9496eae935065edd6b7eb0f4d3fd2f8" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "72b080822aa32de1fffa22aba76801b0b9496eae935065edd6b7eb0f4d3fd2f8", 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" "72b080822aa32de1fffa22aba76801b0b9496eae935065edd6b7eb0f4d3fd2f8" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]    Compiling memchr v2.8.1
[INFO] [stderr]    Compiling shlex v2.0.1
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling zeroize v1.9.0
[INFO] [stderr]    Compiling time-core v0.1.9
[INFO] [stderr]    Compiling num-conv v0.2.2
[INFO] [stderr]    Compiling parking v2.2.1
[INFO] [stderr]    Compiling deranged v0.5.8
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling log v0.4.30
[INFO] [stderr]    Compiling minimal-lexical v0.2.1
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling rustls-pki-types v1.15.0
[INFO] [stderr]    Compiling time-macros v0.2.29
[INFO] [stderr]    Compiling cc v1.2.63
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling rustls v0.23.40
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]    Compiling futures-lite v2.6.1
[INFO] [stderr]    Compiling anyhow v1.0.103
[INFO] [stderr]    Compiling atomic-waker v1.1.2
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling concurrent-queue v2.5.0
[INFO] [stderr]    Compiling async-io v2.6.0
[INFO] [stderr]    Compiling piper v0.2.5
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling oid-registry v0.7.1
[INFO] [stderr]    Compiling event-listener v5.4.1
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling async-task v4.7.1
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling event-listener-strategy v0.5.4
[INFO] [stderr]    Compiling mio v1.2.1
[INFO] [stderr]    Compiling socket2 v0.6.4
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling async-channel v2.5.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling webpki-roots v1.0.8
[INFO] [stderr]    Compiling http v1.4.2
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling blocking v1.6.2
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling time v0.3.49
[INFO] [stderr]    Compiling pem v3.0.6
[INFO] [stderr]    Compiling webpki-roots v0.26.11
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling data-encoding v2.11.0
[INFO] [stderr]    Compiling base64ct v1.8.3
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling rtoolbox v0.0.5
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling rpassword v7.5.4
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling password-hash v0.5.0
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling rusticata-macros v4.1.0
[INFO] [stderr]    Compiling blake2 v0.10.6
[INFO] [stderr]    Compiling argon2 v0.5.3
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling yasna v0.5.2
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling polling v3.11.0
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling rcgen v0.13.2
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling async-net v2.0.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling asn1-rs-derive v0.5.1
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]    Compiling asn1-rs-impl v0.2.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling asn1-rs v0.6.2
[INFO] [stderr]    Compiling der-parser v9.0.0
[INFO] [stderr]    Compiling x509-parser v0.16.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling tracing-serde v0.2.0
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling async-http-codec v0.8.0
[INFO] [stderr]    Compiling futures-rustls v0.26.0
[INFO] [stderr]    Compiling async-web-client v0.6.3
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling rustls-acme v0.15.3
[INFO] [stderr]    Compiling alighieri v0.3.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 12s
[INFO] running `Command { std: "docker" "inspect" "72b080822aa32de1fffa22aba76801b0b9496eae935065edd6b7eb0f4d3fd2f8", 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" "72b080822aa32de1fffa22aba76801b0b9496eae935065edd6b7eb0f4d3fd2f8" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling futures-lite v2.6.1
[INFO] [stderr]    Compiling piper v0.2.5
[INFO] [stderr]    Compiling blocking v1.6.2
[INFO] [stderr]    Compiling polling v3.11.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling async-io v2.6.0
[INFO] [stderr]    Compiling async-net v2.0.0
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling async-web-client v0.6.3
[INFO] [stderr]    Compiling rustls-acme v0.15.3
[INFO] [stderr]    Compiling alighieri v0.3.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 46.25s
[INFO] running `Command { std: "docker" "inspect" "72b080822aa32de1fffa22aba76801b0b9496eae935065edd6b7eb0f4d3fd2f8", 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" "72b080822aa32de1fffa22aba76801b0b9496eae935065edd6b7eb0f4d3fd2f8" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.29s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/alighieri-4326384964bcd5f1)
[INFO] [stdout] 
[INFO] [stdout] running 309 tests
[INFO] [stdout] test abuse::tests::auth_failures_block_later_connections ... ok
[INFO] [stdout] test abuse::tests::evict_idle_clients_drops_idle_but_keeps_active ... ok
[INFO] [stdout] test abuse::tests::drained_bandwidth_state_survives_prune_until_refilled ... ok
[INFO] [stdout] test abuse::tests::evict_idle_clients_never_drops_active_even_over_target ... ok
[INFO] [stdout] test abuse::tests::no_byte_rate_yields_no_bucket ... ok
[INFO] [stdout] test abuse::tests::prunes_expired_idle_client_states_on_amortized_sweep ... ok
[INFO] [stdout] test abuse::tests::releases_concurrent_connection_permit_on_drop ... ok
[INFO] [stdout] test abuse::tests::reload_retunes_existing_bucket_in_place ... ok
[INFO] [stdout] test abuse::tests::reload_retunes_live_bucket_without_readmission ... ok
[INFO] [stdout] test abuse::tests::byte_rate_yields_a_shared_per_client_bucket ... ok
[INFO] [stdout] test abuse::tests::enforces_connection_rate ... ok
[INFO] [stdout] test acl::tests::deny_by_default_when_empty ... ok
[INFO] [stdout] test acl::tests::first_match_wins ... ok
[INFO] [stdout] test acl::tests::detailed_decision_includes_rule_name ... ok
[INFO] [stdout] test acl::tests::socks_decision_carries_rule_bandwidth ... ok
[INFO] [stdout] test acl::tests::has_scope_detection ... ok
[INFO] [stdout] test acl::tests::socks_dest_filtering_blocks_loopback ... ok
[INFO] [stdout] test acl::tests::udp_associate_reachable_respects_first_match ... ok
[INFO] [stdout] test acl::tests::detailed_decision_includes_rule_line ... ok
[INFO] [stdout] test auth::tests::command_auth_new_rejects_empty_command ... ok
[INFO] [stdout] test auth::tests::command_auth_rejects_embedded_delimiters ... ok
[INFO] [stdout] test acl::tests::socks_rule_matches_requested_hostname ... ok
[INFO] [stdout] test acl::tests::udp_associate_reachable_gates_on_command ... ok
[INFO] [stdout] test acl::tests::socks_command_filtering ... ok
[INFO] [stdout] test auth::tests::hash_user_line_rejects_surrounding_whitespace ... ok
[INFO] [stdout] test auth::tests::hash_user_line_rejects_protocol_length_overflow ... ok
[INFO] [stdout] test auth::tests::missing_colon_is_error ... ok
[INFO] [stdout] test auth::tests::invalid_argon2_hash_is_rejected ... ok
[INFO] [stdout] test auth::tests::empty_username_is_error ... ok
[INFO] [stdout] test auth::tests::hash_user_line_rejects_bad_username ... ok
[INFO] [stdout] test auth::tests::non_argon2id_hash_is_rejected ... ok
[INFO] [stdout] test auth::tests::command_auth_caches_success ... ok
[INFO] [stdout] test auth::tests::command_auth_allows_only_on_exit_zero ... ok
[INFO] [stdout] test auth::tests::command_auth_times_out ... ok
[INFO] [stdout] test auth::tests::verified_cache_entries_expire ... ok
[INFO] [stdout] test auth::tests::password_with_colon ... ok
[INFO] [stdout] test auth::tests::verified_cache_rejects_other_credentials ... ok
[INFO] [stdout] test config::tests::acme_and_certfile_are_mutually_exclusive ... ok
[INFO] [stdout] test config::tests::acme_domains_normalize_trailing_dot ... ok
[INFO] [stdout] test config::tests::acme_domains_reject_malformed_entries ... ok
[INFO] [stdout] test config::tests::acme_email_rejects_multiple_addresses ... ok
[INFO] [stdout] test config::tests::acme_requires_a_cache_dir ... ok
[INFO] [stdout] test config::tests::acme_tls_parses ... ok
[INFO] [stdout] test config::tests::address_selectors_reject_stray_tokens ... ok
[INFO] [stdout] test config::tests::auth_command_parses_program_and_args ... ok
[INFO] [stdout] test config::tests::auth_kind_to_method ... ok
[INFO] [stdout] test config::tests::bad_protocol_rejected ... ok
[INFO] [stdout] test config::tests::bandwidth_on_client_rule_is_rejected ... ok
[INFO] [stdout] test config::tests::brace_on_same_line_inline_rule ... ok
[INFO] [stdout] test config::tests::comment_after_closing_brace_is_ok ... ok
[INFO] [stdout] test config::tests::comments_are_stripped ... ok
[INFO] [stdout] test config::tests::defaults_applied ... ok
[INFO] [stdout] test config::tests::empty_selector_directives_rejected ... ok
[INFO] [stdout] test config::tests::file_output_requires_logfile ... ok
[INFO] [stdout] test config::tests::flags_noauth_on_a_non_loopback_listener ... ok
[INFO] [stdout] test config::tests::hostname_patterns_rejected_outside_socks_to ... ok
[INFO] [stdout] test config::tests::include_cycle_is_rejected ... ok
[INFO] [stdout] test config::tests::include_glob_ignores_matching_directories ... ok
[INFO] [stdout] test config::tests::include_glob_includes_symlinked_files ... ok
[INFO] [stdout] test config::tests::included_parse_error_reports_file_and_line ... ok
[INFO] [stdout] test config::tests::internal_ip_port_colon_form ... ok
[INFO] [stdout] test config::tests::internal_required ... ok
[INFO] [stdout] test config::tests::load_expands_relative_include_glob ... ok
[INFO] [stdout] test config::tests::logfile_implies_file_output ... ok
[INFO] [stdout] test config::tests::metrics_public_bind_requires_allowpublic ... ok
[INFO] [stdout] test config::tests::missing_direct_include_reports_resolution_error_with_line ... ok
[INFO] [stdout] test config::tests::missing_dns_cache_ttl_mentions_disabled_values ... ok
[INFO] [stdout] test config::tests::missing_entrypoint_reports_read_error ... ok
[INFO] [stdout] test config::tests::omitted_selector_directives_are_wildcard ... ok
[INFO] [stdout] test config::tests::parse_full_sample ... ok
[INFO] [stdout] test config::tests::parse_rejects_include_without_file_context ... ok
[INFO] [stdout] test config::tests::parses_disabled_auth_cache_ttl ... ok
[INFO] [stdout] test config::tests::parses_disabled_dns_cache_ttl ... ok
[INFO] [stdout] test config::tests::parses_dns_policy_aliases ... ok
[INFO] [stdout] test config::tests::parses_dns_timeout_and_rejects_zero ... ok
[INFO] [stdout] test config::tests::parses_log_rotation_size_suffixes ... ok
[INFO] [stdout] test config::tests::parses_named_rules ... ok
[INFO] [stdout] test config::tests::parses_rate_limit_aliases ... ok
[INFO] [stdout] test config::tests::proxyprotocol_parses_trusted_cidrs ... ok
[INFO] [stdout] test config::tests::proxyprotocol_rejects_empty_or_invalid ... ok
[INFO] [stdout] test config::tests::rejects_invalid_rate_limits ... ok
[INFO] [stdout] test config::tests::rejects_invalid_rule_names ... ok
[INFO] [stdout] test config::tests::rejects_out_of_range_numeric_limits ... ok
[INFO] [stdout] test config::tests::rejects_tokens_after_closing_brace ... ok
[INFO] [stdout] test config::tests::rejects_trailing_tokens_on_scalar_settings ... ok
[INFO] [stdout] test config::tests::rejects_trailing_tokens_on_value_settings ... ok
[INFO] [stdout] test config::tests::rejects_unknown_dns_preference ... ok
[INFO] [stdout] test config::tests::rejects_zero_connect_and_handshake_timeout ... ok
[INFO] [stdout] test config::tests::rule_defaults_to_any ... ok
[INFO] [stdout] test config::tests::rule_single_port ... ok
[INFO] [stdout] test config::tests::rule_with_port_range ... ok
[INFO] [stdout] test config::tests::shutdown_drain_timeout_parses_and_defaults ... ok
[INFO] [stdout] test config::tests::socks_rule_bandwidth_parses ... ok
[INFO] [stdout] test config::tests::socks_to_accepts_hostname_patterns ... ok
[INFO] [stdout] test config::tests::socks_to_mistyped_cidr_reports_network_error ... ok
[INFO] [stdout] test config::tests::tls_requires_cert_and_key ... ok
[INFO] [stdout] test config::tests::udp_advertise_parses_a_hostname_without_resolving ... ok
[INFO] [stdout] test config::tests::udp_advertise_parses_an_ip ... ok
[INFO] [stdout] test config::tests::udp_advertise_rejects_empty_and_trailing ... ok
[INFO] [stdout] test config::tests::udp_advertise_rejects_malformed_hostname ... ok
[INFO] [stdout] test config::tests::udp_port_range_parses_with_default_none ... ok
[INFO] [stdout] test config::tests::udp_port_range_rejects_invalid ... ok
[INFO] [stdout] test config::tests::udp_strict_reply_parses_and_defaults_on ... ok
[INFO] [stdout] test config::tests::unknown_keyword_rejected ... ok
[INFO] [stdout] test config::tests::unmatched_include_glob_is_rejected ... ok
[INFO] [stdout] test config::tests::unterminated_block_rejected ... ok
[INFO] [stdout] test config::tests::username_requires_userlist ... ok
[INFO] [stdout] test config::tests::username_with_userlist_ok ... ok
[INFO] [stdout] test connection::tests::advertise_ip_for_family_matches_canonical_family ... ok
[INFO] [stdout] test connection::tests::bind_udp_in_range_respects_the_configured_range ... ok
[INFO] [stdout] test connection::tests::connect_remote_times_out_to_blackhole ... ok
[INFO] [stdout] test connection::tests::requested_udp_endpoint_ignores_mismatched_or_zero_endpoint ... ok
[INFO] [stdout] test connection::tests::requested_udp_endpoint_locks_mapped_client_in_its_own_family ... ok
[INFO] [stdout] test connection::tests::requested_udp_endpoint_maps_unspecified_ip_to_client_ip ... ok
[INFO] [stdout] test connection::tests::requested_udp_endpoint_uses_concrete_matching_client_addr ... ok
[INFO] [stdout] test connection::tests::scan_start_offset_survives_a_coarse_clock ... ok
[INFO] [stdout] test dns::tests::address_allowed_canonicalizes_ipv4_compatible ... ok
[INFO] [stdout] test dns::tests::address_allowed_canonicalizes_ipv4_mapped ... ok
[INFO] [stdout] test dns::tests::cache_evicts_oldest_entry_when_full ... ok
[INFO] [stdout] test dns::tests::cache_keys_normalize_host_case ... ok
[INFO] [stdout] test dns::tests::cache_liveness_uses_current_ttl ... ok
[INFO] [stdout] test auth::tests::async_verify_short_circuits_on_cached_tag ... ok
[INFO] [stdout] test dns::tests::cached_entries_expire ... ok
[INFO] [stdout] test dns::tests::denies_ipv4_mapped_loopback_and_private ... ok
[INFO] [stdout] test dns::tests::caps_concurrent_system_lookups ... ok
[INFO] [stdout] test dns::tests::denies_private_ip_literal ... ok
[INFO] [stdout] test dns::tests::matches_documentation_ranges ... ok
[INFO] [stdout] test dns::tests::negative_cache_expires_after_ttl ... ok
[INFO] [stdout] test dns::tests::negative_cache_evicts_oldest_when_full ... ok
[INFO] [stdout] test dns::tests::orders_ipv4_first ... ok
[INFO] [stdout] test dns::tests::orders_ipv6_first ... ok
[INFO] [stdout] test dns::tests::reserved_covers_iana_special_ranges ... ok
[INFO] [stdout] test dns::tests::resolution_times_out_on_a_wedged_resolver ... ok
[INFO] [stdout] test dns::tests::resolve_all_canonicalizes_mapped_addresses ... ok
[INFO] [stdout] test dns::tests::resolver_denies_hostname_resolving_to_denied_ip ... ok
[INFO] [stdout] test dns::tests::oversized_ttl_never_expires ... ok
[INFO] [stdout] test dns::tests::resolves_ip_literal_without_dns ... ok
[INFO] [stdout] test dns::tests::singleflight_coalesces_concurrent_lookups ... ok
[INFO] [stdout] test dns::tests::singleflight_shares_leader_error_without_caching_it ... ok
[INFO] [stdout] test dns::tests::singleflight_recovers_when_the_leader_is_cancelled ... ok
[INFO] [stdout] test dns::tests::timed_out_name_is_negatively_cached ... ok
[INFO] [stdout] test dns::tests::timeout_keeps_singleflight_coalesced ... ok
[INFO] [stdout] test errors::tests::access_denied_maps_to_not_allowed ... ok
[INFO] [stdout] test errors::tests::command_unsupported_maps_through ... ok
[INFO] [stdout] test errors::tests::config_error_display ... ok
[INFO] [stdout] test errors::tests::io_error_is_convertible ... ok
[INFO] [stdout] test errors::tests::io_refused_maps_to_refused ... ok
[INFO] [stdout] test errors::tests::protocol_error_maps_to_general_failure ... ok
[INFO] [stdout] test errors::tests::timeout_maps_to_ttl_expired ... ok
[INFO] [stdout] test metrics::tests::aggregates_legacy_rule_hits_without_name_label ... ok
[INFO] [stdout] test metrics::tests::escapes_rule_name_labels ... ok
[INFO] [stdout] test dns::tests::store_purges_expired_entries_when_full ... ok
[INFO] [stdout] test metrics::tests::metrics_endpoint_handles_split_request_line ... ok
[INFO] [stdout] test auth::tests::plaintext_argon2_marker_without_phc_remains_plaintext ... ok
[INFO] [stdout] test metrics::tests::metrics_endpoint_head_on_unknown_path_has_no_body ... ok
[INFO] [stdout] test metrics::tests::metrics_endpoint_rejects_non_get_method ... ok
[INFO] [stdout] test metrics::tests::metrics_endpoint_head_returns_headers_without_body ... ok
[INFO] [stdout] test metrics::tests::metrics_endpoint_serves_metrics_path ... ok
[INFO] [stdout] test metrics::tests::renders_core_counters ... ok
[INFO] [stdout] test metrics::tests::renders_rule_hits ... ok
[INFO] [stdout] test net::tests::addr_spec_any_matches_v4_and_v6 ... ok
[INFO] [stdout] test net::tests::addr_spec_any_port ... ok
[INFO] [stdout] test net::tests::addr_spec_matches_dest_by_host_or_ip ... ok
[INFO] [stdout] test net::tests::addr_spec_matches_ip_and_port ... ok
[INFO] [stdout] test net::tests::cidr_any_v4 ... ok
[INFO] [stdout] test net::tests::cidr_display_roundtrip ... ok
[INFO] [stdout] test net::tests::cidr_host_route ... ok
[INFO] [stdout] test net::tests::cidr_partial_byte_prefix ... ok
[INFO] [stdout] test net::tests::cidr_rejects_oversized_prefix ... ok
[INFO] [stdout] test net::tests::cidr_v4_contains ... ok
[INFO] [stdout] test net::tests::cidr_v6_contains ... ok
[INFO] [stdout] test net::tests::host_pattern_exact_and_suffix_match ... ok
[INFO] [stdout] test net::tests::host_pattern_rejects_invalid ... ok
[INFO] [stdout] test net::tests::host_pattern_tolerates_trailing_dot ... ok
[INFO] [stdout] test net::tests::matches_all_requires_both_families_and_any_port ... ok
[INFO] [stdout] test net::tests::port_range_inverted_rejected ... ok
[INFO] [stdout] test net::tests::port_range_single ... ok
[INFO] [stdout] test metrics::tests::metrics_endpoint_rejects_other_paths ... ok
[INFO] [stdout] test metrics::tests::metrics_endpoint_ignores_empty_connections ... ok
[INFO] [stdout] test net::tests::port_range_span ... ok
[INFO] [stdout] test net::tests::validate_acme_domain_accepts_issuable_names ... ok
[INFO] [stdout] test net::tests::validate_hostname_accepts_normal_and_absolute_names ... ok
[INFO] [stdout] test net::tests::validate_hostname_rejects_control_characters ... ok
[INFO] [stdout] test net::tests::validate_hostname_rejects_malformed_labels ... ok
[INFO] [stdout] test net::tests::validate_hostname_rejects_unicode_controls_and_whitespace ... ok
[INFO] [stdout] test proxy_protocol::tests::non_proxy_header_is_rejected ... ok
[INFO] [stdout] test proxy_protocol::tests::v1_rejects_family_mismatch_truncation_and_extras ... ok
[INFO] [stdout] test proxy_protocol::tests::v1_tcp4_parsed_and_consumed_exactly ... ok
[INFO] [stdout] test net::tests::validate_acme_domain_rejects_non_issuable_names ... ok
[INFO] [stdout] test proxy_protocol::tests::v1_unknown_ignores_non_utf8_remainder ... ok
[INFO] [stdout] test proxy_protocol::tests::v1_unknown_yields_none ... ok
[INFO] [stdout] test proxy_protocol::tests::v2_local_command_yields_none ... ok
[INFO] [stdout] test proxy_protocol::tests::v2_tcp6_parsed ... ok
[INFO] [stdout] test proxy_protocol::tests::v2_with_trailing_tlv_is_consumed ... ok
[INFO] [stdout] test relay::tests::client_source_enforces_the_endpoint_lock ... ok
[INFO] [stdout] test relay::tests::client_source_matches_across_v4_mapped_v6 ... ok
[INFO] [stdout] test relay::tests::client_source_rejects_a_different_ip ... ok
[INFO] [stdout] test relay::tests::contacted_remotes_port_matching_modes ... ok
[INFO] [stdout] test relay::tests::contacted_remotes_records_and_evicts_oldest ... ok
[INFO] [stdout] test auth::tests::reject_wrong_password ... ok
[INFO] [stdout] test auth::tests::async_verify_does_not_cache_when_disabled ... ok
[INFO] [stdout] test proxy_protocol::tests::v2_rejects_unknown_command_and_non_stream ... ok
[INFO] [stdout] test relay::tests::idle_relay_stays_alive_while_one_direction_flows ... ok
[INFO] [stdout] test relay::tests::copy_direction_shapes_instead_of_dropping ... ok
[INFO] [stdout] test relay::tests::idle_relay_times_out_quiet_connections ... ok
[INFO] [stdout] test proxy_protocol::tests::v2_tcp4_parsed_and_consumed_exactly ... ok
[INFO] [stdout] test relay::tests::relay_both_completes_when_both_directions_finish ... ok
[INFO] [stdout] test relay::tests::parse_client_header_drops_fragments_and_garbage ... ok
[INFO] [stdout] test relay::tests::relay_both_fails_fast_when_a_direction_errors ... ok
[INFO] [stdout] test relay::tests::relay_both_waits_for_the_open_half_after_a_clean_close ... ok
[INFO] [stdout] test relay::tests::relay_both_ends_on_idle_timeout ... ok
[INFO] [stdout] test relay::tests::relay_tcp_echoes_both_directions ... ok
[INFO] [stdout] test relay::tests::shaped_wait_keeps_connection_alive_under_small_idle ... ok
[INFO] [stdout] test auth::tests::ignores_comments_and_blanks ... ok
[INFO] [stdout] test auth::tests::entry_username_handles_plain_and_argon2_entries ... ok
[INFO] [stdout] test relay::tests::udp_forwards_replies_from_contacted_remotes ... ok
[INFO] [stdout] test auth::tests::reject_unknown_user ... ok
[INFO] [stdout] test runtime::tests::async_log_writer_counts_sink_write_failures_as_drops ... ok
[INFO] [stdout] test auth::tests::plaintext_argon2_prefix_without_marker_remains_plaintext ... ok
[INFO] [stdout] test auth::tests::plaintext_argon2_phc_looking_password_remains_plaintext ... ok
[INFO] [stdout] test relay::tests::control_channel_data_does_not_refresh_udp_idle ... ok
[INFO] [stdout] test runtime::tests::async_log_writer_delivers_records_in_order ... ok
[INFO] [stdout] test runtime::tests::async_log_writer_reports_drops_as_json_when_configured ... ok
[INFO] [stdout] test relay::tests::on_datagram_can_drop_target_to_client ... ok
[INFO] [stdout] test runtime::tests::multi_sink_outage_neither_spams_nor_miscounts ... ok
[INFO] [stdout] test runtime::tests::async_log_writer_reports_drops_on_flush_without_further_records ... ok
[INFO] [stdout] test relay::tests::spoofed_source_datagrams_do_not_refresh_udp_idle ... ok
[INFO] [stdout] test runtime::tests::async_log_writer_drops_and_reports_when_queue_is_full ... ok
[INFO] [stdout] test runtime::tests::run_server_exits_when_shutdown_future_resolves ... ok
[INFO] [stdout] test runtime::tests::rotating_file_can_discard_history ... ok
[INFO] [stdout] test server::tests::accept_backoff_grows_then_caps ... ok
[INFO] [stdout] test runtime::tests::rotating_file_keeps_bounded_history ... ok
[INFO] [stdout] test server::tests::bind_reports_local_addr ... ok
[INFO] [stdout] test server::tests::config_footguns_flags_acme_with_proxyprotocol ... ok
[INFO] [stdout] test server::tests::bind_refuses_public_metrics_without_allowpublic ... ok
[INFO] [stdout] test server::tests::proxy_trust_matches_ipv4_mapped_upstream ... ok
[INFO] [stdout] test server::tests::proxy_trust_matches_native_ipv6_upstream ... ok
[INFO] [stdout] test server::tests::config_footguns_flags_open_proxy_and_missing_rules ... ok
[INFO] [stdout] test server::tests::reload_footgun_warnings_reflect_effective_listener ... ok
[INFO] [stdout] test server::tests::metrics_addr_remains_available_after_run_starts ... ok
[INFO] [stdout] test server::tests::reload_preserves_metrics_allowpublic ... ok
[INFO] [stdout] test socks5::tests::command_decode ... ok
[INFO] [stdout] test socks5::tests::encode_decode_target_v6 ... ok
[INFO] [stdout] test server::tests::run_can_only_start_once ... ok
[INFO] [stdout] test socks5::tests::method_roundtrip ... ok
[INFO] [stdout] test socks5::tests::parse_udp_header_rejects_crlf_in_domain ... ok
[INFO] [stdout] test socks5::tests::read_greeting_bad_version ... ok
[INFO] [stdout] test server::tests::reload_updates_runtime_config_for_new_connections ... ok
[INFO] [stdout] test socks5::tests::read_request_rejects_bad_version ... ok
[INFO] [stdout] test socks5::tests::read_greeting_ok ... ok
[INFO] [stdout] test socks5::tests::read_request_rejects_unknown_command ... ok
[INFO] [stdout] test socks5::tests::read_request_v4 ... ok
[INFO] [stdout] test socks5::tests::read_target_addr_rejects_crlf_in_domain ... ok
[INFO] [stdout] test socks5::tests::read_target_addr_rejects_empty_domain ... ok
[INFO] [stdout] test socks5::tests::read_target_addr_rejects_non_utf8_domain ... ok
[INFO] [stdout] test runtime::tests::shutdown_is_not_delayed_by_a_wedged_reload ... ok
[INFO] [stdout] test socks5::tests::read_target_addr_rejects_truncated_domain ... ok
[INFO] [stdout] test socks5::tests::read_target_addr_rejects_truncated_ipv4 ... ok
[INFO] [stdout] test socks5::tests::read_target_addr_rejects_truncated_ipv6 ... ok
[INFO] [stdout] test socks5::tests::read_request_rejects_nonzero_reserved_byte ... ok
[INFO] [stdout] test socks5::tests::read_userpass_allows_empty_password ... ok
[INFO] [stdout] test socks5::tests::read_userpass_ok ... ok
[INFO] [stdout] test socks5::tests::udp_header_domain ... ok
[INFO] [stdout] test socks5::tests::udp_header_rejects_empty_domain ... ok
[INFO] [stdout] test socks5::tests::read_target_addr_rejects_unsupported_atyp ... ok
[INFO] [stdout] test socks5::tests::udp_header_rejects_nonzero_reserved_bytes ... ok
[INFO] [stdout] test socks5::tests::udp_header_tail_matches_parser ... ok
[INFO] [stdout] test socks5::tests::udp_header_too_short ... ok
[INFO] [stdout] test socks5::tests::write_reply_canonicalizes_mapped_v6_to_v4 ... ok
[INFO] [stdout] test socks5::tests::write_reply_keeps_genuine_v6 ... ok
[INFO] [stdout] test socks5::tests::udp_header_roundtrip_v4 ... ok
[INFO] [stdout] test socks5::tests::read_userpass_rejects_empty_username ... ok
[INFO] [stdout] test socks5::tests::write_reply_v4 ... ok
[INFO] [stdout] test throttle::tests::empty_throttle_never_limits ... ok
[INFO] [stdout] test throttle::tests::from_rate_window_rejects_degenerate_limits ... ok
[INFO] [stdout] test throttle::tests::is_full_tracks_outstanding_debt ... ok
[INFO] [stdout] test throttle::tests::police_forwards_within_capacity_and_drops_when_short ... ok
[INFO] [stdout] test socks5::tests::read_request_domain ... ok
[INFO] [stdout] test throttle::tests::police_is_all_or_nothing_across_buckets ... ok
[INFO] [stdout] test throttle::tests::reserve_is_free_within_burst_then_charges_time ... ok
[INFO] [stdout] test throttle::tests::reserve_returns_the_wait_to_hold_the_rate ... ok
[INFO] [stdout] test throttle::tests::update_rate_window_retunes_in_place ... ok
[INFO] [stdout] test throttle::tests::with_bucket_ignores_duplicates ... ok
[INFO] [stdout] test throttle::tests::reserve_debt_is_repaid_by_elapsed_time ... ok
[INFO] [stdout] test throttle::tests::reserve_does_not_panic_on_degenerate_tiny_rate ... ok
[INFO] [stdout] test tls::tests::create_private_dir_does_not_chmod_through_a_symlink ... ok
[INFO] [stdout] test tls::tests::acme_config_builds_an_acceptor_and_driver ... ok
[INFO] [stdout] test tls::tests::ensure_writable_dir_rejects_a_symlinked_cache_dir ... ok
[INFO] [stdout] test tls::tests::ensure_writable_dir_creates_a_private_cache_dir ... ok
[INFO] [stdout] test tls::tests::loads_acceptor_from_pem_files ... ok
[INFO] [stdout] test tls::tests::acme_listener_offers_the_tls_alpn_challenge_protocol ... ok
[INFO] [stdout] test tls::tests::rejects_missing_private_key ... ok
[INFO] [stdout] test tls::tests::ensure_writable_dir_tightens_an_existing_loose_dir ... ok
[INFO] [stdout] test tls::tests::validation_is_side_effect_free_but_runtime_prepares_cache ... ok
[INFO] [stdout] test util::tests::capped_exponential_backoff_grows_then_caps ... ok
[INFO] [stdout] test util::tests::constant_time_eq_basic ... ok
[INFO] [stdout] test socks5::tests::write_udp_header_tail_canonicalizes_mapped_v6 ... ok
[INFO] [stdout] test runtime::tests::reload_loop_keeps_running_after_invalid_reload ... ok
[INFO] [stdout] test runtime::tests::reload_loop_keeps_running_after_valid_reload ... ok
[INFO] [stdout] test relay::tests::udp_drops_replies_from_uncontacted_remotes ... ok
[INFO] [stdout] test relay::tests::on_datagram_can_drop_client_to_target ... ok
[INFO] [stdout] test relay::tests::udp_datagram_to_denied_destination_is_dropped ... ok
[INFO] [stdout] test relay::tests::validated_datagrams_keep_udp_association_alive ... ok
[INFO] [stdout] test auth::tests::verified_cache_is_bounded ... ok
[INFO] [stdout] test auth::tests::parse_duplicate_username_keeps_last_entry ... ok
[INFO] [stdout] test auth::tests::parse_basic_userlist ... ok
[INFO] [stdout] test auth::tests::async_verify_caches_successful_credentials ... ok
[INFO] [stdout] test auth::tests::argon2_hash_user_line_verifies ... ok
[INFO] [stdout] test auth::tests::async_verify_matches_sync_verifier ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 309 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 13.60s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/alighieri-09efb67cf0e46c92)
[INFO] [stdout] 
[INFO] [stdout] running 91 tests
[INFO] [stdout] test tests::backup_userlist_refuses_a_symlinked_source ... ok
[INFO] [stdout] test tests::accepts_flags_after_the_config_path ... ok
[INFO] [stdout] test tests::acquire_userlist_lock_rejects_symlink_sidecar ... ok
[INFO] [stdout] test tests::check_json_implies_check_mode ... ok
[INFO] [stdout] test tests::config_metadata_command_is_routed_to_config_parser ... ok
[INFO] [stdout] test tests::config_metadata_extra_args_show_usage ... ok
[INFO] [stdout] test tests::config_metadata_requires_json_output ... ok
[INFO] [stdout] test tests::config_metadata_json_describes_live_and_restart_settings ... ok
[INFO] [stdout] test tests::config_wizard_command_is_routed_to_config_parser ... ok
[INFO] [stdout] test tests::parses_user_add_command ... ok
[INFO] [stdout] test tests::parses_user_list_command ... ok
[INFO] [stdout] test tests::parses_version_flag ... ok
[INFO] [stdout] test tests::service_help_is_routed_to_service_parser ... ok
[INFO] [stdout] test tests::json_escape_handles_control_characters ... ok
[INFO] [stdout] test tests::check_json_reports_listen_and_acme ... ok
[INFO] [stdout] test tests::config_metadata_covers_every_setting ... ok
[INFO] [stdout] test tests::config_wizard_rejects_public_listener ... ok
[INFO] [stdout] test tests::backup_userlist_replaces_symlink_without_following_it ... ok
[INFO] [stdout] test tests::delete_userlist_entry_reports_missing_user ... ok
[INFO] [stdout] test tests::user_command_requires_userlist ... ok
[INFO] [stdout] test tests::user_usage_includes_full_subcommands ... ok
[INFO] [stdout] test tests::new_userlist_file_is_private_on_unix ... ok
[INFO] [stdout] test tests::upsert_userlist_entry_creates_backup_for_existing_file ... ok
[INFO] [stdout] test tests::parses_user_delete_command ... ok
[INFO] [stdout] test tests::config_flag_requires_value ... ok
[INFO] [stdout] test tests::rejects_a_second_positional_argument ... ok
[INFO] [stdout] test tests::upsert_userlist_entry_replaces_corrupted_argon2_user ... ok
[INFO] [stdout] test tests::upsert_userlist_entry_replaces_existing_user ... ok
[INFO] [stdout] test wizard::tests::changed_output_rebases_untouched_file_defaults ... ok
[INFO] [stdout] test tests::positional_config_file_named_config_still_runs ... ok
[INFO] [stdout] test wizard::tests::content_type_check_accepts_case_and_parameters ... ok
[INFO] [stdout] test tests::missing_userlist_is_not_reported_as_missing_user ... ok
[INFO] [stdout] test wizard::tests::atomic_write_creates_backup_for_existing_config ... ok
[INFO] [stdout] test wizard::tests::config_backup_refuses_a_symlinked_source ... ok
[INFO] [stdout] test wizard::tests::aborted_client_does_not_finish_wizard ... ok
[INFO] [stdout] test wizard::tests::import_flags_dropped_per_rule_bandwidth ... ok
[INFO] [stdout] test wizard::tests::import_flags_collapsed_auth_methods ... ok
[INFO] [stdout] test wizard::tests::config_backup_handles_read_only_config ... ok
[INFO] [stdout] test wizard::tests::import_flags_dropped_userlist_without_username ... ok
[INFO] [stdout] test wizard::tests::config_backup_missing_source_reports_not_found ... ok
[INFO] [stdout] test wizard::tests::import_flags_settings_the_wizard_cannot_represent ... ok
[INFO] [stdout] test wizard::tests::imported_form_extracts_modelled_fields ... ok
[INFO] [stdout] test wizard::tests::imported_form_renders_prefilled_values_and_warnings ... ok
[INFO] [stdout] test wizard::tests::lan_template_generates_valid_config ... ok
[INFO] [stdout] test wizard::tests::incomplete_headers_time_out_without_finishing_wizard ... ok
[INFO] [stdout] test wizard::tests::config_backup_does_not_write_through_a_symlinked_bak ... ok
[INFO] [stdout] test wizard::tests::local_template_generates_valid_config ... ok
[INFO] [stdout] test wizard::tests::lan_template_defaults_to_stdout_logging ... ok
[INFO] [stdout] test wizard::tests::local_template_honors_explicit_logfile ... ok
[INFO] [stdout] test wizard::tests::local_template_rejects_non_loopback_listener ... ok
[INFO] [stdout] test wizard::tests::lan_template_rejects_cleared_userlist_path ... ok
[INFO] [stdout] test wizard::tests::malformed_request_returns_error_without_finishing_wizard ... ok
[INFO] [stdout] test wizard::tests::rendered_form_defaults_logfile_to_stdout ... ok
[INFO] [stdout] test wizard::tests::load_import_prefill_rejects_invalid_config ... ok
[INFO] [stdout] test wizard::tests::relative_logfile_warns_in_config_but_absolute_does_not ... ok
[INFO] [stdout] test wizard::tests::rendered_form_uses_output_relative_userlist_default ... ok
[INFO] [stdout] test wizard::tests::shell_quote_path_keeps_quote_characters_literal ... ok
[INFO] [stdout] test wizard::tests::rulesets_equivalent_distinguishes_bandwidth ... ok
[INFO] [stdout] test wizard::tests::config_backup_replaces_read_only_stale_backup ... ok
[INFO] [stdout] test tests::existing_userlist_file_mode_is_preserved_on_unix ... ok
[INFO] [stdout] test wizard::tests::success_page_omits_userlist_guidance_for_local_template ... ok
[INFO] [stdout] test wizard::tests::success_page_guides_userlist_creation_for_username_template ... ok
[INFO] [stdout] test wizard::tests::token_matches_only_the_exact_token ... ok
[INFO] [stdout] test wizard::tests::success_page_omits_service_commands_off_windows ... ok
[INFO] [stdout] test wizard::tests::unix_metadata_falls_back_when_config_vanishes ... ok
[INFO] [stdout] test wizard::tests::urlencoded_parser_decodes_form_values ... ok
[INFO] [stdout] test wizard::tests::wizard_args_import_defaults_output_to_import_path ... ok
[INFO] [stdout] test wizard::tests::wizard_args_import_keeps_explicit_output ... ok
[INFO] [stdout] test wizard::tests::wizard_args_parse_output_path ... ok
[INFO] [stdout] test wizard::tests::wizard_args_reject_directory_output_path ... ok
[INFO] [stdout] test wizard::tests::wizard_form_rejects_hash_in_config_values ... ok
[INFO] [stdout] test wizard::tests::html_escaping_covers_markup_characters ... ok
[INFO] [stdout] test wizard::tests::wizard_args_reject_multiline_output_path ... ok
[INFO] [stdout] test wizard::tests::extract_trusted_client_matches_only_wizard_rule_shape ... ok
[INFO] [stdout] test wizard::tests::incomplete_body_times_out_without_finishing_wizard ... ok
[INFO] [stdout] test tests::rejects_unknown_option ... ok
[INFO] [stdout] test wizard::tests::wizard_form_rejects_unknown_template ... ok
[INFO] [stdout] test wizard::tests::wizard_generated_config_imports_without_warnings ... ok
[INFO] [stdout] test wizard::tests::wizard_listen_must_be_loopback ... ok
[INFO] [stdout] test wizard::tests::wizard_responses_are_not_cacheable ... ok
[INFO] [stdout] test wizard::tests::wizard_form_rejects_existing_directory_output_path ... ok
[INFO] [stdout] test wizard::tests::new_config_file_is_private_on_unix ... ok
[INFO] [stdout] test wizard::tests::wizard_form_rejects_directory_output_path ... ok
[INFO] [stdout] test wizard::tests::wizard_form_rejects_multiline_output_defaults ... ok
[INFO] [stdout] test wizard::tests::wizard_form_rejects_multiline_config_values ... ok
[INFO] [stdout] test wizard::tests::existing_config_file_mode_is_preserved_on_unix ... ok
[INFO] [stdout] test wizard::tests::atomic_write_removes_temp_file_when_backup_fails ... ok
[INFO] [stdout] test tests::upsert_userlist_entry_supports_current_directory_file ... FAILED
[INFO] [stdout] test tests::userlist_usernames_are_sorted_and_deduplicated ... ok
[INFO] [stdout] test tests::delete_userlist_entry_removes_plain_and_argon2_entries ... ok
[INFO] [stdout] test tests::upsert_userlist_entry_replaces_existing_argon2_user ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- tests::upsert_userlist_entry_supports_current_directory_file stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'tests::upsert_userlist_entry_supports_current_directory_file' (2994) panicked at src/main.rs:1890:75:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: Os { code: 30, kind: ReadOnlyFilesystem, message: "Read-only file system" }
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x60009cd47681 - std[73adb7dc35730857]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x60009cd47681 - std[73adb7dc35730857]::backtrace_rs::backtrace::trace_unsynchronized::<std[73adb7dc35730857]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x60009cd47681 - std[73adb7dc35730857]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x60009cd47681 - <<std[73adb7dc35730857]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[6883ba1bc0fe4ed1]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x60009cd5cd7a - <core[6883ba1bc0fe4ed1]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x60009cd5cd7a - core[6883ba1bc0fe4ed1]::fmt::write
[INFO] [stdout]    6:     0x60009cd4c4ac - std[73adb7dc35730857]::io::default_write_fmt::<alloc[55a36b64bcbf2c0d]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/io/mod.rs:626:11
[INFO] [stdout]    7:     0x60009cd4c4ac - <alloc[55a36b64bcbf2c0d]::vec::Vec<u8> as std[73adb7dc35730857]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/io/mod.rs:1730:13
[INFO] [stdout]    8:     0x60009cd21236 - <std[73adb7dc35730857]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x60009cd21236 - std[73adb7dc35730857]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x60009cd3cec9 - std[73adb7dc35730857]::panicking::default_hook
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x60009cb73120 - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn for<'a, 'b> core[6883ba1bc0fe4ed1]::ops::function::Fn<(&'a std[73adb7dc35730857]::panic::PanicHookInfo<'b>,), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send + core[6883ba1bc0fe4ed1]::marker::Sync> as core[6883ba1bc0fe4ed1]::ops::function::Fn<(&std[73adb7dc35730857]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2333:9
[INFO] [stdout]   12:     0x60009cb73120 - test[980ffaebd391d06d]::test_main_inner::<test[980ffaebd391d06d]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x60009cd3d1f2 - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn for<'a, 'b> core[6883ba1bc0fe4ed1]::ops::function::Fn<(&'a std[73adb7dc35730857]::panic::PanicHookInfo<'b>,), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send + core[6883ba1bc0fe4ed1]::marker::Sync> as core[6883ba1bc0fe4ed1]::ops::function::Fn<(&std[73adb7dc35730857]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2333:9
[INFO] [stdout]   14:     0x60009cd3d1f2 - std[73adb7dc35730857]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:823:13
[INFO] [stdout]   15:     0x60009cd212e2 - std[73adb7dc35730857]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:688:13
[INFO] [stdout]   16:     0x60009cd18619 - std[73adb7dc35730857]::sys::backtrace::__rust_end_short_backtrace::<std[73adb7dc35730857]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x60009cd2236d - __rustc[a7b7b02e776dd976]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:679:5
[INFO] [stdout]   18:     0x60009cd5d57c - core[6883ba1bc0fe4ed1]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x60009cd5d2f2 - core[6883ba1bc0fe4ed1]::result::unwrap_failed
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/result.rs:1870:5
[INFO] [stdout]   20:     0x60009cb25677 - <core[6883ba1bc0fe4ed1]::result::Result<(), core[6883ba1bc0fe4ed1]::io::error::Error>>::unwrap
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/result.rs:1231:23
[INFO] [stdout]   21:     0x60009cb25677 - alighieri[9faa0d08ef8f2b92]::tests::upsert_userlist_entry_supports_current_directory_file
[INFO] [stdout]                                at /opt/rustwide/workdir/src/main.rs:1890:75
[INFO] [stdout]   22:     0x60009cb18e77 - alighieri[9faa0d08ef8f2b92]::tests::upsert_userlist_entry_supports_current_directory_file::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/main.rs:1870:63
[INFO] [stdout]   23:     0x60009cb42a96 - <alighieri[9faa0d08ef8f2b92]::tests::upsert_userlist_entry_supports_current_directory_file::{closure#0} as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x60009cb6645b - <fn() -> core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x60009cb6645b - test[980ffaebd391d06d]::__rust_begin_short_backtrace::<core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>, fn() -> core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:724:18
[INFO] [stdout]   26:     0x60009cb73aa5 - test[980ffaebd391d06d]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:747:74
[INFO] [stdout]   27:     0x60009cb73aa5 - <core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   28:     0x60009cb73aa5 - std[73adb7dc35730857]::panicking::catch_unwind::do_call::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>, core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:576:43
[INFO] [stdout]   29:     0x60009cb73aa5 - std[73adb7dc35730857]::panicking::catch_unwind::<core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>, core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x60009cb73aa5 - std[73adb7dc35730857]::panic::catch_unwind::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>, core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x60009cb73aa5 - test[980ffaebd391d06d]::run_test_in_process
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:747:27
[INFO] [stdout]   32:     0x60009cb73aa5 - test[980ffaebd391d06d]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:668:43
[INFO] [stdout]   33:     0x60009cb6e554 - test[980ffaebd391d06d]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:698:41
[INFO] [stdout]   34:     0x60009cb6e554 - std[73adb7dc35730857]::sys::backtrace::__rust_begin_short_backtrace::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x60009cb76bf2 - std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   36:     0x60009cb76bf2 - <core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   37:     0x60009cb76bf2 - std[73adb7dc35730857]::panicking::catch_unwind::do_call::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:576:43
[INFO] [stdout]   38:     0x60009cb76bf2 - std[73adb7dc35730857]::panicking::catch_unwind::<(), core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x60009cb76bf2 - std[73adb7dc35730857]::panic::catch_unwind::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x60009cb76bf2 - std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   41:     0x60009cb76bf2 - <std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1} as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x60009cd4622f - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn core[6883ba1bc0fe4ed1]::ops::function::FnOnce<(), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2319:9
[INFO] [stdout]   43:     0x60009cd4622f - <std[73adb7dc35730857]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/thread/unix.rs:123:17
[INFO] [stdout]   44:     0x736be9fa3aa4 - <unknown>
[INFO] [stdout]   45:     0x736bea030a64 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     tests::upsert_userlist_entry_supports_current_directory_file
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 90 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.89s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--bin alighieri`
[INFO] running `Command { std: "docker" "inspect" "72b080822aa32de1fffa22aba76801b0b9496eae935065edd6b7eb0f4d3fd2f8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "72b080822aa32de1fffa22aba76801b0b9496eae935065edd6b7eb0f4d3fd2f8", kill_on_drop: false }`
[INFO] [stdout] 72b080822aa32de1fffa22aba76801b0b9496eae935065edd6b7eb0f4d3fd2f8
