[INFO] cloning repository https://github.com/misaka-cpu/nftables-nat-rust-enhanced
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/misaka-cpu/nftables-nat-rust-enhanced" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmisaka-cpu%2Fnftables-nat-rust-enhanced", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmisaka-cpu%2Fnftables-nat-rust-enhanced'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c38966e492db529915f207604456947876524a4b
[INFO] testing misaka-cpu/nftables-nat-rust-enhanced 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%2Fmisaka-cpu%2Fnftables-nat-rust-enhanced" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/misaka-cpu/nftables-nat-rust-enhanced
[INFO] finished tweaking git repo https://github.com/misaka-cpu/nftables-nat-rust-enhanced
[INFO] tweaked toml for git repo https://github.com/misaka-cpu/nftables-nat-rust-enhanced written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/misaka-cpu/nftables-nat-rust-enhanced 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/misaka-cpu/nftables-nat-rust-enhanced 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]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded toml_writer v1.0.6+spec-1.1.0
[INFO] [stderr]   Downloaded winnow v0.7.14
[INFO] [stderr]   Downloaded toml_datetime v0.7.5+spec-1.1.0
[INFO] [stderr]   Downloaded clap_lex v1.0.0
[INFO] [stderr]   Downloaded windows-strings v0.5.1
[INFO] [stderr]   Downloaded windows-implement v0.60.2
[INFO] [stderr]   Downloaded itoa v1.0.17
[INFO] [stderr]   Downloaded env_filter v1.0.0
[INFO] [stderr]   Downloaded colorchoice v1.0.4
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.121
[INFO] [stderr]   Downloaded windows-interface v0.59.3
[INFO] [stderr]   Downloaded serde_spanned v1.0.4
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.121
[INFO] [stderr]   Downloaded phf_shared v0.12.1
[INFO] [stderr]   Downloaded siphasher v1.0.3
[INFO] [stderr]   Downloaded anstyle v1.0.13
[INFO] [stderr]   Downloaded windows-result v0.4.1
[INFO] [stderr]   Downloaded toml_parser v1.0.9+spec-1.1.0
[INFO] [stderr]   Downloaded env_logger v0.11.9
[INFO] [stderr]   Downloaded anstream v0.6.21
[INFO] [stderr]   Downloaded anstyle-parse v0.2.7
[INFO] [stderr]   Downloaded phf v0.12.1
[INFO] [stderr]   Downloaded ipnetwork v0.20.0
[INFO] [stderr]   Downloaded clap_derive v4.5.55
[INFO] [stderr]   Downloaded once_cell v1.21.3
[INFO] [stderr]   Downloaded iana-time-zone v0.1.65
[INFO] [stderr]   Downloaded windows-core v0.62.2
[INFO] [stderr]   Downloaded toml v0.9.12+spec-1.1.0
[INFO] [stderr]   Downloaded portable-atomic-util v0.2.7
[INFO] [stderr]   Downloaded clap v4.5.60
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.121
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.121
[INFO] [stderr]   Downloaded cc v1.2.56
[INFO] [stderr]   Downloaded jiff-static v0.2.23
[INFO] [stderr]   Downloaded bumpalo v3.20.2
[INFO] [stderr]   Downloaded js-sys v0.3.98
[INFO] [stderr]   Downloaded clap_builder v4.5.60
[INFO] [stderr]   Downloaded portable-atomic v1.13.1
[INFO] [stderr]   Downloaded chrono v0.4.44
[INFO] [stderr]   Downloaded jiff v0.2.23
[INFO] [stderr]   Downloaded chrono-tz v0.10.4
[INFO] [stderr]   Downloaded libc v0.2.182
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] 7211a84526e7f4e1865f238881d1ed12fcc2a68e4f9fdd50e3ca5322487c896c
[INFO] running `Command { std: "docker" "start" "7211a84526e7f4e1865f238881d1ed12fcc2a68e4f9fdd50e3ca5322487c896c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7211a84526e7f4e1865f238881d1ed12fcc2a68e4f9fdd50e3ca5322487c896c", 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" "7211a84526e7f4e1865f238881d1ed12fcc2a68e4f9fdd50e3ca5322487c896c" "/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" "7211a84526e7f4e1865f238881d1ed12fcc2a68e4f9fdd50e3ca5322487c896c", 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" "7211a84526e7f4e1865f238881d1ed12fcc2a68e4f9fdd50e3ca5322487c896c" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling anstyle v1.0.13
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling colorchoice v1.0.4
[INFO] [stderr]    Compiling siphasher v1.0.3
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling clap_lex v1.0.0
[INFO] [stderr]    Compiling winnow v0.7.14
[INFO] [stderr]    Compiling anstyle-parse v0.2.7
[INFO] [stderr]    Compiling phf_shared v0.12.1
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling chrono-tz v0.10.4
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling itoa v1.0.17
[INFO] [stderr]    Compiling phf v0.12.1
[INFO] [stderr]    Compiling jiff v0.2.23
[INFO] [stderr]    Compiling anstream v0.6.21
[INFO] [stderr]    Compiling toml_writer v1.0.6+spec-1.1.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling clap_builder v4.5.60
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling toml_parser v1.0.9+spec-1.1.0
[INFO] [stderr]    Compiling toml_datetime v0.7.5+spec-1.1.0
[INFO] [stderr]    Compiling serde_spanned v1.0.4
[INFO] [stderr]    Compiling toml v0.9.12+spec-1.1.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling env_filter v1.0.0
[INFO] [stderr]    Compiling env_logger v0.11.9
[INFO] [stderr]    Compiling clap v4.5.60
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling ipnetwork v0.20.0
[INFO] [stderr]    Compiling nat-common v2.0.0 (/opt/rustwide/workdir/nat-common)
[INFO] [stderr]    Compiling nat-cli v2.0.0 (/opt/rustwide/workdir/nat-cli)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 48.24s
[INFO] running `Command { std: "docker" "inspect" "7211a84526e7f4e1865f238881d1ed12fcc2a68e4f9fdd50e3ca5322487c896c", 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" "7211a84526e7f4e1865f238881d1ed12fcc2a68e4f9fdd50e3ca5322487c896c" "/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 nat-common v2.0.0 (/opt/rustwide/workdir/nat-common)
[INFO] [stderr]    Compiling nat-cli v2.0.0 (/opt/rustwide/workdir/nat-cli)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 12.36s
[INFO] running `Command { std: "docker" "inspect" "7211a84526e7f4e1865f238881d1ed12fcc2a68e4f9fdd50e3ca5322487c896c", 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" "7211a84526e7f4e1865f238881d1ed12fcc2a68e4f9fdd50e3ca5322487c896c" "/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/main.rs (/opt/rustwide/target/debug/deps/nat-6224cb4f32f575cb)
[INFO] [stdout] 
[INFO] [stdout] running 301 tests
[INFO] [stdout] test config::redirect_build_tests::chinese_user_comment_is_not_written_to_nft_comment ... ok
[INFO] [stdout] test config::redirect_build_tests::long_target_and_protocol_all_do_not_make_nft_comments_long ... ok
[INFO] [stdout] test config::redirect_build_tests::generated_nft_comments_are_short_stable_ids ... ok
[INFO] [stdout] test config::redirect_build_tests::test_build_redirect_range_ipv4 ... ok
[INFO] [stdout] test config::redirect_build_tests::test_build_redirect_both_ipv ... ok
[INFO] [stdout] test config::redirect_build_tests::disabled_rules_are_not_loaded_into_runtime_cells ... ok
[INFO] [stdout] test config::redirect_build_tests::test_build_redirect_single_ipv4 ... ok
[INFO] [stdout] test config::redirect_parse_tests::test_backward_compatibility_localhost ... ok
[INFO] [stdout] test config::redirect_parse_tests::test_parse_redirect_port_range ... ok
[INFO] [stdout] test config::redirect_parse_tests::test_parse_redirect_single_port ... ok
[INFO] [stdout] test config::redirect_parse_tests::test_parse_redirect_with_protocol ... ok
[INFO] [stdout] test ip::test::allows_fake_ip_when_reject_disabled ... ok
[INFO] [stdout] test ip::test::accepts_real_ip_from_mock_resolver ... ok
[INFO] [stdout] test ip::test::rejects_fake_ip_from_mock_resolver ... ok
[INFO] [stdout] test ip::test::test_remote_ip_fail ... ok
[INFO] [stdout] test ip::test::test_remote_ip_both ... ok
[INFO] [stdout] test ip::test::test_remote_ip_v4 ... ok
[INFO] [stdout] test ip::test::detects_default_fake_ip_range ... ok
[INFO] [stdout] test menu::tests::access_control_brief_lines_note_dynamic_whitelist_inactive_outside_whitelist_mode ... ok
[INFO] [stdout] test menu::tests::access_control_brief_lines_warn_when_whitelist_has_no_sources ... ok
[INFO] [stdout] test menu::tests::build_update_plan_latest_falls_back_when_resolver_returns_invalid ... ok
[INFO] [stdout] test menu::tests::adds_range_rule_to_toml_config ... ok
[INFO] [stdout] test menu::tests::build_update_plan_specified_version_keeps_input_as_install_arg ... ok
[INFO] [stdout] test menu::tests::build_update_plan_latest_resolved_to_real_tag ... ok
[INFO] [stdout] test menu::tests::cidr_expand_label_renders_both_modes ... ok
[INFO] [stdout] test menu::tests::access_control_brief_lines_reflect_whitelist_and_geoip_counts ... ok
[INFO] [stdout] test menu::tests::add_single_rule_persists_snat_ip ... ok
[INFO] [stdout] test menu::tests::cli_audit_does_not_log_raw_bot_token ... ok
[INFO] [stdout] test menu::tests::build_update_plan_latest_falls_back_when_resolver_fails ... ok
[INFO] [stdout] test ip::test::test_resolve_localhost ... ok
[INFO] [stdout] test menu::tests::access_control_brief_lines_warn_when_global_disabled ... ok
[INFO] [stdout] test menu::tests::adds_single_rule_to_toml_config ... ok
[INFO] [stdout] test menu::tests::cidr_expand_menu_lists_option_8_in_dynamic_whitelist_submenu ... ok
[INFO] [stdout] test menu::tests::combined_policy_describes_snat_off_and_empty_egress ... ok
[INFO] [stdout] test menu::tests::combined_policy_emits_ipv4_only_hint_for_snat_fixed ... ok
[INFO] [stdout] test menu::tests::combined_policy_includes_egress_snat_mss ... ok
[INFO] [stdout] test menu::tests::combined_policy_no_restriction_when_both_off ... ok
[INFO] [stdout] test menu::tests::combined_policy_no_off_warning_when_snat_masquerade_or_fixed ... ok
[INFO] [stdout] test menu::tests::combined_policy_shows_and_for_blacklist_plus_geoip ... ok
[INFO] [stdout] test menu::tests::cli_audit_failure_does_not_break_main_flow ... ok
[INFO] [stdout] test menu::tests::combined_policy_emits_off_route_warning_for_snat_off ... ok
[INFO] [stdout] test menu::tests::cli_audit_helpers_emit_one_json_line_per_action ... ok
[INFO] [stdout] test menu::tests::cli_audit_disabled_writes_nothing ... ok
[INFO] [stdout] test menu::tests::cidr_expand_warning_text_explains_256_addresses_and_double_confirm ... ok
[INFO] [stdout] test menu::tests::cidr_expand_save_reason_is_in_nft_affecting_list ... ok
[INFO] [stdout] test menu::tests::combined_policy_blacklist_only_when_geoip_forward_off ... ok
[INFO] [stdout] test menu::tests::combined_policy_geoip_only_when_access_control_off ... ok
[INFO] [stdout] test menu::tests::combined_policy_details_still_available_via_format_combined_policy_status ... ok
[INFO] [stdout] test menu::tests::combined_policy_emits_mss_scope_hint_when_enabled ... ok
[INFO] [stdout] test menu::tests::access_control_brief_lines_show_summary_not_long_combined_policy ... ok
[INFO] [stdout] test menu::tests::combined_policy_shows_and_for_whitelist_plus_geoip ... ok
[INFO] [stdout] test menu::tests::combined_policy_summary_is_single_line ... ok
[INFO] [stdout] test menu::tests::connectivity_report_active_applied_reachable_concludes_ok ... ok
[INFO] [stdout] test menu::tests::connectivity_report_global_disabled_warns_and_skips_nft_judgement ... ok
[INFO] [stdout] test menu::tests::connectivity_report_snat_section_shows_default_for_rule_without_snat_ip ... ok
[INFO] [stdout] test menu::tests::connectivity_report_target_tcp_unreachable_still_warns ... ok
[INFO] [stdout] test menu::tests::connectivity_report_inactive_service_tells_user_to_check_systemctl_status ... ok
[INFO] [stdout] test menu::tests::deletes_rule_by_index ... ok
[INFO] [stdout] test menu::tests::default_rules_summaries_still_render_after_simplification ... ok
[INFO] [stdout] test menu::tests::dynamic_whitelist_brief_excludes_snat_mss_egress_long_text ... ok
[INFO] [stdout] test menu::tests::connectivity_report_udp_applied_uses_info_not_warning_for_external_validation ... ok
[INFO] [stdout] test menu::tests::dynamic_whitelist_brief_no_warning_when_current_ips_present ... ok
[INFO] [stdout] test menu::tests::connectivity_report_unconfirmed_nft_with_reachable_target_does_not_claim_not_applied ... ok
[INFO] [stdout] test menu::tests::connectivity_report_keeps_h_entry_for_detailed_commands ... ok
[INFO] [stdout] test menu::tests::dynamic_whitelist_brief_warn_for_whitelist_zero_current_ips ... ok
[INFO] [stdout] test menu::tests::connectivity_report_warns_when_per_rule_snat_ip_missing_in_nft ... ok
[INFO] [stdout] test menu::tests::connectivity_report_disabled_rule_says_no_nft_generation ... ok
[INFO] [stdout] test menu::tests::dynamic_whitelist_brief_shows_summary_without_full_combined_policy ... ok
[INFO] [stdout] test menu::tests::dynamic_whitelist_status_mentions_whitelist_requirement_and_stale_counts ... ok
[INFO] [stdout] test menu::tests::corrupt_last_good_prune_is_nonfatal_for_rule_delete ... ok
[INFO] [stdout] test menu::tests::dynamic_whitelist_brief_hint_for_non_whitelist_mode ... ok
[INFO] [stdout] test menu::tests::dynamic_whitelist_brief_hint_for_enabled_with_zero_domains ... ok
[INFO] [stdout] test menu::tests::edit_rule_cancel_confirmation_means_do_not_save ... ok
[INFO] [stdout] test menu::tests::edit_rule_conflict_detection_excludes_self ... ok
[INFO] [stdout] test menu::tests::edit_rule_detects_port_range_overlap ... ok
[INFO] [stdout] test menu::tests::edit_rule_detects_protocol_all_overlap_with_tcp_udp ... ok
[INFO] [stdout] test menu::tests::dynamic_whitelist_detail_shows_current_last_good_and_error ... ok
[INFO] [stdout] test menu::tests::edit_rule_audit_detail_includes_changed_fields_only ... ok
[INFO] [stdout] test menu::tests::edit_rule_disabled_message_mentions_no_nft_generation ... ok
[INFO] [stdout] test menu::tests::edit_rule_eof_prompt_result_cancels_without_panic ... ok
[INFO] [stdout] test menu::tests::edit_rule_global_disabled_message_allows_saved_config ... ok
[INFO] [stdout] test menu::tests::edit_rule_noop_has_no_changed_fields ... ok
[INFO] [stdout] test menu::tests::edit_rule_port_change_requires_local_port_conflict_check ... ok
[INFO] [stdout] test menu::tests::edit_rule_rejects_conflict_with_other_rule ... ok
[INFO] [stdout] test menu::tests::edit_rule_preserves_quota_fields_and_updates_stats_label_alignment ... ok
[INFO] [stdout] test menu::tests::edit_rule_updates_comment_success ... ok
[INFO] [stdout] test menu::tests::edit_rule_updates_enabled_success ... ok
[INFO] [stdout] test menu::tests::edit_rule_validates_target_address ... ok
[INFO] [stdout] test menu::tests::external_test_brief_is_short_and_omits_detailed_examples ... ok
[INFO] [stdout] test menu::tests::external_test_brief_uses_protocol_hint_for_udp ... ok
[INFO] [stdout] test menu::tests::edit_rule_updates_protocol_success ... ok
[INFO] [stdout] test menu::tests::external_test_detailed_distinguishes_from_geoip_egress_last_good ... ok
[INFO] [stdout] test menu::tests::edit_rule_updates_single_sport_success ... ok
[INFO] [stdout] test menu::tests::external_test_detailed_tcp_ip_target_omits_host_header ... ok
[INFO] [stdout] test menu::tests::edit_rule_updates_dport_success ... ok
[INFO] [stdout] test menu::tests::access_control_menu_lists_ssh_detection_detail_entry_and_save_apply_renumbered ... ok
[INFO] [stdout] test menu::tests::formats_stats_overview_with_mode_and_baseline_hints ... ok
[INFO] [stdout] test menu::tests::formats_stats_top10 ... ok
[INFO] [stdout] test menu::tests::global_enabled_update_reason_is_nft_affecting_and_audit_has_expected_detail ... ok
[INFO] [stdout] test menu::tests::invalid_ui_timezone_falls_back_without_panic ... ok
[INFO] [stdout] test menu::tests::edit_rule_updates_target_success ... ok
[INFO] [stdout] test menu::tests::global_diagnostics_renders_policy_and_last_good ... ok
[INFO] [stdout] test menu::tests::extract_release_tag_handles_github_redirect_url ... ok
[INFO] [stdout] test menu::tests::last_good_details_still_available_via_format_last_good_status ... ok
[INFO] [stdout] test menu::tests::last_good_summary_is_single_line ... ok
[INFO] [stdout] test menu::tests::advanced_network_menu_exposes_single_global_diagnostics_entry ... ok
[INFO] [stdout] test menu::tests::edit_rule_safe_write_uses_rule_edit_reason_and_backup ... ok
[INFO] [stdout] test menu::tests::dynamic_whitelist_menu_title_uses_simplified_name ... ok
[INFO] [stdout] test menu::tests::external_test_detailed_tcp_domain_target_includes_host_and_sni ... ok
[INFO] [stdout] test menu::tests::external_test_detailed_udp_only_shows_udp_block ... ok
[INFO] [stdout] test menu::tests::parse_latest_tag_from_curl_headers_picks_final_redirect ... ok
[INFO] [stdout] test menu::tests::parse_latest_tag_returns_none_when_no_tag_in_redirect ... ok
[INFO] [stdout] test menu::tests::main_menu_title_includes_version_string_from_build_version ... ok
[INFO] [stdout] test menu::tests::main_menu_title_uses_dev_when_unknown ... ok
[INFO] [stdout] test menu::tests::manages_access_entries ... ok
[INFO] [stdout] test menu::tests::menu_outcome_cancelled_signals_skip_wait ... ok
[INFO] [stdout] test menu::tests::nft_affecting_save_hint_still_mentions_apply_path ... ok
[INFO] [stdout] test menu::tests::last_good_status_uses_ui_timezone_when_configured ... ok
[INFO] [stdout] test menu::tests::non_nft_save_hint_does_not_mention_systemctl_or_nft_commands ... ok
[INFO] [stdout] test menu::tests::edit_rule_target_change_prunes_stale_last_good_cache ... ok
[INFO] [stdout] test menu::tests::parse_mss_size_accepts_boundary_values ... ok
[INFO] [stdout] test menu::tests::parse_mss_size_rejects_out_of_range_and_non_numeric ... ok
[INFO] [stdout] test menu::tests::last_good_status_includes_summary_lines ... ok
[INFO] [stdout] test menu::tests::parse_timedatectl_field_recognizes_extra_keys ... ok
[INFO] [stdout] test menu::tests::parse_timedatectl_field_recognizes_systemd_output ... ok
[INFO] [stdout] test menu::tests::port_conflict_reject_keeps_config_unchanged ... ok
[INFO] [stdout] test menu::tests::port_conflict_single_unoccupied_passes_with_mock_ss ... ok
[INFO] [stdout] test menu::tests::parses_release_version_from_nat_version_output ... ok
[INFO] [stdout] test menu::tests::parse_timedatectl_field_does_not_panic_on_empty_input ... ok
[INFO] [stdout] test menu::tests::port_conflict_single_occupied_prompts_and_default_rejects ... ok
[INFO] [stdout] test menu::tests::readme_documents_auto_reload_after_update ... ok
[INFO] [stdout] test menu::tests::port_conflict_ss_missing_warns_without_blocking ... ok
[INFO] [stdout] test menu::tests::readme_acknowledges_alecthw_chnlist_accurately ... ok
[INFO] [stdout] test menu::tests::port_range_conflict_summary_shows_first_ten ... ok
[INFO] [stdout] test menu::tests::last_good_status_default_ui_still_shanghai ... ok
[INFO] [stdout] test menu::tests::port_conflict_override_allows_rule_and_writes_audit ... ok
[INFO] [stdout] test menu::tests::readme_documents_cn4_url_replaceable_and_disclaimer ... ok
[INFO] [stdout] test menu::tests::parses_port_range_conflicts_from_mock_ss_tcp_and_udp ... ok
[INFO] [stdout] test menu::tests::print_config_saved_hint_mentions_detection_cycle_and_restart ... ok
[INFO] [stdout] test menu::tests::print_nft_detection_block_smoke ... ok
[INFO] [stdout] test menu::tests::readme_documents_short_external_test_hint ... ok
[INFO] [stdout] test menu::tests::readme_documents_quota_total_traffic_mode_relation ... ok
[INFO] [stdout] test menu::tests::readme_documents_source_whitelist_troubleshooting ... ok
[INFO] [stdout] test menu::tests::readme_documents_snat_mss_combined_policy ... ok
[INFO] [stdout] test menu::tests::reason_affects_nft_recognizes_rule_and_policy_reasons ... ok
[INFO] [stdout] test menu::tests::readme_documents_combined_policy ... ok
[INFO] [stdout] test menu::tests::readme_documents_last_good_and_audit ... ok
[INFO] [stdout] test menu::tests::reload_action_skips_when_no_tty ... ok
[INFO] [stdout] test menu::tests::readme_documents_quota ... ok
[INFO] [stdout] test menu::tests::reload_action_skips_when_update_failed ... ok
[INFO] [stdout] test menu::tests::reload_action_execs_when_all_conditions_met ... ok
[INFO] [stdout] test menu::tests::readme_documents_v0_6_0_audit_rotation_and_safe_write_and_latest_resolution ... ok
[INFO] [stdout] test menu::tests::last_good_status_uses_shanghai_24h_not_rfc3339 ... ok
[INFO] [stdout] test menu::tests::recent_source_ip_view_marks_manual_only ... ok
[INFO] [stdout] test menu::tests::readme_documents_v0_6_1_save_hint_split_and_script_hash ... ok
[INFO] [stdout] test menu::tests::reload_action_reports_missing_binary ... ok
[INFO] [stdout] test menu::tests::reason_affects_nft_skips_telegram_ui_audit ... ok
[INFO] [stdout] test menu::tests::rule_edit_reason_is_nft_affecting ... ok
[INFO] [stdout] test menu::tests::readme_does_not_misattribute_cn_ip_list_to_alecthw ... ok
[INFO] [stdout] test menu::tests::rule_delete_save_hint_mentions_backup_skip_and_omits_backup_dir ... ok
[INFO] [stdout] test menu::tests::show_rules_default_omits_full_policy_block ... ok
[INFO] [stdout] test menu::tests::show_rules_default_marks_egress_when_enabled ... ok
[INFO] [stdout] test menu::tests::show_rules_default_includes_summary_one_liners ... ok
[INFO] [stdout] test menu::tests::show_rules_default_shows_quota_brief_when_enabled ... ok
[INFO] [stdout] test menu::tests::show_rules_default_warns_when_global_disabled ... ok
[INFO] [stdout] test menu::tests::safe_write_config_to_when_backup_fails_keeps_original ... ok
[INFO] [stdout] test menu::tests::safe_write_config_to_audit_does_not_leak_bot_token ... ok
[INFO] [stdout] test menu::tests::safe_write_config_to_when_rename_fails_keeps_original ... ok
[INFO] [stdout] test menu::tests::sanitize_backup_reason_filters_path_traversal_and_special_chars ... ok
[INFO] [stdout] test menu::tests::show_rules_default_omits_full_last_good_block ... ok
[INFO] [stdout] test menu::tests::source_ip_query_access_control_off_reports_unrestricted_source ... ok
[INFO] [stdout] test menu::tests::source_ip_query_dynamic_cidr_expand_false_matches_only_32 ... ok
[INFO] [stdout] test menu::tests::source_ip_query_dynamic_cidr_expand_true_matches_24 ... ok
[INFO] [stdout] test menu::tests::source_ip_query_hits_dynamic_current_ip ... ok
[INFO] [stdout] test menu::tests::source_ip_query_geoip_enabled_but_data_unavailable_is_unknown ... ok
[INFO] [stdout] test menu::tests::source_ip_query_blacklist_hit_refuses_first ... ok
[INFO] [stdout] test menu::tests::source_ip_query_ipv6_dynamic_whitelist_not_enabled_is_explicit ... ok
[INFO] [stdout] test menu::tests::safe_write_rule_delete_skips_backup_but_writes_atomically_and_audits ... ok
[INFO] [stdout] test menu::tests::ssh_client_parses_ipv4_source ... ok
[INFO] [stdout] test menu::tests::safe_write_telegram_config_update_still_creates_backup ... ok
[INFO] [stdout] test menu::tests::source_ip_query_misses_static_whitelist ... ok
[INFO] [stdout] test menu::tests::ssh_source_add_allows_off_mode_without_enabling_whitelist ... ok
[INFO] [stdout] test menu::tests::ssh_source_add_accepts_ipv4_24_and_ipv6_128 ... ok
[INFO] [stdout] test menu::tests::ssh_connection_parses_ipv4_source ... ok
[INFO] [stdout] test menu::tests::ssh_source_add_deduplicates_existing_entry ... ok
[INFO] [stdout] test menu::tests::ssh_connection_takes_priority_over_ssh_client ... ok
[INFO] [stdout] test menu::tests::safe_write_rule_add_still_creates_backup ... ok
[INFO] [stdout] test menu::tests::ssh_source_add_allows_whitelist_mode ... ok
[INFO] [stdout] test menu::tests::show_rules_default_per_rule_includes_core_fields ... ok
[INFO] [stdout] test menu::tests::safe_write_rule_toggle_still_creates_backup ... ok
[INFO] [stdout] test menu::tests::ssh_source_detection_returns_none_without_env ... ok
[INFO] [stdout] test menu::tests::source_ip_query_hits_static_whitelist ... ok
[INFO] [stdout] test menu::tests::ssh_source_cidr_candidates_cover_ipv4_32_ipv4_24_and_ipv6_128 ... ok
[INFO] [stdout] test menu::tests::telegram_curl_command_has_timeouts_server_side ... ok
[INFO] [stdout] test menu::tests::telegram_server_error_sanitizes_bot_token ... ok
[INFO] [stdout] test menu::tests::telegram_send_failure_returns_err_without_panic ... ok
[INFO] [stdout] test menu::tests::telegram_test_failure_message_does_not_leak_bot_token ... ok
[INFO] [stdout] test menu::tests::rule_delete_prunes_last_good_cache_and_writes_audit ... ok
[INFO] [stdout] test menu::tests::ssh_source_add_refuses_blacklist_mode ... ok
[INFO] [stdout] test menu::tests::safe_write_config_to_creates_backup_and_writes_atomically ... ok
[INFO] [stdout] test menu::tests::show_rules_page_advertises_only_d_and_enter ... ok
[INFO] [stdout] test menu::tests::telegram_cli_error_sanitizes_bot_token ... ok
[INFO] [stdout] test menu::tests::telegram_curl_command_has_timeouts_cli_side ... ok
[INFO] [stdout] test menu::tests::source_policy_detail_lines_still_show_full_combined_policy ... ok
[INFO] [stdout] test menu::tests::update_display_does_not_show_package_version_as_release ... ok
[INFO] [stdout] test menu::tests::validate_fixed_source_ip_accepts_ipv4 ... ok
[INFO] [stdout] test menu::tests::ssh_source_add_reason_is_nft_affecting_and_audit_has_expected_detail ... ok
[INFO] [stdout] test menu::tests::validate_fixed_source_ip_rejects_empty_and_ipv6_and_invalid ... ok
[INFO] [stdout] test menu::tests::telegram_test_failure_message_lists_timeout_and_causes ... ok
[INFO] [stdout] test menu::tests::validates_optional_snat_ip_input ... ok
[INFO] [stdout] test menu::tests::ui_timezone_can_be_set_via_toml_and_round_trips ... ok
[INFO] [stdout] test menu::tests::validates_update_version_tags ... ok
[INFO] [stdout] test menu::tests::whitelist_empty_lock_warning_cancel_keeps_mode_unchanged ... ok
[INFO] [stdout] test prepare::tests::forward_policy_accept_emits_no_warning ... ok
[INFO] [stdout] test menu::tests::validates_inputs ... ok
[INFO] [stdout] test prepare::tests::forward_policy_drop_only_emits_warning_lines ... ok
[INFO] [stdout] test menu::tests::whitelist_empty_lock_warning_triggers_without_static_or_dynamic_ip ... ok
[INFO] [stdout] test safe_apply_tests::blacklist_ipv4_single_rule_adds_port_scoped_drop ... ok
[INFO] [stdout] test safe_apply_tests::audit_resolution_events_writes_to_audit_file ... ok
[INFO] [stdout] test prepare::tests::test_deserialize_nftables_output ... ok
[INFO] [stdout] test menu::tests::ui_timezone_save_hint_uses_short_form ... ok
[INFO] [stdout] test prepare::tests::test_deserialize_unknown_entry ... ok
[INFO] [stdout] test safe_apply_tests::access_control_supports_ranges_ipv6_and_all_protocol ... ok
[INFO] [stdout] test menu::tests::whitelist_empty_lock_warning_override_writes_audit_warn ... ok
[INFO] [stdout] test safe_apply_tests::ddns_refresh_interval_allows_short_test_values ... ok
[INFO] [stdout] test safe_apply_tests::ddns_refresh_interval_defaults_to_three_hundred ... ok
[INFO] [stdout] test safe_apply_tests::ddns_refresh_interval_rejects_too_low_values ... ok
[INFO] [stdout] test safe_apply_tests::detects_missing_managed_table_errors ... ok
[INFO] [stdout] test safe_apply_tests::backup_fail_skips_write_and_keeps_original_toml ... ok
[INFO] [stdout] test safe_apply_tests::combined_blacklist_and_geoip_emit_layered_drops ... ok
[INFO] [stdout] test safe_apply_tests::dynamic_whitelist_empty_result_does_not_open_whitelist ... ok
[INFO] [stdout] test safe_apply_tests::dynamic_whitelist_merges_with_static_whitelist_for_rules ... ok
[INFO] [stdout] test safe_apply_tests::dynamic_whitelist_change_writes_audit ... ok
[INFO] [stdout] test safe_apply_tests::dynamic_whitelist_dns_failure_writes_audit ... ok
[INFO] [stdout] test safe_apply_tests::dynamic_whitelist_cidr_expand_24_generates_cidr_saddr_match ... ok
[INFO] [stdout] test menu::tests::safe_write_dynamic_whitelist_domain_changes_create_backup ... ok
[INFO] [stdout] test safe_apply_tests::combined_whitelist_and_geoip_apply_both_layers ... ok
[INFO] [stdout] test safe_apply_tests::dynamic_whitelist_does_not_affect_access_control_off_or_blacklist ... ok
[INFO] [stdout] test safe_apply_tests::dynamic_whitelist_telegram_notifies_only_on_change_without_token_in_message ... ok
[INFO] [stdout] test safe_apply_tests::egress_control_default_disabled_does_not_filter ... ok
[INFO] [stdout] test safe_apply_tests::egress_control_empty_allowed_skips_all_forwards ... ok
[INFO] [stdout] test safe_apply_tests::egress_control_skips_targets_not_in_allowed_cidrs ... ok
[INFO] [stdout] test safe_apply_tests::empty_file_whitelist_keeps_forward_closed ... ok
[INFO] [stdout] test safe_apply_tests::empty_rules_still_builds_managed_tables_script ... ok
[INFO] [stdout] test safe_apply_tests::fake_ip_is_not_written_to_generated_nft_script ... ok
[INFO] [stdout] test safe_apply_tests::egress_control_uses_resolved_ip_for_ip_literal_domain ... ok
[INFO] [stdout] test safe_apply_tests::geoip_alone_drops_non_cn_even_without_blacklist ... ok
[INFO] [stdout] test safe_apply_tests::file_whitelist_does_not_affect_access_control_off ... ok
[INFO] [stdout] test safe_apply_tests::geoip_disabled_produces_no_geoip_rules ... ok
[INFO] [stdout] test safe_apply_tests::file_whitelist_source_merges_with_static_entries ... ok
[INFO] [stdout] test safe_apply_tests::global_disabled_does_not_mutate_rule_enabled ... ok
[INFO] [stdout] test safe_apply_tests::geoip_forward_skips_disabled_rules ... ok
[INFO] [stdout] test safe_apply_tests::geoip_enabled_but_cn4_missing_skips_rules_with_warning ... ok
[INFO] [stdout] test safe_apply_tests::file_whitelist_source_generates_saddr_match ... ok
[INFO] [stdout] test safe_apply_tests::global_disabled_generates_no_forwarding_rules_but_keeps_managed_tables ... ok
[INFO] [stdout] test safe_apply_tests::geoip_forward_emits_cn4_set_and_drop_rules ... ok
[INFO] [stdout] test safe_apply_tests::geoip_ssh_restricts_only_configured_ssh_port_with_lan ... ok
[INFO] [stdout] test safe_apply_tests::geoip_ssh_default_disabled_emits_no_ssh_rules ... ok
[INFO] [stdout] test safe_apply_tests::global_enabled_true_matches_existing_generation ... ok
[INFO] [stdout] test safe_apply_tests::global_disabled_keeps_geoip_ssh_rules_but_skips_forward_geoip ... ok
[INFO] [stdout] test safe_apply_tests::invalid_file_whitelist_errors_before_access_control_off_can_ignore_it ... ok
[INFO] [stdout] test safe_apply_tests::last_good_disabled_does_not_fall_back ... ok
[INFO] [stdout] test safe_apply_tests::last_good_fallback_emits_rule_when_cache_has_ip ... ok
[INFO] [stdout] test safe_apply_tests::last_good_fallback_skips_rule_when_cache_missing ... ok
[INFO] [stdout] test safe_apply_tests::mss_clamp_enabled_emits_forward_chain_clamp_only ... ok
[INFO] [stdout] test safe_apply_tests::load_runtime_config_reads_ddns_interval_from_toml ... ok
[INFO] [stdout] test safe_apply_tests::main_loop_sleep_uses_next_due_task_and_is_capped ... ok
[INFO] [stdout] test safe_apply_tests::last_good_use_on_dns_failure_flag_can_be_turned_off ... ok
[INFO] [stdout] test safe_apply_tests::mss_clamp_protocol_all_emits_tcp_keyed_rules_only ... ok
[INFO] [stdout] test safe_apply_tests::mss_clamp_only_matches_project_target_ports_not_arbitrary_ports ... ok
[INFO] [stdout] test safe_apply_tests::mss_clamp_protocol_udp_emits_no_mss_rules ... ok
[INFO] [stdout] test safe_apply_tests::mss_clamp_skips_udp_only_rules ... ok
[INFO] [stdout] test safe_apply_tests::last_good_fallback_still_filtered_by_egress_control ... ok
[INFO] [stdout] test safe_apply_tests::mss_clamp_skips_localhost_redirect_single ... ok
[INFO] [stdout] test safe_apply_tests::missing_file_whitelist_keeps_forward_closed ... ok
[INFO] [stdout] test safe_apply_tests::mixed_rules_keep_independent_snat_actions ... ok
[INFO] [stdout] test safe_apply_tests::mss_clamp_disabled_emits_no_mss_rules ... ok
[INFO] [stdout] test safe_apply_tests::never_emits_flush_ruleset_in_any_geoip_path ... ok
[INFO] [stdout] test safe_apply_tests::per_rule_snat_ip_overrides_global_fixed_ip ... ok
[INFO] [stdout] test safe_apply_tests::never_touches_tables_outside_self_nat_and_self_filter ... ok
[INFO] [stdout] test safe_apply_tests::short_ddns_warning_is_deduplicated_until_interval_changes ... ok
[INFO] [stdout] test safe_apply_tests::snat_fixed_emits_snat_to_fixed_ip ... ok
[INFO] [stdout] test safe_apply_tests::snat_default_is_masquerade ... ok
[INFO] [stdout] test safe_apply_tests::snat_off_state_does_not_emit_any_snat_action_strings ... ok
[INFO] [stdout] test safe_apply_tests::stats_interval_is_independent_from_ddns_interval ... ok
[INFO] [stdout] test safe_apply_tests::whitelist_alone_blocks_non_whitelisted_via_saddr_match ... ok
[INFO] [stdout] test safe_apply_tests::snat_and_mss_do_not_modify_user_tables ... ok
[INFO] [stdout] test safe_apply_tests::whitelist_ipv4_single_rule_adds_source_match ... ok
[INFO] [stdout] test safe_apply_tests::snat_off_omits_postrouting_rule ... ok
[INFO] [stdout] test safe_apply_tests::snat_fixed_falls_back_to_masquerade_for_ipv6_cells ... ok
[INFO] [stdout] test safe_apply_tests::quota_check_respects_stats_disabled ... ok
[INFO] [stdout] test safe_apply_tests::quota_check_does_not_execute_nft ... ok
[INFO] [stdout] test safe_apply_tests::quota_check_disables_exceeded_rule_and_logs_audit ... ok
[INFO] [stdout] test safe_apply_tests::quota_check_does_not_renotify_same_period ... ok
[INFO] [stdout] test safe_apply_tests::apply_failure_rolls_back_managed_tables ... ok
[INFO] [stdout] test safe_apply_tests::apply_checks_script_before_loading_it ... ok
[INFO] [stdout] test safe_apply_tests::check_failure_stops_before_apply_and_backup ... ok
[INFO] [stdout] test safe_apply_tests::check_only_rejects_invalid_file_source_before_nft ... ok
[INFO] [stdout] test safe_apply_tests::check_only_writes_script_and_runs_nft_check_only ... ok
[INFO] [stdout] test safe_apply_tests::check_success_backs_up_ruleset_before_apply ... ok
[INFO] [stdout] test menu::tests::generates_backup_filename ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- menu::tests::generates_backup_filename stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'menu::tests::generates_backup_filename' (1214) panicked at nat-cli/src/menu.rs:8796:9:
[INFO] [stdout] assertion `left == right` failed
[INFO] [stdout]   left: "nat-config-20260517-043456.toml"
[INFO] [stdout]  right: "nat-config-20260517-123456.toml"
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x559a0b769b68 - std[10d71ac2c42b111e]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x559a0b769b68 - std[10d71ac2c42b111e]::backtrace_rs::backtrace::trace_unsynchronized::<std[10d71ac2c42b111e]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x559a0b769b68 - std[10d71ac2c42b111e]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x559a0b769b68 - <<std[10d71ac2c42b111e]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[8fb95b77d25ab6c8]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x559a0b78170a - <core[8fb95b77d25ab6c8]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x559a0b78170a - core[8fb95b77d25ab6c8]::fmt::write
[INFO] [stdout]    6:     0x559a0b76ed32 - std[10d71ac2c42b111e]::io::default_write_fmt::<alloc[a7ee25936407c584]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/io/mod.rs:622:11
[INFO] [stdout]    7:     0x559a0b76ed32 - <alloc[a7ee25936407c584]::vec::Vec<u8> as std[10d71ac2c42b111e]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/io/mod.rs:1977:13
[INFO] [stdout]    8:     0x559a0b7453c6 - <std[10d71ac2c42b111e]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x559a0b7453c6 - std[10d71ac2c42b111e]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x559a0b75fdb9 - std[10d71ac2c42b111e]::panicking::default_hook
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x559a0b3f35cc - <alloc[a7ee25936407c584]::boxed::Box<dyn for<'a, 'b> core[8fb95b77d25ab6c8]::ops::function::Fn<(&'a std[10d71ac2c42b111e]::panic::PanicHookInfo<'b>,), Output = ()> + core[8fb95b77d25ab6c8]::marker::Sync + core[8fb95b77d25ab6c8]::marker::Send> as core[8fb95b77d25ab6c8]::ops::function::Fn<(&std[10d71ac2c42b111e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/alloc/src/boxed.rs:2289:9
[INFO] [stdout]   12:     0x559a0b3f35cc - test[213991da798b1c03]::test_main_inner::<test[213991da798b1c03]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x559a0b75ff72 - <alloc[a7ee25936407c584]::boxed::Box<dyn for<'a, 'b> core[8fb95b77d25ab6c8]::ops::function::Fn<(&'a std[10d71ac2c42b111e]::panic::PanicHookInfo<'b>,), Output = ()> + core[8fb95b77d25ab6c8]::marker::Sync + core[8fb95b77d25ab6c8]::marker::Send> as core[8fb95b77d25ab6c8]::ops::function::Fn<(&std[10d71ac2c42b111e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/alloc/src/boxed.rs:2289:9
[INFO] [stdout]   14:     0x559a0b75ff72 - std[10d71ac2c42b111e]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x559a0b745482 - std[10d71ac2c42b111e]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x559a0b73a2d9 - std[10d71ac2c42b111e]::sys::backtrace::__rust_end_short_backtrace::<std[10d71ac2c42b111e]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x559a0b7465cd - __rustc[3be9ba60078d4c86]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x559a0b781efc - core[8fb95b77d25ab6c8]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x559a0b781d83 - core[8fb95b77d25ab6c8]::panicking::assert_failed_inner
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/panicking.rs:439:17
[INFO] [stdout]   20:     0x559a0b3acf9d - core[8fb95b77d25ab6c8]::panicking::assert_failed::<alloc[a7ee25936407c584]::string::String, &str>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x559a0b29d61a - nat[d65940f79b99ae05]::menu::tests::generates_backup_filename
[INFO] [stdout]                                at /opt/rustwide/workdir/nat-cli/src/menu.rs:8796:9
[INFO] [stdout]   22:     0x559a0b294da7 - nat[d65940f79b99ae05]::menu::tests::generates_backup_filename::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/nat-cli/src/menu.rs:8792:35
[INFO] [stdout]   23:     0x559a0b3d69a6 - <nat[d65940f79b99ae05]::menu::tests::generates_backup_filename::{closure#0} as core[8fb95b77d25ab6c8]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x559a0b3e66ab - <fn() -> core[8fb95b77d25ab6c8]::result::Result<(), alloc[a7ee25936407c584]::string::String> as core[8fb95b77d25ab6c8]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x559a0b3e66ab - test[213991da798b1c03]::__rust_begin_short_backtrace::<core[8fb95b77d25ab6c8]::result::Result<(), alloc[a7ee25936407c584]::string::String>, fn() -> core[8fb95b77d25ab6c8]::result::Result<(), alloc[a7ee25936407c584]::string::String>>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/test/src/lib.rs:724:18
[INFO] [stdout]   26:     0x559a0b3f3f25 - test[213991da798b1c03]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/test/src/lib.rs:747:74
[INFO] [stdout]   27:     0x559a0b3f3f25 - <core[8fb95b77d25ab6c8]::panic::unwind_safe::AssertUnwindSafe<test[213991da798b1c03]::run_test_in_process::{closure#0}> as core[8fb95b77d25ab6c8]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   28:     0x559a0b3f3f25 - std[10d71ac2c42b111e]::panicking::catch_unwind::do_call::<core[8fb95b77d25ab6c8]::panic::unwind_safe::AssertUnwindSafe<test[213991da798b1c03]::run_test_in_process::{closure#0}>, core[8fb95b77d25ab6c8]::result::Result<(), alloc[a7ee25936407c584]::string::String>>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:581:40
[INFO] [stdout]   29:     0x559a0b3f3f25 - std[10d71ac2c42b111e]::panicking::catch_unwind::<core[8fb95b77d25ab6c8]::result::Result<(), alloc[a7ee25936407c584]::string::String>, core[8fb95b77d25ab6c8]::panic::unwind_safe::AssertUnwindSafe<test[213991da798b1c03]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x559a0b3f3f25 - std[10d71ac2c42b111e]::panic::catch_unwind::<core[8fb95b77d25ab6c8]::panic::unwind_safe::AssertUnwindSafe<test[213991da798b1c03]::run_test_in_process::{closure#0}>, core[8fb95b77d25ab6c8]::result::Result<(), alloc[a7ee25936407c584]::string::String>>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x559a0b3f3f25 - test[213991da798b1c03]::run_test_in_process
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/test/src/lib.rs:747:27
[INFO] [stdout]   32:     0x559a0b3f3f25 - test[213991da798b1c03]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/test/src/lib.rs:668:43
[INFO] [stdout]   33:     0x559a0b3ed834 - test[213991da798b1c03]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/test/src/lib.rs:698:41
[INFO] [stdout]   34:     0x559a0b3ed834 - std[10d71ac2c42b111e]::sys::backtrace::__rust_begin_short_backtrace::<test[213991da798b1c03]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x559a0b3f6fa2 - std[10d71ac2c42b111e]::thread::lifecycle::spawn_unchecked::<test[213991da798b1c03]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   36:     0x559a0b3f6fa2 - <core[8fb95b77d25ab6c8]::panic::unwind_safe::AssertUnwindSafe<std[10d71ac2c42b111e]::thread::lifecycle::spawn_unchecked<test[213991da798b1c03]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[8fb95b77d25ab6c8]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   37:     0x559a0b3f6fa2 - std[10d71ac2c42b111e]::panicking::catch_unwind::do_call::<core[8fb95b77d25ab6c8]::panic::unwind_safe::AssertUnwindSafe<std[10d71ac2c42b111e]::thread::lifecycle::spawn_unchecked<test[213991da798b1c03]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:581:40
[INFO] [stdout]   38:     0x559a0b3f6fa2 - std[10d71ac2c42b111e]::panicking::catch_unwind::<(), core[8fb95b77d25ab6c8]::panic::unwind_safe::AssertUnwindSafe<std[10d71ac2c42b111e]::thread::lifecycle::spawn_unchecked<test[213991da798b1c03]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x559a0b3f6fa2 - std[10d71ac2c42b111e]::panic::catch_unwind::<core[8fb95b77d25ab6c8]::panic::unwind_safe::AssertUnwindSafe<std[10d71ac2c42b111e]::thread::lifecycle::spawn_unchecked<test[213991da798b1c03]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x559a0b3f6fa2 - std[10d71ac2c42b111e]::thread::lifecycle::spawn_unchecked::<test[213991da798b1c03]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   41:     0x559a0b3f6fa2 - <std[10d71ac2c42b111e]::thread::lifecycle::spawn_unchecked<test[213991da798b1c03]::run_test::{closure#1}, ()>::{closure#1} as core[8fb95b77d25ab6c8]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x559a0b768a6f - <alloc[a7ee25936407c584]::boxed::Box<dyn core[8fb95b77d25ab6c8]::ops::function::FnOnce<(), Output = ()> + core[8fb95b77d25ab6c8]::marker::Send> as core[8fb95b77d25ab6c8]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/alloc/src/boxed.rs:2275:9
[INFO] [stdout]   43:     0x559a0b768a6f - <std[10d71ac2c42b111e]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   44:     0x7794c27deaa4 - <unknown>
[INFO] [stdout]   45:     0x7794c286ba64 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     menu::tests::generates_backup_filename
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 300 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `-p nat-cli --bin nat`
[INFO] running `Command { std: "docker" "inspect" "7211a84526e7f4e1865f238881d1ed12fcc2a68e4f9fdd50e3ca5322487c896c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7211a84526e7f4e1865f238881d1ed12fcc2a68e4f9fdd50e3ca5322487c896c", kill_on_drop: false }`
[INFO] [stdout] 7211a84526e7f4e1865f238881d1ed12fcc2a68e4f9fdd50e3ca5322487c896c
