[INFO] fetching crate rippy-cli 0.2.0...
[INFO] testing rippy-cli-0.2.0 against 1.95.0 for beta-1.96-2
[INFO] extracting crate rippy-cli 0.2.0 into /workspace/builds/worker-7-tc1/source
[INFO] removed /workspace/builds/worker-7-tc1/source/rust-toolchain.toml
[INFO] started tweaking crates.io crate rippy-cli 0.2.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate rippy-cli 0.2.0
[INFO] tweaked toml for crates.io crate rippy-cli 0.2.0 written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate rippy-cli 0.2.0 on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate rippy-cli 0.2.0 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.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.115
[INFO] [stderr]   Downloaded tokf-hook-types v0.2.39
[INFO] [stderr]   Downloaded munge_macro v0.4.7
[INFO] [stderr]   Downloaded munge v0.4.7
[INFO] [stderr]   Downloaded bytecheck v0.8.2
[INFO] [stderr]   Downloaded rancor v0.1.1
[INFO] [stderr]   Downloaded js-sys v0.3.92
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.115
[INFO] [stderr]   Downloaded rusqlite v0.32.1
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.115
[INFO] [stderr]   Downloaded rkyv v0.8.15
[INFO] [stderr]   Downloaded rable v0.1.15
[INFO] [stderr]   Downloaded rkyv_derive v0.8.15
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.115
[INFO] [stderr]   Downloaded rend v0.5.3
[INFO] [stderr]   Downloaded bytecheck_derive v0.8.2
[INFO] [stderr]   Downloaded ptr_meta_derive v0.3.1
[INFO] [stderr]   Downloaded ptr_meta v0.3.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 58226be4888b6832ced4f3e27804a99443eaa59df4f75d6ae5a045653b56a5e7
[INFO] running `Command { std: "docker" "start" "-a" "58226be4888b6832ced4f3e27804a99443eaa59df4f75d6ae5a045653b56a5e7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "58226be4888b6832ced4f3e27804a99443eaa59df4f75d6ae5a045653b56a5e7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "58226be4888b6832ced4f3e27804a99443eaa59df4f75d6ae5a045653b56a5e7", kill_on_drop: false }`
[INFO] [stdout] 58226be4888b6832ced4f3e27804a99443eaa59df4f75d6ae5a045653b56a5e7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] b3678c1576a66abfb989d123fcadbcc46a1e3418e904989af326187400f3ec11
[INFO] running `Command { std: "docker" "start" "-a" "b3678c1576a66abfb989d123fcadbcc46a1e3418e904989af326187400f3ec11", kill_on_drop: false }`
[INFO] [stderr]    Compiling zerocopy v0.8.47
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling ptr_meta_derive v0.3.1
[INFO] [stderr]    Compiling cc v1.2.58
[INFO] [stderr]    Compiling libc v0.2.183
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling bytecheck_derive v0.8.2
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling simdutf8 v0.1.5
[INFO] [stderr]    Compiling ptr_meta v0.3.1
[INFO] [stderr]    Compiling rancor v0.1.1
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling munge_macro v0.4.7
[INFO] [stderr]    Compiling bytecheck v0.8.2
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling munge v0.4.7
[INFO] [stderr]    Compiling libsqlite3-sys v0.30.1
[INFO] [stderr]    Compiling clap_derive v4.6.0
[INFO] [stderr]    Compiling rend v0.5.3
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling rkyv_derive v0.8.15
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling clap v4.6.0
[INFO] [stderr]    Compiling rable v0.1.15
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling tokf-hook-types v0.2.39
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling rkyv v0.8.15
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling rippy-cli v0.2.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling rusqlite v0.32.1
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 08s
[INFO] running `Command { std: "docker" "inspect" "b3678c1576a66abfb989d123fcadbcc46a1e3418e904989af326187400f3ec11", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b3678c1576a66abfb989d123fcadbcc46a1e3418e904989af326187400f3ec11", kill_on_drop: false }`
[INFO] [stdout] b3678c1576a66abfb989d123fcadbcc46a1e3418e904989af326187400f3ec11
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 2e51020a9de0eeec8d9bda747edde522f9814eb76347b4b658cbcc59b5cd51a8
[INFO] running `Command { std: "docker" "start" "-a" "2e51020a9de0eeec8d9bda747edde522f9814eb76347b4b658cbcc59b5cd51a8", kill_on_drop: false }`
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling sdd v3.0.10
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling quick-error v1.2.3
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling scc v2.4.0
[INFO] [stderr]    Compiling rand v0.9.3
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]    Compiling serial_test_derive v3.4.0
[INFO] [stderr]    Compiling unarray v0.1.4
[INFO] [stderr]    Compiling rusqlite v0.32.1
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling rippy-cli v0.2.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling serial_test v3.4.0
[INFO] [stderr]    Compiling proptest v1.11.0
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 48.53s
[INFO] running `Command { std: "docker" "inspect" "2e51020a9de0eeec8d9bda747edde522f9814eb76347b4b658cbcc59b5cd51a8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2e51020a9de0eeec8d9bda747edde522f9814eb76347b4b658cbcc59b5cd51a8", kill_on_drop: false }`
[INFO] [stdout] 2e51020a9de0eeec8d9bda747edde522f9814eb76347b4b658cbcc59b5cd51a8
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 81ffef7f20d6b2285ef9942da48841043c4ed29fac2370327e56f21b3981c105
[INFO] running `Command { std: "docker" "start" "-a" "81ffef7f20d6b2285ef9942da48841043c4ed29fac2370327e56f21b3981c105", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.22s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rippy_cli-1ad824d1564960e4)
[INFO] [stdout] 
[INFO] [stdout] running 876 tests
[INFO] [stdout] test allowlists::tests::known_safe_commands ... ok
[INFO] [stdout] test allowlists::tests::unknown_commands_not_safe ... ok
[INFO] [stdout] test allowlists::tests::wrapper_commands ... ok
[INFO] [stdout] test analyzer::tests::arithmetic_expansion_in_safe_command_resolves_to_literal ... ok
[INFO] [stdout] test analyzer::tests::cartesian_brace_explosion_falls_back_to_ask ... ok
[INFO] [stdout] test analyzer::tests::arithmetic_division_by_zero_asks ... ok
[INFO] [stdout] test analyzer::tests::and_combines_normally ... ok
[INFO] [stdout] test analyzer::tests::case_statement ... ok
[INFO] [stdout] test analyzer::tests::ansi_c_in_safe_command_resolves_to_literal ... ok
[INFO] [stdout] test analyzer::tests::brace_expansion_in_safe_command_resolves_to_literal ... ok
[INFO] [stdout] test analyzer::tests::cc_allow_rule_overrides_handler ... ok
[INFO] [stdout] test analyzer::tests::complex_pipeline_all_safe ... ok
[INFO] [stdout] test analyzer::tests::command_substitution_asks ... ok
[INFO] [stdout] test analyzer::tests::cc_deny_rule_overrides_handler ... ok
[INFO] [stdout] test analyzer::tests::command_substitution_floor_is_ask ... ok
[INFO] [stdout] test analyzer::tests::empty_command_allows ... ok
[INFO] [stdout] test analyzer::tests::config_override_allows ... ok
[INFO] [stdout] test analyzer::tests::depth_limit_exceeded ... ok
[INFO] [stdout] test analyzer::tests::dynamic_command_position_asks_even_when_resolved ... ok
[INFO] [stdout] test analyzer::tests::command_substitution_still_asks ... ok
[INFO] [stdout] test analyzer::tests::git_push_asks ... ok
[INFO] [stdout] test analyzer::tests::depth_at_max_still_works ... ok
[INFO] [stdout] test analyzer::tests::cc_rules_checked_before_rippy_config ... ok
[INFO] [stdout] test analyzer::tests::handler_path_resolves_quoted_subcommand ... ok
[INFO] [stdout] test analyzer::tests::heredoc_quoted_delimiter_allows_even_with_expansion_syntax ... ok
[INFO] [stdout] test analyzer::tests::heredoc_bare_var_asks ... ok
[INFO] [stdout] test analyzer::tests::help_flag_always_safe ... ok
[INFO] [stdout] test analyzer::tests::git_status_safe ... ok
[INFO] [stdout] test analyzer::tests::for_loop_unsafe ... ok
[INFO] [stdout] test analyzer::tests::heredoc_safe_allows ... ok
[INFO] [stdout] test analyzer::tests::heredoc_with_param_expansion_asks ... ok
[INFO] [stdout] test analyzer::tests::heredoc_substitution_in_git_commit_resolves ... ok
[INFO] [stdout] test analyzer::tests::heredoc_quoted_with_param_expansion_allows ... ok
[INFO] [stdout] test analyzer::tests::huge_brace_expansion_falls_back_to_ask ... ok
[INFO] [stdout] test analyzer::tests::if_statement_safe ... ok
[INFO] [stdout] test analyzer::tests::locale_string_in_safe_command_resolves_to_literal ... ok
[INFO] [stdout] test analyzer::tests::list_and ... ok
[INFO] [stdout] test analyzer::tests::command_sub_without_heredoc_still_asks ... ok
[INFO] [stdout] test analyzer::tests::or_harmless_fallback_with_redirect_asks ... ok
[INFO] [stdout] test analyzer::tests::nested_substitution_asks ... ok
[INFO] [stdout] test analyzer::tests::param_default_resolves_when_unset ... ok
[INFO] [stdout] test analyzer::tests::param_indirect_in_safe_command_asks ... ok
[INFO] [stdout] test analyzer::tests::if_statement_unsafe_body ... ok
[INFO] [stdout] test analyzer::tests::param_expansion_in_safe_command_resolves_to_value ... ok
[INFO] [stdout] test analyzer::tests::or_colon_uses_cmd_verdict ... ok
[INFO] [stdout] test analyzer::tests::pipeline_mid_redirect_asks ... ok
[INFO] [stdout] test analyzer::tests::pipeline_with_dev_null_allows ... ok
[INFO] [stdout] test analyzer::tests::pipeline_in_heredoc_substitution_asks ... ok
[INFO] [stdout] test analyzer::tests::pipeline_with_file_redirect_asks ... ok
[INFO] [stdout] test analyzer::tests::or_true_uses_cmd_verdict ... ok
[INFO] [stdout] test analyzer::tests::pipeline_mixed ... ok
[INFO] [stdout] test analyzer::tests::redirect_to_file_asks ... ok
[INFO] [stdout] test analyzer::tests::redirect_to_dev_null ... ok
[INFO] [stdout] test analyzer::tests::rm_rf_asks ... ok
[INFO] [stdout] test analyzer::tests::pipeline_safe ... ok
[INFO] [stdout] test analyzer::tests::param_length_in_safe_command_asks ... ok
[INFO] [stdout] test analyzer::tests::shell_c_recurses ... ok
[INFO] [stdout] test analyzer::tests::simple_var_in_safe_command_resolves_to_value ... ok
[INFO] [stdout] test analyzer::tests::rm_with_resolved_arg_still_asks_via_handler ... ok
[INFO] [stdout] test analyzer::tests::subshell_unsafe_propagates ... ok
[INFO] [stdout] test analyzer::tests::subshell_safe_allows ... ok
[INFO] [stdout] test analyzer::tests::subshell_with_redirect_asks ... ok
[INFO] [stdout] test analyzer::tests::safe_cmd_or_true_allows ... ok
[INFO] [stdout] test analyzer::tests::simple_safe_command ... ok
[INFO] [stdout] test analyzer::tests::shell_c_unsafe ... ok
[INFO] [stdout] test analyzer::tests::safe_heredoc_in_command_substitution_allows ... ok
[INFO] [stdout] test analyzer::tests::unknown_command_asks ... ok
[INFO] [stdout] test analyzer::tests::unsafe_command_heredoc_in_substitution_asks ... ok
[INFO] [stdout] test analyzer::tests::unquoted_heredoc_in_command_substitution_asks ... ok
[INFO] [stdout] test analyzer::tests::var_value_with_backticks_stays_literal ... ok
[INFO] [stdout] test analyzer::tests::var_value_with_command_substitution_stays_literal ... ok
[INFO] [stdout] test analyzer::tests::var_value_with_dangerous_command_string_still_safe_for_echo ... ok
[INFO] [stdout] test ast::tests::detect_arithmetic_expansion_inline ... ok
[INFO] [stdout] test ast::tests::detect_ansi_c_quote ... ok
[INFO] [stdout] test analyzer::tests::wrapper_command_analyzes_inner ... ok
[INFO] [stdout] test ast::tests::detect_brace_expansion ... ok
[INFO] [stdout] test ast::tests::detect_brace_expansion_range ... ok
[INFO] [stdout] test analyzer::tests::wrapper_command_unsafe_inner ... ok
[INFO] [stdout] test analyzer::tests::safe_command_without_expansion_allows ... ok
[INFO] [stdout] test analyzer::tests::or_with_unsafe_fallback_combines ... ok
[INFO] [stdout] test analyzer::tests::variable_value_containing_dollar_is_not_re_expanded ... ok
[INFO] [stdout] test ast::tests::detect_param_expansion ... ok
[INFO] [stdout] test ast::tests::detect_locale_string ... ok
[INFO] [stdout] test ast::tests::expansion_pattern_detects_ansi_c ... ok
[INFO] [stdout] test ast::tests::detect_param_length ... ok
[INFO] [stdout] test ast::tests::expansion_pattern_detects_command_sub ... ok
[INFO] [stdout] test ast::tests::expansion_pattern_detects_braced ... ok
[INFO] [stdout] test ast::tests::detect_param_indirect ... ok
[INFO] [stdout] test ast::tests::detect_simple_var_expansion ... ok
[INFO] [stdout] test ast::tests::no_expansions_in_literal ... ok
[INFO] [stdout] test ast::tests::expansion_pattern_detects_dollar_var ... ok
[INFO] [stdout] test ast::tests::extract_command_name ... ok
[INFO] [stdout] test ast::tests::detect_command_substitution ... ok
[INFO] [stdout] test ast::tests::redirect_write ... ok
[INFO] [stdout] test ast::tests::strip_ansi_c_quotes ... ok
[INFO] [stdout] test ast::tests::strip_locale_quotes ... ok
[INFO] [stdout] test cc_permissions::tests::check_ask_trumps_allow ... ok
[INFO] [stdout] test cc_permissions::tests::check_deny_trumps_all ... ok
[INFO] [stdout] test ast::tests::expansion_pattern_no_false_positive ... ok
[INFO] [stdout] test cc_permissions::tests::check_no_match_returns_none ... ok
[INFO] [stdout] test cc_permissions::tests::exact_match ... ok
[INFO] [stdout] test ast::tests::extract_command_args ... ok
[INFO] [stdout] test ast::tests::redirect_append ... ok
[INFO] [stdout] test cc_permissions::tests::load_from_settings_file ... ok
[INFO] [stdout] test analyzer::tests::unset_var_asks_with_diagnostic_reason ... ok
[INFO] [stdout] test cc_permissions::tests::local_settings_merged ... ok
[INFO] [stdout] test cc_permissions::tests::no_match ... ok
[INFO] [stdout] test cc_permissions::tests::no_partial_word_match ... ok
[INFO] [stdout] test cc_permissions::tests::missing_settings_no_rules ... ok
[INFO] [stdout] test ast::tests::strip_regular_quotes_unchanged ... ok
[INFO] [stdout] test cc_permissions::tests::extract_bash_valid ... ok
[INFO] [stdout] test cc_permissions::tests::non_bash_rules_ignored ... ok
[INFO] [stdout] test cc_permissions::tests::prefix_match_with_args ... ok
[INFO] [stdout] test cc_permissions::tests::wildcard_all ... ok
[INFO] [stdout] test cc_permissions::tests::wildcard_colon_no_false_positive ... ok
[INFO] [stdout] test cc_permissions::tests::wildcard_colon_prefix ... ok
[INFO] [stdout] test cc_permissions::tests::wildcard_leading_no_partial ... ok
[INFO] [stdout] test cc_permissions::tests::wildcard_middle ... ok
[INFO] [stdout] test cc_permissions::tests::wildcard_middle_no_partial ... ok
[INFO] [stdout] test cc_permissions::tests::wildcard_trailing ... ok
[INFO] [stdout] test cli::tests::forced_mode_claude ... ok
[INFO] [stdout] test cc_permissions::tests::check_allow_matches ... ok
[INFO] [stdout] test cc_permissions::tests::wildcard_leading ... ok
[INFO] [stdout] test cc_permissions::tests::malformed_json_fails_closed ... ok
[INFO] [stdout] test cli::tests::no_forced_mode ... ok
[INFO] [stdout] test cc_permissions::tests::extract_non_bash_ignored ... ok
[INFO] [stdout] test condition::tests::branch_none_fails_all ... ok
[INFO] [stdout] test condition::tests::branch_match_glob ... ok
[INFO] [stdout] test condition::tests::branch_eq_matches ... ok
[INFO] [stdout] test condition::tests::branch_not_matches ... ok
[INFO] [stdout] test condition::tests::cwd_under_self ... ok
[INFO] [stdout] test condition::tests::evaluate_all_and_logic ... ok
[INFO] [stdout] test condition::tests::evaluate_all_empty_is_true ... ok
[INFO] [stdout] test condition::tests::parse_branch_eq ... ok
[INFO] [stdout] test condition::tests::file_exists_condition ... ok
[INFO] [stdout] test condition::tests::detect_git_branch_not_a_repo ... ok
[INFO] [stdout] test condition::tests::parse_branch_match ... ok
[INFO] [stdout] test condition::tests::parse_branch_not ... ok
[INFO] [stdout] test condition::tests::parse_env_eq ... ok
[INFO] [stdout] test condition::tests::parse_unknown_condition_errors ... ok
[INFO] [stdout] test condition::tests::parse_cwd_under ... ok
[INFO] [stdout] test config::matching::tests::has_structured_fields_detects_fields ... ok
[INFO] [stdout] test condition::tests::parse_file_exists ... ok
[INFO] [stdout] test config::matching::tests::structured_combined_short_flags ... ok
[INFO] [stdout] test config::matching::tests::structured_args_contain ... ok
[INFO] [stdout] test config::matching::tests::structured_command_matches ... ok
[INFO] [stdout] test config::matching::tests::structured_empty_input_no_match ... ok
[INFO] [stdout] test config::matching::tests::structured_subcommand_matches ... ok
[INFO] [stdout] test config::matching::tests::structured_subcommands_list ... ok
[INFO] [stdout] test config::parser::tests::parse_after_rule ... ok
[INFO] [stdout] test config::parser::tests::parse_alias_rule ... ok
[INFO] [stdout] test config::parser::tests::parse_allow_rule ... ok
[INFO] [stdout] test config::parser::tests::parse_deny_multi_word_pattern_with_message ... ok
[INFO] [stdout] test config::parser::tests::parse_file_read_rule ... ok
[INFO] [stdout] test config::parser::tests::parse_file_write_rule ... ok
[INFO] [stdout] test config::parser::tests::parse_mcp_rule ... ok
[INFO] [stdout] test config::parser::tests::parse_redirect_rule ... ok
[INFO] [stdout] test config::parser::tests::parse_set_rule ... ok
[INFO] [stdout] test config::parser::tests::tokenize_escaped_quote ... ok
[INFO] [stdout] test config::parser::tests::tokenize_quoted_strings ... ok
[INFO] [stdout] test config::parser::tests::unknown_directive_errors ... ok
[INFO] [stdout] test config::string_loader::tests::load_from_str_lines_error_reports_line_number ... ok
[INFO] [stdout] test config::string_loader::tests::load_from_str_lines_minimal ... ok
[INFO] [stdout] test config::string_loader::tests::load_from_str_lines_skips_comments_and_blanks ... ok
[INFO] [stdout] test condition::tests::parse_exec ... ok
[INFO] [stdout] test condition::tests::env_eq_condition ... ok
[INFO] [stdout] test config::parser::tests::parse_deny_with_message ... ok
[INFO] [stdout] test config::matching::tests::structured_flags_matches ... ok
[INFO] [stdout] test config::string_loader::tests::load_from_str_toml_error_has_memory_path ... ok
[INFO] [stdout] test config::tests::conditional_rule_applies_when_condition_passes ... ok
[INFO] [stdout] test config::string_loader::tests::load_from_str_toml_minimal ... ok
[INFO] [stdout] test config::tests::baseline_rule_not_annotated ... ok
[INFO] [stdout] test config::tests::alias_resolution ... ok
[INFO] [stdout] test config::tests::allow_uv_run_python_c ... ok
[INFO] [stdout] test config::tests::conditional_rule_skipped_when_condition_fails ... ok
[INFO] [stdout] test config::tests::file_rules_last_match_wins ... ok
[INFO] [stdout] test config::tests::last_match_wins ... ok
[INFO] [stdout] test config::tests::conditional_rule_skipped_without_context ... ok
[INFO] [stdout] test config::tests::env_override_allow_not_annotated_as_project ... ok
[INFO] [stdout] test config::tests::match_file_edit_rules ... ok
[INFO] [stdout] test config::tests::match_file_read_rules ... ok
[INFO] [stdout] test config::tests::match_after_rule ... ok
[INFO] [stdout] test config::tests::match_mcp_rule ... ok
[INFO] [stdout] test config::tests::match_redirect_last_wins ... ok
[INFO] [stdout] test config::tests::match_file_write_rules ... ok
[INFO] [stdout] test condition::tests::exec_false_fails ... ok
[INFO] [stdout] test config::tests::package_setting_loads_develop_rules ... ok
[INFO] [stdout] test config::tests::project_allow_overriding_ask_annotated ... ok
[INFO] [stdout] test condition::tests::exec_true_succeeds ... ok
[INFO] [stdout] test config::tests::project_ask_overriding_deny_not_annotated ... ok
[INFO] [stdout] test config::tests::project_broad_allow_detected ... ok
[INFO] [stdout] test config::tests::project_default_allow_detected ... ok
[INFO] [stdout] test config::tests::project_deny_only_no_weakening_notes ... ok
[INFO] [stdout] test config::tests::project_rule_no_override_not_annotated ... ok
[INFO] [stdout] test config::tests::project_rule_override_annotated ... ok
[INFO] [stdout] test config::tests::project_rules_range_set_correctly ... ok
[INFO] [stdout] test config::tests::project_self_protect_off_detected ... ok
[INFO] [stdout] test config::tests::settings_extracted ... ok
[INFO] [stdout] test config::tests::structured_rule_in_config ... ok
[INFO] [stdout] test config::tests::no_package_setting_backward_compatible ... ok
[INFO] [stdout] test config::tests::structured_rule_with_when_condition ... ok
[INFO] [stdout] test config::tests::invalid_package_name_produces_none ... ok
[INFO] [stdout] test config::tests::project_package_overrides_global ... ok
[INFO] [stdout] test discover::tests::cache_round_trip ... ok
[INFO] [stdout] test config::tests::weakening_notes_appended_to_project_allow_verdict ... ok
[INFO] [stdout] test discover::tests::cache_key_format ... ok
[INFO] [stdout] test discover::tests::cache_version_mismatch_returns_none ... ok
[INFO] [stdout] test discover::tests::expand_flags_no_command ... ok
[INFO] [stdout] test discover::tests::expand_flags_reverse ... ok
[INFO] [stdout] test discover::tests::expand_flags_with_cache ... ok
[INFO] [stdout] test discover::tests::parse_clap_style ... ok
[INFO] [stdout] test discover::tests::parse_curl_real_output ... ok
[INFO] [stdout] test discover::tests::parse_deduplicates ... ok
[INFO] [stdout] test discover::tests::parse_git_manpage_style ... ok
[INFO] [stdout] test discover::tests::parse_ignores_long_only ... ok
[INFO] [stdout] test discover::tests::parse_ignores_noise ... ok
[INFO] [stdout] test discover::tests::parse_no_comma ... ok
[INFO] [stdout] test discover::tests::parse_reverse_order ... ok
[INFO] [stdout] test discover::tests::parse_with_value_placeholder ... ok
[INFO] [stdout] test git_styles::tests::cautious_toml_parses ... ok
[INFO] [stdout] test git_styles::tests::empty_branch_pattern_errors ... ok
[INFO] [stdout] test git_styles::tests::empty_git_section_produces_no_directives ... ok
[INFO] [stdout] test git_styles::tests::expand_branch_override_adds_conditions ... ok
[INFO] [stdout] test git_styles::tests::expand_default_style_only ... ok
[INFO] [stdout] test discover::tests::expand_flags_no_cache_entry ... ok
[INFO] [stdout] test git_styles::tests::expand_default_plus_branch_override ... ok
[INFO] [stdout] test git_styles::tests::permissive_toml_parses ... ok
[INFO] [stdout] test config::tests::line_based_config_package_setting ... ok
[INFO] [stdout] test config::tests::package_loads_via_config_pipeline ... ok
[INFO] [stdout] test git_styles::tests::unknown_style_errors ... ok
[INFO] [stdout] test config::tests::user_rules_override_package_rules ... ok
[INFO] [stdout] test handlers::ansible::tests::ansible_check_allows ... ok
[INFO] [stdout] test handlers::ansible::tests::ansible_doc_allows ... ok
[INFO] [stdout] test handlers::ansible::tests::ansible_lint_allows ... ok
[INFO] [stdout] test handlers::ansible::tests::ansible_short_check_allows ... ok
[INFO] [stdout] test handlers::ansible::tests::ansible_without_flags_asks ... ok
[INFO] [stdout] test handlers::ansible::tests::config_list_allows ... ok
[INFO] [stdout] test handlers::ansible::tests::config_no_subcommand_asks ... ok
[INFO] [stdout] test handlers::ansible::tests::ansible_list_hosts_allows ... ok
[INFO] [stdout] test handlers::ansible::tests::config_dump_allows ... ok
[INFO] [stdout] test handlers::ansible::tests::config_view_allows ... ok
[INFO] [stdout] test handlers::ansible::tests::config_init_asks ... ok
[INFO] [stdout] test handlers::ansible::tests::galaxy_info_allows ... ok
[INFO] [stdout] test handlers::ansible::tests::galaxy_install_asks ... ok
[INFO] [stdout] test handlers::ansible::tests::galaxy_list_allows ... ok
[INFO] [stdout] test handlers::ansible::tests::galaxy_no_subcommand_asks ... ok
[INFO] [stdout] test handlers::ansible::tests::inventory_list_allows ... ok
[INFO] [stdout] test handlers::ansible::tests::galaxy_search_allows ... ok
[INFO] [stdout] test handlers::ansible::tests::inventory_graph_allows ... ok
[INFO] [stdout] test handlers::ansible::tests::inventory_host_allows ... ok
[INFO] [stdout] test handlers::ansible::tests::playbook_list_hosts_allows ... ok
[INFO] [stdout] test handlers::ansible::tests::playbook_list_tags_allows ... ok
[INFO] [stdout] test handlers::ansible::tests::playbook_list_tasks_allows ... ok
[INFO] [stdout] test handlers::ansible::tests::playbook_short_check_allows ... ok
[INFO] [stdout] test handlers::ansible::tests::playbook_syntax_check_allows ... ok
[INFO] [stdout] test config::tests::custom_package_loads_via_config_pipeline ... ok
[INFO] [stdout] test condition::tests::detect_git_branch_in_fresh_repo ... ok
[INFO] [stdout] test handlers::ansible::tests::playbook_without_flags_asks ... ok
[INFO] [stdout] test handlers::ansible::tests::inventory_without_flags_asks ... ok
[INFO] [stdout] test handlers::ansible::tests::vault_encrypt_asks ... ok
[INFO] [stdout] test handlers::ansible::tests::vault_no_subcommand_asks ... ok
[INFO] [stdout] test handlers::ansible::tests::vault_view_allows ... ok
[INFO] [stdout] test handlers::ansible::tests::playbook_check_allows ... ok
[INFO] [stdout] test handlers::cd::tests::cd_absolute_outside_project_asks ... ok
[INFO] [stdout] test handlers::cd::tests::cd_absolute_within_project_allows ... ok
[INFO] [stdout] test handlers::cd::tests::cd_backtick_asks ... ok
[INFO] [stdout] test handlers::cd::tests::cd_command_substitution_asks ... ok
[INFO] [stdout] test handlers::cd::tests::cd_dash_allows ... ok
[INFO] [stdout] test handlers::cd::tests::cd_dot_allows ... ok
[INFO] [stdout] test handlers::cd::tests::cd_dotdot_from_root_asks ... ok
[INFO] [stdout] test handlers::cd::tests::cd_dotdot_from_subdir_asks ... ok
[INFO] [stdout] test handlers::cd::tests::cd_relative_subdir_allows ... ok
[INFO] [stdout] test handlers::cd::tests::cd_remote_asks ... ok
[INFO] [stdout] test handlers::cd::tests::cd_multiple_allowed_dirs ... ok
[INFO] [stdout] test handlers::cd::tests::cd_no_args_asks ... ok
[INFO] [stdout] test handlers::cd::tests::cd_relative_escape_asks ... ok
[INFO] [stdout] test handlers::cd::tests::cd_outside_config_allowed_asks ... ok
[INFO] [stdout] test handlers::cd::tests::cd_tmp_subdir_allows ... ok
[INFO] [stdout] test handlers::cd::tests::cd_tilde_asks ... ok
[INFO] [stdout] test handlers::cd::tests::cd_to_config_allowed_dir_allows ... ok
[INFO] [stdout] test handlers::cd::tests::cd_tilde_subdir_asks ... ok
[INFO] [stdout] test handlers::cd::tests::cd_tmp_allows ... ok
[INFO] [stdout] test handlers::cd::tests::cd_relative_nested_allows ... ok
[INFO] [stdout] test git_styles::tests::standard_toml_parses ... ok
[INFO] [stdout] test handlers::cd::tests::cd_relative_resolves_into_allowed_parent ... ok
[INFO] [stdout] test handlers::cd::tests::popd_asks ... ok
[INFO] [stdout] test handlers::cd::tests::cd_to_config_allowed_exact_allows ... ok
[INFO] [stdout] test handlers::cd::tests::pushd_outside_project_asks ... ok
[INFO] [stdout] test handlers::cd::tests::cd_var_tmp_allows ... ok
[INFO] [stdout] test handlers::cd::tests::cd_variable_asks ... ok
[INFO] [stdout] test handlers::cd::tests::normalize_multiple_dotdot ... ok
[INFO] [stdout] test handlers::cd::tests::normalize_resolves_dot ... ok
[INFO] [stdout] test handlers::cd::tests::normalize_resolves_dotdot ... ok
[INFO] [stdout] test handlers::cloud::tests::kubectl_apply_asks ... ok
[INFO] [stdout] test handlers::cloud::tests::kubectl_exec_recurses_remote ... ok
[INFO] [stdout] test handlers::cd::tests::pushd_tmp_allows ... ok
[INFO] [stdout] test handlers::cd::tests::pushd_to_config_allowed_allows ... ok
[INFO] [stdout] test handlers::curl::tests::curl_data_asks ... ok
[INFO] [stdout] test handlers::cd::tests::pushd_within_project_allows ... ok
[INFO] [stdout] test handlers::cloud::tests::aws_create_asks ... ok
[INFO] [stdout] test handlers::cloud::tests::aws_describe_allows ... ok
[INFO] [stdout] test handlers::cloud::tests::kubectl_get_allows ... ok
[INFO] [stdout] test handlers::curl::tests::curl_get_allows ... ok
[INFO] [stdout] test handlers::curl::tests::curl_help_allows ... ok
[INFO] [stdout] test handlers::curl::tests::curl_output_file ... ok
[INFO] [stdout] test handlers::curl::tests::curl_post_method_asks ... ok
[INFO] [stdout] test handlers::database::tests::mysql_insert_asks ... ok
[INFO] [stdout] test handlers::database::tests::mysql_select_allows ... ok
[INFO] [stdout] test handlers::database::tests::psql_f_missing_file_asks ... ok
[INFO] [stdout] test handlers::database::tests::psql_f_write_asks ... ok
[INFO] [stdout] test handlers::database::tests::psql_list_allows ... ok
[INFO] [stdout] test handlers::database::tests::psql_readonly_sql_allows ... ok
[INFO] [stdout] test handlers::database::tests::sqlite3_readonly_allows ... ok
[INFO] [stdout] test handlers::database::tests::psql_f_readonly_allows ... ok
[INFO] [stdout] test handlers::database::tests::psql_write_sql_asks ... ok
[INFO] [stdout] test handlers::docker::tests::docker_compose_safe ... ok
[INFO] [stdout] test handlers::docker::tests::docker_exec_recurses_remote ... ok
[INFO] [stdout] test handlers::docker::tests::docker_exec_with_flags ... ok
[INFO] [stdout] test handlers::docker::tests::docker_export_output_file ... ok
[INFO] [stdout] test handlers::docker::tests::docker_run_asks ... ok
[INFO] [stdout] test handlers::docker::tests::docker_save_output_file ... ok
[INFO] [stdout] test handlers::docker::tests::docker_save_stdout_allows ... ok
[INFO] [stdout] test handlers::env_xargs::tests::env_with_command_recurses ... ok
[INFO] [stdout] test handlers::env_xargs::tests::xargs_interactive_asks ... ok
[INFO] [stdout] test handlers::docker::tests::docker_export_stdout_allows ... ok
[INFO] [stdout] test handlers::env_xargs::tests::xargs_multiple_flags_with_values ... ok
[INFO] [stdout] test handlers::docker::tests::docker_safe_subcommands ... ok
[INFO] [stdout] test handlers::env_xargs::tests::xargs_simple_inner_command ... ok
[INFO] [stdout] test handlers::env_xargs::tests::xargs_no_inner_command ... ok
[INFO] [stdout] test handlers::env_xargs::tests::env_bare_allows ... ok
[INFO] [stdout] test handlers::env_xargs::tests::xargs_replace_flag ... ok
[INFO] [stdout] test handlers::env_xargs::tests::xargs_skips_attached_value_flags ... ok
[INFO] [stdout] test handlers::env_xargs::tests::xargs_skips_value_flags ... ok
[INFO] [stdout] test handlers::find::tests::find_delete_asks ... ok
[INFO] [stdout] test handlers::find::tests::find_exec_recurses ... ok
[INFO] [stdout] test handlers::gh::tests::api_delete_asks ... ok
[INFO] [stdout] test handlers::gh::tests::api_get_allows ... ok
[INFO] [stdout] test handlers::gh::tests::api_input_file_asks ... ok
[INFO] [stdout] test handlers::find::tests::find_ok_asks ... ok
[INFO] [stdout] test handlers::gh::tests::api_graphql_query_allows ... ok
[INFO] [stdout] test handlers::find::tests::find_search_only_allows ... ok
[INFO] [stdout] test handlers::gh::tests::api_graphql_mutation_asks ... ok
[INFO] [stdout] test handlers::gh::tests::api_post_asks ... ok
[INFO] [stdout] test handlers::gh::tests::api_input_query_file_allows ... ok
[INFO] [stdout] test handlers::gh::tests::api_input_mutation_file_asks ... ok
[INFO] [stdout] test handlers::gh::tests::issue_view_allows ... ok
[INFO] [stdout] test handlers::gh::tests::pr_create_asks ... ok
[INFO] [stdout] test handlers::gh::tests::pr_list_allows ... ok
[INFO] [stdout] test handlers::gh::tests::pr_view_allows ... ok
[INFO] [stdout] test handlers::git::tests::ask_commands ... ok
[INFO] [stdout] test handlers::gh::tests::help_allows ... ok
[INFO] [stdout] test handlers::gh::tests::issue_create_asks ... ok
[INFO] [stdout] test handlers::git::tests::dash_c_config_allowed ... ok
[INFO] [stdout] test handlers::gh::tests::pr_merge_asks ... ok
[INFO] [stdout] test handlers::gh::tests::status_allows ... ok
[INFO] [stdout] test handlers::git::tests::branch_delete_is_ask ... ok
[INFO] [stdout] test handlers::git::tests::dash_c_relative_allows ... ok
[INFO] [stdout] test handlers::git::tests::dash_c_outside_scope_asks ... ok
[INFO] [stdout] test handlers::git::tests::dash_c_within_project_allows ... ok
[INFO] [stdout] test handlers::git::tests::branch_list_is_safe ... ok
[INFO] [stdout] test handlers::git::tests::git_dir_outside_scope_asks ... ok
[INFO] [stdout] test handlers::git::tests::global_flags_skipped ... ok
[INFO] [stdout] test handlers::git::tests::safe_commands ... ok
[INFO] [stdout] test handlers::helm::tests::dependency_list_allows ... ok
[INFO] [stdout] test handlers::helm::tests::help_allows ... ok
[INFO] [stdout] test handlers::helm::tests::list_allows ... ok
[INFO] [stdout] test handlers::helm::tests::plugin_list_allows ... ok
[INFO] [stdout] test handlers::helm::tests::repo_add_asks ... ok
[INFO] [stdout] test handlers::helm::tests::install_without_dry_run_asks ... ok
[INFO] [stdout] test handlers::git::tests::stash_list_is_safe ... ok
[INFO] [stdout] test handlers::helm::tests::repo_list_allows ... ok
[INFO] [stdout] test handlers::helm::tests::rollback_dry_run_allows ... ok
[INFO] [stdout] test handlers::git::tests::work_tree_outside_scope_asks ... ok
[INFO] [stdout] test handlers::helm::tests::uninstall_asks ... ok
[INFO] [stdout] test handlers::helm::tests::install_dry_run_allows ... ok
[INFO] [stdout] test handlers::helm::tests::upgrade_dry_run_allows ... ok
[INFO] [stdout] test handlers::mkdir::tests::mkdir_absolute_in_project_allows ... ok
[INFO] [stdout] test handlers::mkdir::tests::mkdir_config_allowed_dir ... ok
[INFO] [stdout] test handlers::mkdir::tests::mkdir_dotdot_escape_asks ... ok
[INFO] [stdout] test handlers::mkdir::tests::mkdir_flags_only_asks ... ok
[INFO] [stdout] test handlers::mkdir::tests::mkdir_multiple_dirs_one_unsafe ... ok
[INFO] [stdout] test handlers::mkdir::tests::mkdir_relative_allows ... ok
[INFO] [stdout] test handlers::mkdir::tests::mkdir_remote_asks ... ok
[INFO] [stdout] test handlers::mkdir::tests::mkdir_outside_project_asks ... ok
[INFO] [stdout] test handlers::mkdir::tests::mkdir_no_args_asks ... ok
[INFO] [stdout] test handlers::mkdir::tests::mkdir_multiple_dirs_all_safe ... ok
[INFO] [stdout] test handlers::mkdir::tests::mkdir_mode_flag_skipped ... ok
[INFO] [stdout] test handlers::mkdir::tests::mkdir_variable_expansion_asks ... ok
[INFO] [stdout] test handlers::node::tests::deno_eval_dangerous_asks ... ok
[INFO] [stdout] test handlers::node::tests::deno_eval_safe_allows ... ok
[INFO] [stdout] test handlers::node::tests::e_require_fs_asks ... ok
[INFO] [stdout] test handlers::node::tests::e_require_child_process_asks ... ok
[INFO] [stdout] test handlers::node::tests::e_safe_console_log_allows ... ok
[INFO] [stdout] test handlers::node::tests::no_args_asks ... ok
[INFO] [stdout] test handlers::node::tests::interactive_asks ... ok
[INFO] [stdout] test handlers::node::tests::p_eval_asks ... ok
[INFO] [stdout] test handlers::mkdir::tests::mkdir_tilde_asks ... ok
[INFO] [stdout] test handlers::node::tests::script_file_missing_asks ... ok
[INFO] [stdout] test handlers::node::tests::p_safe_allows ... ok
[INFO] [stdout] test handlers::perl::tests::e_system_asks ... ok
[INFO] [stdout] test handlers::perl::tests::no_args_asks ... ok
[INFO] [stdout] test handlers::mkdir::tests::mkdir_tmp_allows ... ok
[INFO] [stdout] test handlers::node::tests::script_file_safe_allows ... ok
[INFO] [stdout] test handlers::perl::tests::e_backtick_asks ... ok
[INFO] [stdout] test handlers::perl::tests::script_file_missing_asks ... ok
[INFO] [stdout] test handlers::node::tests::version_allows ... ok
[INFO] [stdout] test handlers::perl::tests::script_file_dangerous_asks ... ok
[INFO] [stdout] test handlers::perl::tests::e_safe_print_allows ... ok
[INFO] [stdout] test handlers::node::tests::script_file_dangerous_asks ... ok
[INFO] [stdout] test handlers::perl::tests::version_allows ... ok
[INFO] [stdout] test handlers::perl::tests::upper_e_asks_for_dangerous ... ok
[INFO] [stdout] test handlers::python::tests::m_safe_module_allows ... ok
[INFO] [stdout] test handlers::python::tests::c_eval_asks ... ok
[INFO] [stdout] test handlers::python::tests::c_import_json_allows ... ok
[INFO] [stdout] test handlers::python::tests::c_import_os_asks ... ok
[INFO] [stdout] test handlers::perl::tests::script_file_safe_allows ... ok
[INFO] [stdout] test handlers::python::tests::m_unknown_module_asks ... ok
[INFO] [stdout] test handlers::python::tests::no_args_asks ... ok
[INFO] [stdout] test handlers::python::tests::script_file_asks ... ok
[INFO] [stdout] test handlers::python::tests::script_file_dangerous_asks ... ok
[INFO] [stdout] test handlers::python::tests::script_file_missing_asks ... ok
[INFO] [stdout] test handlers::python::tests::script_file_safe_allows ... ok
[INFO] [stdout] test handlers::python::tests::c_safe_print_allows ... ok
[INFO] [stdout] test handlers::python_tools::tests::uv_sync_allows ... ok
[INFO] [stdout] test handlers::ruby::tests::e_backtick_asks ... ok
[INFO] [stdout] test handlers::ruby::tests::e_system_asks ... ok
[INFO] [stdout] test handlers::ruby::tests::irb_asks ... ok
[INFO] [stdout] test handlers::python::tests::version_allows ... ok
[INFO] [stdout] test handlers::python_tools::tests::uv_pip_list_allows ... ok
[INFO] [stdout] test handlers::python_tools::tests::uv_run_recurses ... ok
[INFO] [stdout] test handlers::ruby::tests::e_safe_puts_allows ... ok
[INFO] [stdout] test handlers::ruby::tests::script_file_dangerous_asks ... ok
[INFO] [stdout] test handlers::ruby::tests::no_args_asks ... ok
[INFO] [stdout] test handlers::ruby::tests::script_file_safe_allows ... ok
[INFO] [stdout] test handlers::ruby::tests::script_file_missing_asks ... ok
[INFO] [stdout] test handlers::shell::tests::bash_interactive_asks ... ok
[INFO] [stdout] test handlers::system::tests::dmesg_clear_asks ... ok
[INFO] [stdout] test handlers::ruby::tests::version_allows ... ok
[INFO] [stdout] test handlers::shell::tests::bash_c_simple_recurses ... ok
[INFO] [stdout] test handlers::shell::tests::bash_c_with_positional_args_asks ... ok
[INFO] [stdout] test handlers::system::tests::dmesg_clear_long_asks ... ok
[INFO] [stdout] test handlers::shell::tests::bash_script_missing_asks ... ok
[INFO] [stdout] test handlers::shell::tests::bash_script_file_recurses ... ok
[INFO] [stdout] test handlers::shell::tests::sh_c_no_command_asks ... ok
[INFO] [stdout] test handlers::system::tests::fd_exec_batch_recurses ... ok
[INFO] [stdout] test handlers::system::tests::fd_exec_no_command_asks ... ok
[INFO] [stdout] test handlers::system::tests::fd_exec_recurses ... ok
[INFO] [stdout] test handlers::system::tests::fd_search_allows ... ok
[INFO] [stdout] test handlers::system::tests::dmesg_clear_uppercase_asks ... ok
[INFO] [stdout] test handlers::system::tests::ip_addr_show_allows ... ok
[INFO] [stdout] test handlers::system::tests::ifconfig_modify_asks ... ok
[INFO] [stdout] test handlers::system::tests::dmesg_read_allows ... ok
[INFO] [stdout] test handlers::system::tests::ifconfig_set_ip_asks ... ok
[INFO] [stdout] test handlers::system::tests::ifconfig_bare_allows ... ok
[INFO] [stdout] test handlers::system::tests::ifconfig_interface_allows ... ok
[INFO] [stdout] test handlers::system::tests::ip_addr_add_asks ... ok
[INFO] [stdout] test handlers::system::tests::ip_bare_allows ... ok
[INFO] [stdout] test handlers::system::tests::ip_link_allows ... ok
[INFO] [stdout] test handlers::system::tests::ip_route_flush_asks ... ok
[INFO] [stdout] test handlers::text_tools::tests::awk_append_redirect_asks ... ok
[INFO] [stdout] test handlers::tests::read_file_rejects_path_outside_working_dir ... ok
[INFO] [stdout] test handlers::tests::read_file_reads_existing_file ... ok
[INFO] [stdout] test handlers::tests::read_file_returns_none_when_remote ... ok
[INFO] [stdout] test handlers::text_tools::tests::awk_f_safe_file_allows ... ok
[INFO] [stdout] test handlers::text_tools::tests::awk_f_missing_file_asks ... ok
[INFO] [stdout] test handlers::text_tools::tests::awk_file_redirect_asks ... ok
[INFO] [stdout] test handlers::text_tools::tests::awk_f_flag_asks ... ok
[INFO] [stdout] test handlers::text_tools::tests::awk_pipe_to_command_asks ... ok
[INFO] [stdout] test handlers::text_tools::tests::gawk_system_call_asks ... ok
[INFO] [stdout] test handlers::tests::read_file_returns_none_for_missing_file ... ok
[INFO] [stdout] test handlers::text_tools::tests::awk_system_call_asks ... ok
[INFO] [stdout] test handlers::text_tools::tests::awk_simple_filter_allows ... ok
[INFO] [stdout] test handlers::text_tools::tests::sed_standalone_w_asks ... ok
[INFO] [stdout] test handlers::text_tools::tests::sed_inplace_asks ... ok
[INFO] [stdout] test handlers::text_tools::tests::sed_simple_filter_allows ... ok
[INFO] [stdout] test handlers::text_tools::tests::awk_f_system_file_asks ... ok
[INFO] [stdout] test handlers::text_tools::tests::sed_e_command_asks ... ok
[INFO] [stdout] test handlers::text_tools::tests::sed_w_command_asks ... ok
[INFO] [stdout] test handlers::tests::read_file_rejects_oversized_file ... ok
[INFO] [stdout] test handlers::text_tools::tests::sed_w_flag_with_g_asks ... ok
[INFO] [stdout] test handlers::text_tools::tests::sed_w_in_replacement_allows ... ok
[INFO] [stdout] test handlers::unix_utils::tests::tar_extract_asks ... ok
[INFO] [stdout] test handlers::unix_utils::tests::tar_list_allows ... ok
[INFO] [stdout] test inspect::tests::json_output_parses ... ok
[INFO] [stdout] test inspect::tests::rule_to_display_redirect ... ok
[INFO] [stdout] test inspect::tests::rule_to_display_with_message ... ok
[INFO] [stdout] test inspect::tests::list_rules_from_config_file ... ok
[INFO] [stdout] test inspect::tests::rule_to_display_after ... ok
[INFO] [stdout] test inspect::tests::rule_to_display_command ... ok
[INFO] [stdout] test inspect::tests::rule_to_display_mcp ... ok
[INFO] [stdout] test inspect::tests::directive_to_display_skips_set ... ok
[INFO] [stdout] test inspect::tests::trace_json_output_parses ... ok
[INFO] [stdout] test list::tests::filter_matches_action ... ok
[INFO] [stdout] test list::tests::filter_matches_pattern ... ok
[INFO] [stdout] test list::tests::handler_commands_is_sorted_and_nonempty ... ok
[INFO] [stdout] test list::tests::wrapper_list_is_sorted_and_nonempty ... ok
[INFO] [stdout] test list::tests::safe_list_is_sorted_and_nonempty ... ok
[INFO] [stdout] test logging::tests::appends_multiple_entries ... ok
[INFO] [stdout] test logging::tests::bad_path_does_not_panic ... ok
[INFO] [stdout] test logging::tests::no_command_field_when_none ... ok
[INFO] [stdout] test logging::tests::log_full_includes_payload ... ok
[INFO] [stdout] test migrate::tests::derive_output_path_sibling ... ok
[INFO] [stdout] test logging::tests::writes_json_line ... ok
[INFO] [stdout] test migrate::tests::derive_output_path_bare ... ok
[INFO] [stdout] test migrate::tests::migrate_basic_config ... ok
[INFO] [stdout] test node_safety::tests::array_operations_safe ... ok
[INFO] [stdout] test node_safety::tests::console_log_is_safe ... ok
[INFO] [stdout] test node_safety::tests::empty_source_is_safe ... ok
[INFO] [stdout] test node_safety::tests::eval_is_dangerous ... ok
[INFO] [stdout] test node_safety::tests::function_constructor_is_dangerous ... ok
[INFO] [stdout] test node_safety::tests::import_from_fs_is_dangerous ... ok
[INFO] [stdout] test node_safety::tests::json_parse_is_safe ... ok
[INFO] [stdout] test node_safety::tests::math_is_safe ... ok
[INFO] [stdout] test node_safety::tests::process_env_is_dangerous ... ok
[INFO] [stdout] test node_safety::tests::process_exit_is_dangerous ... ok
[INFO] [stdout] test node_safety::tests::require_child_process_is_dangerous ... ok
[INFO] [stdout] test node_safety::tests::require_double_quotes_is_dangerous ... ok
[INFO] [stdout] test node_safety::tests::require_fs_is_dangerous ... ok
[INFO] [stdout] test node_safety::tests::require_net_is_dangerous ... ok
[INFO] [stdout] test node_safety::tests::require_os_is_dangerous ... ok
[INFO] [stdout] test node_safety::tests::require_vm_is_dangerous ... ok
[INFO] [stdout] test node_safety::tests::rm_sync_is_dangerous ... ok
[INFO] [stdout] test node_safety::tests::unlink_sync_is_dangerous ... ok
[INFO] [stdout] test node_safety::tests::write_file_sync_is_dangerous ... ok
[INFO] [stdout] test packages::custom::tests::discover_empty_dir_returns_empty ... ok
[INFO] [stdout] test packages::custom::tests::discover_finds_toml_files ... ok
[INFO] [stdout] test node_safety::tests::exec_sync_is_dangerous ... ok
[INFO] [stdout] test packages::custom::tests::discover_ignores_non_toml_files ... ok
[INFO] [stdout] test packages::custom::tests::discover_missing_dir_returns_empty ... ok
[INFO] [stdout] test inspect::tests::trace_handler_command ... ok
[INFO] [stdout] test packages::custom::tests::discover_returns_sorted ... ok
[INFO] [stdout] test packages::custom::tests::load_by_name_not_found_returns_none ... ok
[INFO] [stdout] test packages::custom::tests::load_by_name_malformed_errors_with_path ... ok
[INFO] [stdout] test packages::custom::tests::load_by_name_happy_path ... ok
[INFO] [stdout] test inspect::tests::collect_list_with_config_override ... ok
[INFO] [stdout] test packages::custom::tests::discover_skips_malformed_returns_valid_only ... ok
[INFO] [stdout] test packages::custom::tests::load_defaults_tagline_when_missing ... ok
[INFO] [stdout] test packages::custom::tests::load_warns_when_meta_name_mismatch ... ok
[INFO] [stdout] test packages::tests::all_available_includes_custom_from_home ... ok
[INFO] [stdout] test packages::tests::all_builtin_returns_three ... ok
[INFO] [stdout] test packages::tests::all_returns_three_packages ... ok
[INFO] [stdout] test inspect::tests::trace_with_config_rule ... ok
[INFO] [stdout] test inspect::tests::trace_safe_command ... ok
[INFO] [stdout] test packages::tests::all_available_filters_shadowed_custom ... ok
[INFO] [stdout] test packages::meta::tests::builtin_meta_non_empty ... ok
[INFO] [stdout] test packages::meta::tests::builtin_meta_matches_toml ... ok
[INFO] [stdout] test inspect::tests::trace_unknown_command_asks ... ok
[INFO] [stdout] test packages::tests::custom_extends_custom_rejected ... ok
[INFO] [stdout] test packages::tests::autopilot_denies_catastrophic_rm ... ok
[INFO] [stdout] test packages::tests::autopilot_toml_parses ... ok
[INFO] [stdout] test packages::tests::autopilot_has_allow_default ... ok
[INFO] [stdout] test packages::tests::custom_extends_unknown_package_errors ... ok
[INFO] [stdout] test packages::tests::display_shows_name ... ok
[INFO] [stdout] test packages::tests::package_toml_not_empty ... ok
[INFO] [stdout] test packages::tests::custom_without_extends_has_only_own_rules ... ok
[INFO] [stdout] test packages::tests::parse_invalid_name_errors ... ok
[INFO] [stdout] test packages::tests::parse_valid_names ... ok
[INFO] [stdout] test packages::tests::resolve_builtin_takes_priority_over_custom_with_same_name ... ok
[INFO] [stdout] test packages::tests::resolve_builtin_without_home ... ok
[INFO] [stdout] test packages::tests::resolve_unknown_errors_lists_known ... ok
[INFO] [stdout] test packages::tests::resolve_custom_package_by_name ... ok
[INFO] [stdout] test packages::tests::resolve_unknown_errors_includes_custom ... ok
[INFO] [stdout] test packages::tests::review_has_no_extra_allow_rules ... ok
[INFO] [stdout] test packages::tests::review_toml_parses ... ok
[INFO] [stdout] test packages::tests::shield_values_match_expected ... ok
[INFO] [stdout] test packages::tests::tagline_values_not_empty ... ok
[INFO] [stdout] test parser::tests::parse_list ... ok
[INFO] [stdout] test parser::tests::parse_command_substitution ... ok
[INFO] [stdout] test parser::tests::parse_for_loop ... ok
[INFO] [stdout] test parser::tests::parse_if_statement ... ok
[INFO] [stdout] test parser::tests::parse_simple_command ... ok
[INFO] [stdout] test parser::tests::parse_pipeline ... ok
[INFO] [stdout] test parser::tests::parse_redirect ... ok
[INFO] [stdout] test parser::tests::parse_subshell ... ok
[INFO] [stdout] test pattern::tests::double_star ... ok
[INFO] [stdout] test pattern::tests::char_class ... ok
[INFO] [stdout] test pattern::tests::char_class_range ... ok
[INFO] [stdout] test pattern::tests::double_star_at_end ... ok
[INFO] [stdout] test pattern::tests::empty_exact_pattern ... ok
[INFO] [stdout] test pattern::tests::empty_pattern ... ok
[INFO] [stdout] test pattern::tests::literal_exact ... ok
[INFO] [stdout] test pattern::tests::negated_char_class ... ok
[INFO] [stdout] test pattern::tests::wildcard_question ... ok
[INFO] [stdout] test pattern::tests::literal_prefix ... ok
[INFO] [stdout] test pattern::tests::prefix_matching_at_word_boundaries ... ok
[INFO] [stdout] test pattern::tests::wildcard_star ... ok
[INFO] [stdout] test payload::tests::claude_auto_detect ... ok
[INFO] [stdout] test payload::tests::cursor_auto_detect ... ok
[INFO] [stdout] test payload::tests::edit_tool_extracts_file_path ... ok
[INFO] [stdout] test payload::tests::gemini_auto_detect ... ok
[INFO] [stdout] test payload::tests::gemini_read_file ... ok
[INFO] [stdout] test payload::tests::forced_mode_overrides ... ok
[INFO] [stdout] test payload::tests::mcp_detection ... ok
[INFO] [stdout] test payload::tests::non_mcp ... ok
[INFO] [stdout] test payload::tests::post_tool_use_detection ... ok
[INFO] [stdout] test payload::tests::write_tool_extracts_file_path ... ok
[INFO] [stdout] test perl_safety::tests::array_is_safe ... ok
[INFO] [stdout] test perl_safety::tests::backtick_is_dangerous ... ok
[INFO] [stdout] test payload::tests::read_tool_extracts_file_path ... ok
[INFO] [stdout] test perl_safety::tests::empty_source_is_safe ... ok
[INFO] [stdout] test payload::tests::glob_is_read_operation ... ok
[INFO] [stdout] test perl_safety::tests::exec_is_dangerous ... ok
[INFO] [stdout] test perl_safety::tests::io_socket_is_dangerous ... ok
[INFO] [stdout] test perl_safety::tests::lwp_is_dangerous ... ok
[INFO] [stdout] test perl_safety::tests::eval_is_dangerous ... ok
[INFO] [stdout] test packages::tests::custom_extends_develop_inherits_directives ... ok
[INFO] [stdout] test payload::tests::bash_tool_no_file_operation ... ok
[INFO] [stdout] test perl_safety::tests::eval_block_is_dangerous ... ok
[INFO] [stdout] test perl_safety::tests::open_read_is_safe ... ok
[INFO] [stdout] test perl_safety::tests::math_is_safe ... ok
[INFO] [stdout] test perl_safety::tests::open_write_is_dangerous ... ok
[INFO] [stdout] test perl_safety::tests::print_is_safe ... ok
[INFO] [stdout] test perl_safety::tests::qx_is_dangerous ... ok
[INFO] [stdout] test perl_safety::tests::regex_is_safe ... ok
[INFO] [stdout] test packages::tests::develop_allows_cargo_test ... ok
[INFO] [stdout] test packages::tests::develop_toml_parses ... ok
[INFO] [stdout] test packages::tests::develop_allows_file_ops ... ok
[INFO] [stdout] test perl_safety::tests::net_module_is_dangerous ... ok
[INFO] [stdout] test perl_safety::tests::system_call_is_dangerous ... ok
[INFO] [stdout] test perl_safety::tests::open_pipe_is_dangerous ... ok
[INFO] [stdout] test perl_safety::tests::system_bare_is_dangerous ... ok
[INFO] [stdout] test perl_safety::tests::rename_is_dangerous ... ok
[INFO] [stdout] test perl_safety::tests::unlink_is_dangerous ... ok
[INFO] [stdout] test profile_cmd::tests::update_does_not_clobber_similar_keys ... ok
[INFO] [stdout] test profile_cmd::tests::update_handles_no_space_before_equals ... ok
[INFO] [stdout] test python_safety::tests::attribute_connect_is_dangerous ... ok
[INFO] [stdout] test profile_cmd::tests::update_empty_file ... ok
[INFO] [stdout] test python_safety::tests::attribute_popen_is_dangerous ... ok
[INFO] [stdout] test profile_cmd::tests::update_existing_package_line ... ok
[INFO] [stdout] test profile_cmd::tests::update_no_settings_section ... ok
[INFO] [stdout] test profile_cmd::tests::update_settings_section_no_package ... ok
[INFO] [stdout] test profile_cmd::tests::write_package_creates_file ... ok
[INFO] [stdout] test python_safety::tests::compile_is_dangerous ... ok
[INFO] [stdout] test python_safety::tests::dunder_import_is_dangerous ... ok
[INFO] [stdout] test python_safety::tests::from_os_import_is_dangerous ... ok
[INFO] [stdout] test python_safety::tests::from_os_path_import_is_dangerous ... ok
[INFO] [stdout] test python_safety::tests::attribute_system_is_dangerous ... ok
[INFO] [stdout] test python_safety::tests::breakpoint_is_dangerous ... ok
[INFO] [stdout] test python_safety::tests::eval_is_dangerous ... ok
[INFO] [stdout] test python_safety::tests::empty_source_is_safe ... ok
[INFO] [stdout] test python_safety::tests::import_os_path_is_dangerous ... ok
[INFO] [stdout] test python_safety::tests::json_import_is_safe ... ok
[INFO] [stdout] test python_safety::tests::list_comprehension_safe ... ok
[INFO] [stdout] test python_safety::tests::multiple_safe_imports ... ok
[INFO] [stdout] test profile_cmd::tests::write_package_updates_existing ... ok
[INFO] [stdout] test python_safety::tests::os_import_is_dangerous ... ok
[INFO] [stdout] test python_safety::tests::getattr_is_dangerous ... ok
[INFO] [stdout] test python_safety::tests::mixed_safe_and_dangerous_imports ... ok
[INFO] [stdout] test python_safety::tests::multiprocessing_is_dangerous ... ok
[INFO] [stdout] test python_safety::tests::open_is_dangerous ... ok
[INFO] [stdout] test python_safety::tests::pickle_import_is_dangerous ... ok
[INFO] [stdout] test python_safety::tests::simple_math_is_safe ... ok
[INFO] [stdout] test python_safety::tests::subprocess_import_is_dangerous ... ok
[INFO] [stdout] test python_safety::tests::sys_import_is_safe ... ok
[INFO] [stdout] test python_safety::tests::socket_import_is_dangerous ... ok
[INFO] [stdout] test python_safety::tests::print_is_safe ... ok
[INFO] [stdout] test python_safety::tests::string_operations_safe ... ok
[INFO] [stdout] test resolve::tests::brace_expansion_expands_args ... ok
[INFO] [stdout] test resolve::tests::command_position_dynamic_detected ... ok
[INFO] [stdout] test resolve::tests::command_substitution_unresolvable ... ok
[INFO] [stdout] test resolve::tests::env_lookup_returns_none_for_unset ... ok
[INFO] [stdout] test resolve::tests::env_lookup_returns_set_var ... ok
[INFO] [stdout] test resolve::tests::param_indirect_unresolvable ... ok
[INFO] [stdout] test resolve::tests::resolve_arithmetic_division_by_zero_unresolvable ... ok
[INFO] [stdout] test resolve::tests::param_length_unresolvable ... ok
[INFO] [stdout] test resolve::tests::resolve_alt_value_when_set ... ok
[INFO] [stdout] test resolve::tests::resolve_ansi_c_quote_decoded ... ok
[INFO] [stdout] test resolve::tests::resolve_alt_value_when_unset ... ok
[INFO] [stdout] test resolve::tests::resolve_arithmetic_complex ... ok
[INFO] [stdout] test python_safety::tests::exec_is_dangerous ... ok
[INFO] [stdout] test resolve::tests::resolve_brace_char_range ... ok
[INFO] [stdout] test resolve::tests::resolve_brace_numeric_range ... ok
[INFO] [stdout] test resolve::tests::resolve_brace_comma ... ok
[INFO] [stdout] test resolve::tests::resolve_arithmetic_unary_negation ... ok
[INFO] [stdout] test resolve::tests::resolve_brace_with_prefix_and_suffix ... ok
[INFO] [stdout] test resolve::tests::resolve_arithmetic_with_var_unresolvable ... ok
[INFO] [stdout] test resolve::tests::resolve_braced_var ... ok
[INFO] [stdout] test resolve::tests::resolve_full_command_with_var ... ok
[INFO] [stdout] test resolve::tests::resolve_arithmetic_simple ... ok
[INFO] [stdout] test resolve::tests::resolve_full_command_all_literal ... ok
[INFO] [stdout] test resolve::tests::resolve_full_command_unresolvable_var ... ok
[INFO] [stdout] test resolve::tests::resolve_default_when_set ... ok
[INFO] [stdout] test resolve::tests::resolve_default_when_unset ... ok
[INFO] [stdout] test resolve::tests::resolve_locale_string ... ok
[INFO] [stdout] test resolve::tests::shell_join_empty ... ok
[INFO] [stdout] test resolve::tests::resolve_simple_var_unset ... ok
[INFO] [stdout] test resolve::tests::resolve_word_literal ... ok
[INFO] [stdout] test resolve::tests::shell_join_args_list ... ok
[INFO] [stdout] test resolve::tests::resolve_simple_var_set ... ok
[INFO] [stdout] test resolve::tests::shell_join_safe_args ... ok
[INFO] [stdout] test resolve::tests::strip_outer_quotes_just_quote_pair ... ok
[INFO] [stdout] test resolve::tests::shell_join_with_spaces ... ok
[INFO] [stdout] test resolve::tests::strip_outer_quotes_double ... ok
[INFO] [stdout] test resolve::tests::strip_outer_quotes_empty_string ... ok
[INFO] [stdout] test resolve::tests::shell_join_with_inner_quote ... ok
[INFO] [stdout] test resolve::tests::strip_outer_quotes_unquoted_unchanged ... ok
[INFO] [stdout] test resolve::tests::strip_outer_quotes_mismatched_unchanged ... ok
[INFO] [stdout] test resolve::tests::strip_outer_quotes_only_left_unchanged ... ok
[INFO] [stdout] test resolve::tests::strip_outer_quotes_single ... ok
[INFO] [stdout] test resolve::tests::strip_outer_quotes_single_char_unchanged ... ok
[INFO] [stdout] test resolve::tests::unsupported_param_op_unresolvable ... ok
[INFO] [stdout] test risk::tests::medium_default ... ok
[INFO] [stdout] test risk::tests::critical_commands ... ok
[INFO] [stdout] test risk::tests::high_commands ... ok
[INFO] [stdout] test risk::tests::low_safe_subcommands ... ok
[INFO] [stdout] test risk::tests::low_simple_safe ... ok
[INFO] [stdout] test risk::tests::ordering_low_to_critical ... ok
[INFO] [stdout] test ruby_safety::tests::exec_is_dangerous ... ok
[INFO] [stdout] test ruby_safety::tests::array_is_safe ... ok
[INFO] [stdout] test ruby_safety::tests::file_delete_is_dangerous ... ok
[INFO] [stdout] test ruby_safety::tests::backtick_is_dangerous ... ok
[INFO] [stdout] test ruby_safety::tests::empty_source_is_safe ... ok
[INFO] [stdout] test ruby_safety::tests::eval_is_dangerous ... ok
[INFO] [stdout] test resolve::tests::resolve_three_adjacent_brace_expansions ... ok
[INFO] [stdout] test ruby_safety::tests::file_write_is_dangerous ... ok
[INFO] [stdout] test ruby_safety::tests::fileutils_rm_is_dangerous ... ok
[INFO] [stdout] test resolve::tests::resolve_two_adjacent_brace_expansions ... ok
[INFO] [stdout] test ruby_safety::tests::io_popen_is_dangerous ... ok
[INFO] [stdout] test ruby_safety::tests::open3_is_dangerous ... ok
[INFO] [stdout] test ruby_safety::tests::percent_x_is_dangerous ... ok
[INFO] [stdout] test ruby_safety::tests::require_net_http_is_dangerous ... ok
[INFO] [stdout] test ruby_safety::tests::spawn_is_dangerous ... ok
[INFO] [stdout] test ruby_safety::tests::require_socket_is_dangerous ... ok
[INFO] [stdout] test ruby_safety::tests::string_operations_safe ... ok
[INFO] [stdout] test ruby_safety::tests::system_is_dangerous ... ok
[INFO] [stdout] test ruby_safety::tests::kernel_system_is_dangerous ... ok
[INFO] [stdout] test ruby_safety::tests::math_is_safe ... ok
[INFO] [stdout] test ruby_safety::tests::puts_is_safe ... ok
[INFO] [stdout] test rule_cmd::tests::append_preserves_existing ... ok
[INFO] [stdout] test rule_cmd::tests::suggest_normalizes_whitespace ... ok
[INFO] [stdout] test rule_cmd::tests::suggest_empty ... ok
[INFO] [stdout] test rule_cmd::tests::suggest_single_command ... ok
[INFO] [stdout] test rule_cmd::tests::append_twice_no_duplicates_in_format ... ok
[INFO] [stdout] test rule_cmd::tests::appended_rule_is_loadable ... ok
[INFO] [stdout] test rule_cmd::tests::append_with_message ... ok
[INFO] [stdout] test rule_cmd::tests::suggest_four_tokens ... ok
[INFO] [stdout] test rule_cmd::tests::suggest_three_tokens ... ok
[INFO] [stdout] test rule_cmd::tests::append_creates_file ... ok
[INFO] [stdout] test rule_cmd::tests::suggest_two_tokens ... ok
[INFO] [stdout] test self_protect::tests::does_not_protect_unrelated_files ... ok
[INFO] [stdout] test self_protect::tests::protects_rippy_config ... ok
[INFO] [stdout] test self_protect::tests::does_not_protect_partial_matches ... ok
[INFO] [stdout] test self_protect::tests::protects_with_directory_prefix ... ok
[INFO] [stdout] test sessions::tests::parse_handles_empty_input ... ok
[INFO] [stdout] test sessions::tests::parse_detects_allowed_and_denied ... ok
[INFO] [stdout] test sessions::tests::project_dir_mapping ... ok
[INFO] [stdout] test sessions::tests::parse_extracts_bash_commands ... ok
[INFO] [stdout] test self_protect::tests::protects_trust_database ... ok
[INFO] [stdout] test sessions::tests::parse_session_file_from_disk ... ok
[INFO] [stdout] test sessions::tests::parse_handles_malformed_lines ... ok
[INFO] [stdout] test sessions::tests::parse_ignores_non_bash_tools ... ok
[INFO] [stdout] test self_protect::tests::protects_global_config ... ok
[INFO] [stdout] test sessions::tests::to_breakdowns_aggregates ... ok
[INFO] [stdout] test sessions::tests::to_breakdowns_empty ... ok
[INFO] [stdout] test setup::json_settings::tests::has_tokf_hook_no_tokf ... ok
[INFO] [stdout] test setup::cursor::tests::rejects_tokf_conflict ... ok
[INFO] [stdout] test setup::json_settings::tests::has_tokf_hook_direct_command ... ok
[INFO] [stdout] test setup::cursor::tests::fresh_install ... ok
[INFO] [stdout] test setup::json_settings::tests::has_tokf_hook_nested ... ok
[INFO] [stdout] test setup::cursor::tests::idempotent ... ok
[INFO] [stdout] test setup::cursor::tests::preserves_existing_hooks ... ok
[INFO] [stdout] test setup::json_settings::tests::install_matcher_hook_fresh_file ... ok
[INFO] [stdout] test setup::json_settings::tests::read_missing_file_returns_empty_object ... ok
[INFO] [stdout] test setup::json_settings::tests::install_matcher_hook_rejects_tokf_conflict ... ok
[INFO] [stdout] test setup::json_settings::tests::install_matcher_hook_preserves_existing ... ok
[INFO] [stdout] test setup::json_settings::tests::resolve_tool_path_project ... ok
[INFO] [stdout] test setup::json_settings::tests::read_existing_file ... ok
[INFO] [stdout] test setup::tokf::tests::parse_tokf_info_json ... ok
[INFO] [stdout] test setup::tokf::tests::resolve_tools_all_hooks ... ok
[INFO] [stdout] test setup::json_settings::tests::read_malformed_json_errors ... ok
[INFO] [stdout] test setup::tokf::tests::resolve_tools_none ... ok
[INFO] [stdout] test setup::json_settings::tests::remove_rippy_entries_direct ... ok
[INFO] [stdout] test setup::json_settings::tests::remove_rippy_entries_nested ... ok
[INFO] [stdout] test setup::json_settings::tests::install_matcher_hook_idempotent ... ok
[INFO] [stdout] test setup::json_settings::tests::resolve_tool_path_global ... ok
[INFO] [stdout] test setup::json_settings::tests::write_creates_parent_dirs ... ok
[INFO] [stdout] test setup::tokf::tests::resolve_tools_specific ... ok
[INFO] [stdout] test setup::tokf::tests::select_target_dir_global ... ok
[INFO] [stdout] test setup::tokf::tests::select_target_dir_missing_scope ... ok
[INFO] [stdout] test setup::tokf::tests::select_target_dir_local ... ok
[INFO] [stdout] test sql::tests::cte_with_select ... ok
[INFO] [stdout] test sql::tests::comments_stripped ... ok
[INFO] [stdout] test sql::tests::multi_statement_all_readonly ... ok
[INFO] [stdout] test setup::tokf::tests::write_permissions_config_fresh ... ok
[INFO] [stdout] test sql::tests::empty_is_ambiguous ... ok
[INFO] [stdout] test sql::tests::exec_is_ambiguous ... ok
[INFO] [stdout] test sql::tests::multi_statement_mixed ... ok
[INFO] [stdout] test sql::tests::select_into_is_write ... ok
[INFO] [stdout] test sql::tests::write_statements ... ok
[INFO] [stdout] test sql::tests::select_is_readonly ... ok
[INFO] [stdout] test sql::tests::show_describe_are_readonly ... ok
[INFO] [stdout] test stats::tests::stats_json_serializes ... ok
[INFO] [stdout] test setup::tokf::tests::write_permissions_config_preserves_existing ... ok
[INFO] [stdout] test stdlib::tests::init_refuses_existing_file ... ok
[INFO] [stdout] test stdlib::tests::stdlib_toml_not_empty ... ok
[INFO] [stdout] test suggest::tests::action_mixed_signals ... ok
[INFO] [stdout] test suggest::tests::action_mostly_allowed_high_risk ... ok
[INFO] [stdout] test suggest::tests::action_mostly_allowed_low_risk ... ok
[INFO] [stdout] test suggest::tests::action_mostly_denied ... ok
[INFO] [stdout] test stdlib::tests::stdlib_cargo_safe_subcommands ... ok
[INFO] [stdout] test suggest::tests::analyze_risk_and_action_correct ... ok
[INFO] [stdout] test suggest::tests::apply_suggestions_writes_rules ... ok
[INFO] [stdout] test suggest::tests::confidence_empty ... ok
[INFO] [stdout] test suggest::tests::analyze_produces_suggestions ... ok
[INFO] [stdout] test suggest::tests::confidence_high ... ok
[INFO] [stdout] test suggest::tests::confidence_low_mixed ... ok
[INFO] [stdout] test suggest::tests::confidence_low_small_sample ... ok
[INFO] [stdout] test suggest::tests::confidence_medium ... ok
[INFO] [stdout] test suggest::tests::generalize_exact_key_only ... ok
[INFO] [stdout] test suggest::tests::generalize_multiple_examples ... ok
[INFO] [stdout] test suggest::tests::generalize_single_example ... ok
[INFO] [stdout] test suggest::tests::group_commands_aggregates ... ok
[INFO] [stdout] test suggest::tests::group_key_simple_commands ... ok
[INFO] [stdout] test suggest::tests::group_key_subcommand_tools ... ok
[INFO] [stdout] test toml_config::tests::after_requires_message ... ok
[INFO] [stdout] test toml_config::tests::all_action_variants ... ok
[INFO] [stdout] test toml_config::tests::empty_toml_produces_empty_config ... ok
[INFO] [stdout] test toml_config::tests::log_full_false_not_emitted ... ok
[INFO] [stdout] test toml_config::tests::malformed_toml_errors ... ok
[INFO] [stdout] test toml_config::tests::parse_after_rule ... ok
[INFO] [stdout] test toml_config::tests::parse_aliases ... ok
[INFO] [stdout] test toml_config::tests::parse_command_rules ... ok
[INFO] [stdout] test toml_config::tests::parse_mcp_rules ... ok
[INFO] [stdout] test toml_config::tests::parse_redirect_rules ... ok
[INFO] [stdout] test toml_config::tests::parse_settings ... ok
[INFO] [stdout] test toml_config::tests::parse_structured_command_with_flags ... ok
[INFO] [stdout] test toml_config::tests::parse_structured_subcommands_and_no_pattern ... ok
[INFO] [stdout] test toml_config::tests::roundtrip_file_rules ... ok
[INFO] [stdout] test toml_config::tests::roundtrip_mcp_rules ... ok
[INFO] [stdout] test toml_config::tests::roundtrip_rules ... ok
[INFO] [stdout] test toml_config::tests::rule_with_risk_field_errors ... ok
[INFO] [stdout] test toml_config::tests::rule_with_typo_field_errors ... ok
[INFO] [stdout] test toml_config::tests::rule_without_pattern_or_structured_fails ... ok
[INFO] [stdout] test stdlib::tests::stdlib_cargo_unknown_defaults_to_ask ... ok
[INFO] [stdout] test toml_config::tests::structured_rule_round_trips ... ok
[INFO] [stdout] test toml_config::tests::unknown_action_errors ... ok
[INFO] [stdout] test tracking::tests::idempotent_schema ... ok
[INFO] [stdout] test tracking::tests::null_fields_handled ... ok
[INFO] [stdout] test tracking::tests::parse_duration_invalid ... ok
[INFO] [stdout] test tracking::tests::parse_duration_valid ... ok
[INFO] [stdout] test stdlib::tests::stdlib_file_ops_ask ... ok
[INFO] [stdout] test tracking::tests::query_command_breakdown_groups_by_decision ... ok
[INFO] [stdout] test tracking::tests::record_and_query_counts ... ok
[INFO] [stdout] test tracking::tests::schema_version_recorded ... ok
[INFO] [stdout] test stats::tests::stats_output_from_populated_db ... ok
[INFO] [stdout] test toml_config::tests::when_clause_parsed_into_conditions ... ok
[INFO] [stdout] test tracking::tests::query_top_commands ... ok
[INFO] [stdout] test tracking::tests::open_db_creates_file ... ok
[INFO] [stdout] test trust::tests::empty_db_returns_untrusted ... ok
[INFO] [stdout] test trust::tests::format_epoch_known_date ... ok
[INFO] [stdout] test trust::tests::hash_content_deterministic ... ok
[INFO] [stdout] test trust::tests::hash_content_different_for_different_input ... ok
[INFO] [stdout] test trust::tests::legacy_entry_without_repo_id_uses_hash ... ok
[INFO] [stdout] test stdlib::tests::stdlib_dangerous_commands_ask ... ok
[INFO] [stdout] test trust::tests::modified_content_returns_modified ... ok
[INFO] [stdout] test stdlib::tests::stdlib_cargo_ask_subcommands ... ok
[INFO] [stdout] test stdlib::tests::stdlib_parses_without_error ... ok
[INFO] [stdout] test trust::tests::detect_repo_id_no_git_returns_none ... ok
[INFO] [stdout] test trust::tests::revoke_nonexistent_returns_false ... ok
[INFO] [stdout] test verdict::tests::claude_json_format ... ok
[INFO] [stdout] test verdict::tests::combine_borrows_resolved_command_from_other_when_chosen_has_none ... ok
[INFO] [stdout] test verdict::tests::combine_empty_defaults_to_allow ... ok
[INFO] [stdout] test verdict::tests::combine_preserves_resolved_command_from_chosen ... ok
[INFO] [stdout] test verdict::tests::combine_takes_most_restrictive ... ok
[INFO] [stdout] test verdict::tests::cursor_json_format ... ok
[INFO] [stdout] test verdict::tests::decision_ordering ... ok
[INFO] [stdout] test verdict::tests::gemini_ask_maps_to_deny ... ok
[INFO] [stdout] test verdict::tests::json_output_unchanged_when_resolved_present ... ok
[INFO] [stdout] test verdict::tests::with_resolution_attaches_resolved_command ... ok
[INFO] [stdout] test trust::tests::re_trust_after_write_updates_hash ... ok
[INFO] [stdout] test trust::tests::save_and_load_roundtrip ... ok
[INFO] [stdout] test trust::tests::trust_then_check_returns_trusted ... ok
[INFO] [stdout] test trust::tests::revoke_existing_returns_true ... ok
[INFO] [stdout] test trust::tests::detect_repo_id_in_git_repo_with_remote ... ok
[INFO] [stdout] test trust::tests::repo_trust_survives_hash_change ... ok
[INFO] [stdout] test trust::tests::detect_repo_id_local_repo_without_remote ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 876 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.33s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/rippy-9b35076791869cdd)
[INFO] [stderr]      Running tests/ast_invariants.rs (/opt/rustwide/target/debug/deps/ast_invariants-fae16abbcc028040)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test has_expansions_agrees_on_simple_inputs ... ok
[INFO] [stderr]      Running tests/catalog_runner.rs (/opt/rustwide/target/debug/deps/catalog_runner-b6804e3dc9b48a5f)
[INFO] [stdout] test substitution_body_is_structured_not_raw_word ... ok
[INFO] [stdout] test every_source_level_expansion_produces_expansion_node ... ok
[INFO] [stdout] test heredoc_in_cmdsub_produces_quoted_heredoc_node ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 227 tests
[INFO] [stdout] test catalog_curl_method_safety_danger_x_delete_1201 ... ok
[INFO] [stdout] test catalog_bash_c_inner_command_safe_git_status_0 ... ok
[INFO] [stdout] test catalog_curl_method_safety_danger_d_payload_1200 ... ok
[INFO] [stdout] test catalog_bash_c_inner_command_safe_echo_hello_world_1 ... ok
[INFO] [stdout] test catalog_and_second_command_safe_echo_done_800 ... ok
[INFO] [stdout] test catalog_and_second_command_danger_rm_rf_800 ... ok
[INFO] [stdout] test catalog_bash_c_inner_command_danger_rm_rf_0 ... ok
[INFO] [stdout] test catalog_curl_method_safety_safe_empty_1200 ... ok
[INFO] [stdout] test catalog_env_wrapper_inner_command_danger_rm_rf_200 ... ok
[INFO] [stdout] test catalog_docker_exec_inner_command_safe_cat_etc_hostname_101 ... ok
[INFO] [stdout] test catalog_find_exec_inner_command_danger_chmod_777_401 ... ok
[INFO] [stdout] test catalog_env_wrapper_inner_command_safe_echo_hello_201 ... ok
[INFO] [stdout] test catalog_env_wrapper_inner_command_safe_ls_200 ... ok
[INFO] [stdout] test catalog_find_exec_inner_command_safe_cat_401 ... ok
[INFO] [stdout] test catalog_docker_exec_inner_command_safe_ls_la_100 ... ok
[INFO] [stdout] test catalog_find_exec_inner_command_danger_rm_400 ... ok
[INFO] [stdout] test catalog_docker_exec_inner_command_danger_rm_rf_100 ... ok
[INFO] [stdout] test catalog_git_subcommand_safety_safe_diff_1102 ... ok
[INFO] [stdout] test catalog_git_subcommand_safety_safe_log_oneline_20_1101 ... ok
[INFO] [stdout] test catalog_find_exec_inner_command_safe_grep_todo_400 ... ok
[INFO] [stdout] test catalog_git_subcommand_safety_danger_push_origin_main_1100 ... ok
[INFO] [stdout] test catalog_injection_constructs_bash_c_0_1_rm_rf_11 ... ok
[INFO] [stdout] test catalog_git_subcommand_safety_safe_show_head_1103 ... ok
[INFO] [stdout] test catalog_injection_constructs_bash_c_bash_c_rm_rf_10 ... ok
[INFO] [stdout] test catalog_git_subcommand_safety_danger_reset_hard_head_1_1101 ... ok
[INFO] [stdout] test catalog_injection_constructs_cat_eof_bash_rm_rf_eof_17 ... ok
[INFO] [stdout] test catalog_injection_constructs_cat_eof_python_import_os_eof_18 ... ok
[INFO] [stdout] test catalog_git_subcommand_safety_safe_status_1100 ... ok
[INFO] [stdout] test catalog_injection_constructs_cat_eof_malicious_eof_16 ... ok
[INFO] [stdout] test catalog_injection_constructs_coproc_rm_rf_3 ... ok
[INFO] [stdout] test catalog_injection_constructs_echo_allow_rippy_22 ... ok
[INFO] [stdout] test catalog_injection_constructs_cat_eof_rm_rf_eof_19 ... ok
[INFO] [stdout] test catalog_injection_constructs_echo_data_etc_passwd_20 ... ok
[INFO] [stdout] test catalog_injection_constructs_eval_cmd_6 ... ok
[INFO] [stdout] test catalog_injection_constructs_eval_curl_http_evil_com_7 ... ok
[INFO] [stdout] test catalog_injection_constructs_echo_data_tmp_output_txt_21 ... ok
[INFO] [stdout] test catalog_injection_constructs_echo_rules_rippy_toml_23 ... ok
[INFO] [stdout] test catalog_injection_constructs_cat_eof_rm_rf_eof_15 ... ok
[INFO] [stdout] test catalog_injection_constructs_ls_la_rm_rf_2 ... ok
[INFO] [stdout] test catalog_injection_constructs_eval_rm_rf_5 ... ok
[INFO] [stdout] test catalog_injection_constructs_exec_rm_rf_8 ... ok
[INFO] [stdout] test catalog_injection_constructs_f_rm_rf_13 ... ok
[INFO] [stdout] test catalog_injection_constructs_echo_foo_dev_null_2_tmp_err_log_24 ... ok
[INFO] [stdout] test catalog_injection_constructs_f_echo_hello_f_14 ... ok
[INFO] [stdout] test catalog_injection_constructs_rm_rf_1 ... ok
[INFO] [stdout] test catalog_injection_constructs_f_rm_rf_f_12 ... ok
[INFO] [stdout] test catalog_injection_constructs_rm_rf_0 ... ok
[INFO] [stdout] test catalog_injection_expansion_cat_dir_file_22 ... ok
[INFO] [stdout] test catalog_injection_expansion_cmd_rm_rf_17 ... ok
[INFO] [stdout] test catalog_injection_expansion_cmd_arg1_arg2_14 ... ok
[INFO] [stdout] test catalog_injection_constructs_rm_rf_4 ... ok
[INFO] [stdout] test catalog_injection_expansion_cat_echo_etc_shadow_9 ... ok
[INFO] [stdout] test catalog_injection_expansion_cmd_arg1_15 ... ok
[INFO] [stdout] test catalog_injection_expansion_cat_echo_hello_12 ... ok
[INFO] [stdout] test catalog_injection_expansion_diff_sort_cat_file1_sort_file2_13 ... ok
[INFO] [stdout] test catalog_injection_expansion_diff_cat_etc_passwd_cat_etc_shadow_10 ... ok
[INFO] [stdout] test catalog_injection_expansion_echo_1_2000_24 ... ok
[INFO] [stdout] test catalog_injection_constructs_source_malicious_sh_9 ... ok
[INFO] [stdout] test catalog_injection_expansion_echo_rm_rf_1 ... ok
[INFO] [stdout] test catalog_injection_expansion_echo_prefix_whoami_suffix_5 ... ok
[INFO] [stdout] test catalog_injection_expansion_echo_1_0_27 ... ok
[INFO] [stdout] test catalog_injection_expansion_echo_1_100_1_100_25 ... ok
[INFO] [stdout] test catalog_injection_expansion_echo_ref_18 ... ok
[INFO] [stdout] test catalog_injection_expansion_echo_rm_rf_6 ... ok
[INFO] [stdout] test catalog_injection_expansion_echo_echo_echo_whoami_3 ... ok
[INFO] [stdout] test catalog_injection_expansion_echo_prefix_whoami_suffix_4 ... ok
[INFO] [stdout] test catalog_injection_expansion_echo_var_0_5_20 ... ok
[INFO] [stdout] test catalog_injection_expansion_echo_rm_rf_0 ... ok
[INFO] [stdout] test catalog_injection_expansion_echo_totally_unset_xyz_1234_16 ... ok
[INFO] [stdout] test catalog_injection_expansion_echo_var_prefix_21 ... ok
[INFO] [stdout] test catalog_injection_expansion_echo_x_1_26 ... ok
[INFO] [stdout] test catalog_injection_expansion_tee_rm_rf_11 ... ok
[INFO] [stdout] test catalog_injection_expansion_for_f_in_find_name_secret_do_cat_f_done_8 ... ok
[INFO] [stdout] test catalog_injection_expansion_echo_var_19 ... ok
[INFO] [stdout] test catalog_injection_expansion_var_dangerous_23 ... ok
[INFO] [stdout] test catalog_injection_expansion_grep_cat_etc_shadow_file_2 ... ok
[INFO] [stdout] test catalog_injection_expansion_var_rm_rf_echo_var_7 ... ok
[INFO] [stdout] test catalog_injection_handlers_curl_d_payload_https_api_example_com_10 ... ok
[INFO] [stdout] test catalog_injection_handlers_awk_system_rm_rf_19 ... ok
[INFO] [stdout] test catalog_injection_handlers_curl_t_etc_passwd_https_evil_com_13 ... ok
[INFO] [stdout] test catalog_injection_handlers_curl_o_tmp_out_https_example_com_14 ... ok
[INFO] [stdout] test catalog_injection_handlers_docker_compose_up_d_9 ... ok
[INFO] [stdout] test catalog_injection_handlers_docker_exec_container_rm_rf_7 ... ok
[INFO] [stdout] test catalog_injection_handlers_curl_x_delete_https_api_example_com_12 ... ok
[INFO] [stdout] test catalog_injection_handlers_find_name_tmp_delete_16 ... ok
[INFO] [stdout] test catalog_injection_handlers_env_foo_bar_rm_rf_26 ... ok
[INFO] [stdout] test catalog_injection_handlers_docker_run_rm_alpine_sh_6 ... ok
[INFO] [stdout] test catalog_injection_handlers_find_name_tmp_exec_rm_15 ... ok
[INFO] [stdout] test catalog_injection_handlers_git_push_origin_main_0 ... ok
[INFO] [stdout] test catalog_injection_handlers_git_rebase_main_5 ... ok
[INFO] [stdout] test catalog_injection_handlers_git_branch_d_feature_2 ... ok
[INFO] [stdout] test catalog_injection_handlers_git_reset_hard_head_1_3 ... ok
[INFO] [stdout] test catalog_injection_handlers_perl_e_system_rm_rf_24 ... ok
[INFO] [stdout] test catalog_injection_handlers_python_c_import_os_os_system_rm_20 ... ok
[INFO] [stdout] test catalog_injection_handlers_node_e_require_child_process_execsync_rm_22 ... ok
[INFO] [stdout] test catalog_injection_handlers_curl_x_put_https_api_example_com_11 ... ok
[INFO] [stdout] test catalog_injection_handlers_find_xargs_rm_25 ... ok
[INFO] [stdout] test catalog_injection_handlers_sed_e_date_file_txt_18 ... ok
[INFO] [stdout] test catalog_injection_handlers_sed_i_s_old_new_g_file_txt_17 ... ok
[INFO] [stdout] test catalog_injection_handlers_git_push_force_origin_main_1 ... ok
[INFO] [stdout] test catalog_injection_handlers_docker_run_v_mnt_alpine_cat_mnt_etc_shad_8 ... ok
[INFO] [stdout] test catalog_injection_operators_cat_script_sh_bash_15 ... ok
[INFO] [stdout] test catalog_injection_handlers_git_clean_fd_4 ... ok
[INFO] [stdout] test catalog_injection_handlers_python_c_import_subprocess_subprocess_ru_21 ... ok
[INFO] [stdout] test catalog_injection_operators_echo_a_echo_b_rm_rf_1 ... ok
[INFO] [stdout] test catalog_injection_operators_echo_import_os_python_10 ... ok
[INFO] [stdout] test catalog_injection_operators_echo_rm_rf_sh_9 ... ok
[INFO] [stdout] test catalog_injection_operators_echo_system_rm_perl_11 ... ok
[INFO] [stdout] test catalog_injection_handlers_ruby_e_system_rm_rf_23 ... ok
[INFO] [stdout] test catalog_injection_operators_curl_http_evil_com_bash_14 ... ok
[INFO] [stdout] test catalog_injection_operators_false_rm_rf_5 ... ok
[INFO] [stdout] test catalog_injection_operators_echo_system_rm_ruby_12 ... ok
[INFO] [stdout] test catalog_injection_operators_ls_la_rm_rf_3 ... ok
[INFO] [stdout] test catalog_injection_operators_rm_rf_dd_if_dev_zero_of_dev_sda_2 ... ok
[INFO] [stdout] test catalog_injection_operators_echo_rm_rf_bash_8 ... ok
[INFO] [stdout] test catalog_injection_operators_echo_process_exit_1_node_13 ... ok
[INFO] [stdout] test catalog_injection_operators_echo_a_echo_b_rm_rf_4 ... ok
[INFO] [stdout] test catalog_injection_operators_echo_safe_rm_rf_0 ... ok
[INFO] [stdout] test catalog_nice_wrapper_safe_ls_la_600 ... ok
[INFO] [stdout] test catalog_pipeline_last_command_safe_head_20_901 ... ok
[INFO] [stdout] test catalog_nice_wrapper_danger_rm_rf_600 ... ok
[INFO] [stdout] test catalog_injection_operators_echo_a_echo_b_rm_rf_6 ... ok
[INFO] [stdout] test catalog_python_c_inline_safety_safe_print_hello_1300 ... ok
[INFO] [stdout] test catalog_safe_handlers_awk_print_1_file_txt_23 ... ok
[INFO] [stdout] test catalog_python_c_inline_safety_danger_import_os_os_system_1300 ... ok
[INFO] [stdout] test catalog_redirect_target_safety_safe_dev_null_1400 ... ok
[INFO] [stdout] test catalog_pipeline_last_command_safe_uniq_900 ... ok
[INFO] [stdout] test catalog_injection_operators_unknown_command_7 ... ok
[INFO] [stdout] test catalog_safe_handlers_cargo_doc_no_deps_13 ... ok
[INFO] [stdout] test catalog_safe_handlers_cargo_build_release_9 ... ok
[INFO] [stdout] test catalog_rippy_config_self_protection_safe_rippy_1500 ... ok
[INFO] [stdout] test catalog_pipeline_last_command_danger_bash_900 ... ok
[INFO] [stdout] test catalog_safe_handlers_cargo_fmt_check_11 ... ok
[INFO] [stdout] test catalog_safe_handlers_cargo_check_14 ... ok
[INFO] [stdout] test catalog_safe_handlers_cargo_bench_12 ... ok
[INFO] [stdout] test catalog_redirect_target_safety_danger_tmp_output_txt_1400 ... ok
[INFO] [stdout] test catalog_safe_handlers_docker_logs_container_17 ... ok
[INFO] [stdout] test catalog_safe_handlers_env_a_1_b_2_echo_hello_28 ... ok
[INFO] [stdout] test catalog_safe_handlers_curl_https_api_example_com_19 ... ok
[INFO] [stdout] test catalog_safe_handlers_docker_inspect_container_18 ... ok
[INFO] [stdout] test catalog_safe_handlers_cargo_test_all_8 ... ok
[INFO] [stdout] test catalog_safe_handlers_cargo_clippy_d_warnings_10 ... ok
[INFO] [stdout] test catalog_safe_handlers_docker_images_15 ... ok
[INFO] [stdout] test catalog_safe_handlers_docker_version_16 ... ok
[INFO] [stdout] test catalog_safe_handlers_fd_e_rs_24 ... ok
[INFO] [stdout] test catalog_safe_handlers_git_blame_src_main_rs_3 ... ok
[INFO] [stdout] test catalog_safe_handlers_env_foo_bar_ls_27 ... ok
[INFO] [stdout] test catalog_safe_handlers_git_branch_4 ... ok
[INFO] [stdout] test catalog_safe_handlers_git_stash_list_5 ... ok
[INFO] [stdout] test catalog_safe_handlers_git_tag_list_7 ... ok
[INFO] [stdout] test catalog_safe_handlers_find_name_rs_type_f_20 ... ok
[INFO] [stdout] test catalog_safe_handlers_find_name_rs_exec_grep_todo_21 ... ok
[INFO] [stdout] test catalog_safe_handlers_git_log_oneline_20_0 ... ok
[INFO] [stdout] test catalog_safe_handlers_git_remote_6 ... ok
[INFO] [stdout] test catalog_safe_handlers_python_c_print_hello_25 ... ok
[INFO] [stdout] test catalog_safe_handlers_git_diff_cached_1 ... ok
[INFO] [stdout] test catalog_safe_handlers_git_show_head_2 ... ok
[INFO] [stdout] test catalog_safe_handlers_sed_s_old_new_g_file_txt_22 ... ok
[INFO] [stdout] test catalog_safe_pipelines_cat_data_json_jq_items_3 ... ok
[INFO] [stdout] test catalog_safe_handlers_xargs_n_5_p_4_grep_pattern_26 ... ok
[INFO] [stdout] test catalog_safe_pipelines_echo_a_echo_b_echo_c_17 ... ok
[INFO] [stdout] test catalog_safe_pipelines_cat_file_sort_uniq_c_sort_rn_8 ... ok
[INFO] [stdout] test catalog_safe_pipelines_echo_a_echo_b_18 ... ok
[INFO] [stdout] test catalog_safe_pipelines_cargo_fmt_cargo_clippy_cargo_test_10 ... ok
[INFO] [stdout] test catalog_safe_pipelines_ls_la_echo_done_12 ... ok
[INFO] [stdout] test catalog_safe_pipelines_git_status_git_diff_11 ... ok
[INFO] [stdout] test catalog_safe_pipelines_git_log_oneline_grep_fix_6 ... ok
[INFO] [stdout] test catalog_safe_pipelines_find_name_rs_grep_test_2 ... ok
[INFO] [stdout] test catalog_safe_pipelines_nice_ls_la_16 ... ok
[INFO] [stdout] test catalog_safe_pipelines_nice_git_status_15 ... ok
[INFO] [stdout] test catalog_safe_pipelines_echo_hello_tr_a_z_a_z_4 ... ok
[INFO] [stdout] test catalog_safe_pipelines_diff_file1_file2_head_20_7 ... ok
[INFO] [stdout] test catalog_safe_pipelines_ps_aux_grep_python_5 ... ok
[INFO] [stdout] test catalog_safe_pipelines_time_git_log_oneline_5_19 ... ok
[INFO] [stdout] test catalog_safe_pipelines_ls_nonexistent_true_13 ... ok
[INFO] [stdout] test catalog_safe_pipelines_ls_la_grep_rs_wc_l_1 ... ok
[INFO] [stdout] test catalog_safe_pipelines_cat_file_grep_pattern_sort_uniq_0 ... ok
[INFO] [stdout] test catalog_safe_quoting_docker_help_9 ... ok
[INFO] [stdout] test catalog_safe_pipelines_echo_hello_base64_9 ... ok
[INFO] [stdout] test catalog_safe_pipelines_time_ls_la_14 ... ok
[INFO] [stdout] test catalog_safe_quoting_echo_1_1_19 ... ok
[INFO] [stdout] test catalog_safe_quoting_echo_h_llo_w_rld_23 ... ok
[INFO] [stdout] test catalog_safe_quoting_echo_a_b_c_14 ... ok
[INFO] [stdout] test catalog_safe_quoting_echo_foo_dev_null_0 ... ok
[INFO] [stdout] test catalog_safe_quoting_echo_hello_nworld_17 ... ok
[INFO] [stdout] test catalog_safe_quoting_echo_1_5_15 ... ok
[INFO] [stdout] test catalog_safe_quoting_echo_a_z_21 ... ok
[INFO] [stdout] test catalog_safe_quoting_echo_foo_dev_null_2_1_2 ... ok
[INFO] [stdout] test catalog_safe_quoting_curl_version_10 ... ok
[INFO] [stdout] test catalog_safe_quoting_git_help_12 ... ok
[INFO] [stdout] test catalog_safe_quoting_ls_2_dev_null_1 ... ok
[INFO] [stdout] test catalog_safe_quoting_echo_2_3_4_20 ... ok
[INFO] [stdout] test catalog_safe_quoting_echo_rm_rf_6 ... ok
[INFO] [stdout] test catalog_safe_quoting_nohup_echo_hello_25 ... ok
[INFO] [stdout] test catalog_safe_quoting_ls_la_rm_rf_5 ... ok
[INFO] [stdout] test catalog_safe_quoting_npm_help_13 ... ok
[INFO] [stdout] test catalog_safe_quoting_echo_hello_world_22 ... ok
[INFO] [stdout] test catalog_safe_quoting_python_version_11 ... ok
[INFO] [stdout] test catalog_safe_quoting_strace_ls_24 ... ok
[INFO] [stdout] test catalog_safe_quoting_grep_r_rm_rf_7 ... ok
[INFO] [stdout] test catalog_sed_filter_vs_inplace_danger_i_s_old_new_g_1000 ... ok
[INFO] [stdout] test catalog_safe_quoting_tar_help_8 ... ok
[INFO] [stdout] test catalog_safe_quoting_echo_rm_rf_3 ... ok
[INFO] [stdout] test catalog_sed_filter_vs_inplace_safe_s_old_new_g_1000 ... ok
[INFO] [stdout] test catalog_simple_safe_date_y_m_d_10 ... ok
[INFO] [stdout] test catalog_safe_quoting_ls_file_txt_md_rs_16 ... ok
[INFO] [stdout] test catalog_semicolon_second_command_safe_echo_done_700 ... ok
[INFO] [stdout] test catalog_semicolon_second_command_safe_ls_la_701 ... ok
[INFO] [stdout] test catalog_simple_safe_echo_hello_world_8 ... ok
[INFO] [stdout] test catalog_safe_quoting_echo_rm_rf_4 ... ok
[INFO] [stdout] test catalog_semicolon_second_command_danger_rm_rf_700 ... ok
[INFO] [stdout] test catalog_simple_safe_ls_la_1 ... ok
[INFO] [stdout] test catalog_simple_safe_head_20_file_txt_4 ... ok
[INFO] [stdout] test catalog_simple_safe_grep_r_todo_3 ... ok
[INFO] [stdout] test catalog_simple_safe_jq_items_0_data_json_9 ... ok
[INFO] [stdout] test catalog_simple_safe_pwd_11 ... ok
[INFO] [stdout] test catalog_simple_safe_ls_0 ... ok
[INFO] [stdout] test catalog_time_wrapper_danger_rm_rf_500 ... ok
[INFO] [stdout] test catalog_time_wrapper_safe_ls_la_500 ... ok
[INFO] [stdout] test catalog_xargs_inner_command_safe_cat_300 ... ok
[INFO] [stdout] test catalog_xargs_inner_command_danger_rm_rf_300 ... ok
[INFO] [stdout] test catalog_xargs_inner_command_safe_grep_pattern_301 ... ok
[INFO] [stdout] test catalog_safe_quoting_echo_x41_x42_x43_18 ... ok
[INFO] [stdout] test catalog_simple_safe_tail_f_file_log_5 ... ok
[INFO] [stdout] test catalog_simple_safe_wc_l_file_txt_6 ... ok
[INFO] [stdout] test catalog_simple_safe_cat_tmp_file_txt_2 ... ok
[INFO] [stderr]      Running tests/commands.rs (/opt/rustwide/target/debug/deps/commands-ad7623122c1321b7)
[INFO] [stdout] test catalog_simple_safe_whoami_7 ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 227 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.28s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 22 tests
[INFO] [stdout] test allow_command_creates_toml_rule ... ok
[INFO] [stdout] test ansi_c_quote_in_echo_resolves_to_allow ... ok
[INFO] [stdout] test brace_expansion_in_ls_resolves_to_allow ... ok
[INFO] [stdout] test deny_command_with_message ... ok
[INFO] [stdout] test bash_c_recurses ... ok
[INFO] [stdout] test arithmetic_expansion_in_echo_resolves_to_allow ... ok
[INFO] [stdout] test ask_command_creates_toml_rule ... ok
[INFO] [stdout] test allow_global_writes_to_home_config ... ok
[INFO] [stdout] test redirect_to_dev_null_safe ... ok
[INFO] [stdout] test hook_json_reason_contains_resolved_annotation ... ok
[INFO] [stdout] test structured_rule_denies_force_push ... ok
[INFO] [stdout] test plain_echo_still_allows ... ok
[INFO] [stdout] test git_with_quoted_subcommand_resolves_via_handler ... ok
[INFO] [stdout] test redirect_to_file_asks ... ok
[INFO] [stdout] test heredoc_safe_allows ... ok
[INFO] [stdout] test suggest_from_command_output ... ok
[INFO] [stdout] test param_expansion_in_echo_resolves_to_allow ... ok
[INFO] [stdout] test structured_rule_with_flag_position_independence ... ok
[INFO] [stdout] test wrapper_time_git_status ... ok
[INFO] [stdout] test suggest_from_db_json ... ok
[INFO] [stdout] test unset_variable_asks_with_diagnostic ... ok
[INFO] [stdout] test structured_rule_allows_safe_subcommands ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 22 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.27s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/config_rules.rs (/opt/rustwide/target/debug/deps/config_rules-b3e3bf6987f16f67)
[INFO] [stdout] 
[INFO] [stdout] running 15 tests
[INFO] [stdout] test recommended_config_allows_ansible_doc ... ok
[INFO] [stdout] test config_deny_overrides ... ok
[INFO] [stdout] test conditional_rule_file_exists_skipped_when_missing ... ok
[INFO] [stdout] test recommended_config_asks_defaults_write ... ok
[INFO] [stdout] test recommended_config_asks_dd ... ok
[INFO] [stdout] test recommended_config_asks_kill ... ok
[INFO] [stdout] test recommended_config_allows_xattr_bare ... ok
[INFO] [stdout] test config_allow_overrides ... ok
[INFO] [stdout] test recommended_config_exact_match_dmesg_allows_bare ... ok
[INFO] [stdout] test recommended_config_asks_xattr_write ... ok
[INFO] [stdout] test recommended_config_allows_diskutil_list ... ok
[INFO] [stdout] test conditional_rule_branch_not_main ... ok
[INFO] [stdout] test conditional_rule_file_exists_applies_when_present ... ok
[INFO] [stdout] test recommended_config_allows_defaults_read ... ok
[INFO] [stdout] test recommended_config_exact_match_dmesg_asks_clear ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.20s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/corner_cases.rs (/opt/rustwide/target/debug/deps/corner_cases-c360301cc0a4733a)
[INFO] [stdout] 
[INFO] [stdout] running 53 tests
[INFO] [stdout] test ansi_c_quoting_safe_allows ... ok
[INFO] [stdout] test brace_expansion_safe_allows ... ok
[INFO] [stdout] test case_pattern_paren_in_cmdsub_asks ... ok
[INFO] [stdout] test backtick_substitution_in_simple_safe_asks ... ok
[INFO] [stdout] test arithmetic_expansion_safe_allows ... ok
[INFO] [stdout] test cmdsub_echo_literal_still_asks ... ok
[INFO] [stdout] test backtick_echo_literal_still_asks ... ok
[INFO] [stdout] test deeply_nested_command_substitution_asks ... ok
[INFO] [stdout] test cargo_compound_quality_gate_allows ... ok
[INFO] [stdout] test backtick_with_safe_inner_command_asks ... ok
[INFO] [stdout] test comment_after_safe_command_allows ... ok
[INFO] [stdout] test echo_dangerous_string_allows ... ok
[INFO] [stdout] test backtick_in_other_simple_safe_commands_asks ... ok
[INFO] [stdout] test dollar_paren_substitution_in_simple_safe_asks ... ok
[INFO] [stdout] test escaped_dollar_sign_not_expansion_allows ... ok
[INFO] [stdout] test find_exec_rm_asks ... ok
[INFO] [stdout] test eval_with_command_substitution_asks ... ok
[INFO] [stdout] test curl_get_allows ... ok
[INFO] [stdout] test extglob_in_cmdsub_asks ... ok
[INFO] [stdout] test backtick_with_dangerous_heredoc_body_asks ... ok
[INFO] [stdout] test heredoc_piped_to_bash_asks ... ok
[INFO] [stdout] test heredoc_indented_tab_stripping_allows ... ok
[INFO] [stdout] test git_log_with_command_sub_asks ... ok
[INFO] [stdout] test here_string_safe_content_allows ... ok
[INFO] [stdout] test grep_for_dangerous_pattern_allows ... ok
[INFO] [stdout] test logical_and_with_dangerous_command_asks ... ok
[INFO] [stdout] test heredoc_unquoted_with_variable_expansion_asks ... ok
[INFO] [stdout] test heredoc_with_dangerous_unmatched_paren_in_cmdsub_asks ... ok
[INFO] [stdout] test logical_or_with_dangerous_command_asks ... ok
[INFO] [stdout] test heredoc_with_unmatched_paren_in_cmdsub_asks ... ok
[INFO] [stdout] test nested_cmdsub_with_heredoc_inner_asks ... ok
[INFO] [stdout] test pipe_to_bash_asks ... ok
[INFO] [stdout] test mixed_quoting_with_command_sub_asks ... ok
[INFO] [stdout] test proc_sub_write_with_dangerous_body_asks ... ok
[INFO] [stdout] test proc_sub_with_heredoc_body_asks ... ok
[INFO] [stdout] test process_substitution_asks ... ok
[INFO] [stdout] test empty_command_does_not_panic ... ok
[INFO] [stdout] test heredoc_quoted_delimiter_with_dangerous_content_allows ... ok
[INFO] [stdout] test safe_compound_command_allows ... ok
[INFO] [stdout] test safe_heredoc_command_substitution_allows ... ok
[INFO] [stdout] test sed_inplace_edit_asks ... ok
[INFO] [stdout] test quoted_heredoc_with_expansion_syntax_allows ... ok
[INFO] [stdout] test sed_filter_allows ... ok
[INFO] [stdout] test heredoc_unquoted_with_command_substitution_asks ... ok
[INFO] [stdout] test semicolon_injection_asks ... ok
[INFO] [stdout] test nested_bash_c_asks ... ok
[INFO] [stdout] test variable_in_command_position_asks ... ok
[INFO] [stdout] test unicode_in_command_allows ... ok
[INFO] [stdout] test unquoted_heredoc_substitution_with_expansion_asks ... ok
[INFO] [stdout] test piped_heredoc_in_substitution_asks ... ok
[INFO] [stdout] test single_quoted_expansion_in_echo_allows ... ok
[INFO] [stdout] test subshell_with_dangerous_command_asks ... ok
[INFO] [stderr]      Running tests/custom_packages.rs (/opt/rustwide/target/debug/deps/custom_packages-943ef79c7ed7b5ae)
[INFO] [stdout] test unsafe_command_in_heredoc_substitution_asks ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 53 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.40s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 12 tests
[INFO] [stdout] test profile_list_json_includes_custom_flag ... ok
[INFO] [stdout] test profile_show_custom_package ... ok
[INFO] [stdout] test profile_list_includes_custom_package ... ok
[INFO] [stdout] test profile_list_with_malformed_custom_still_shows_valid ... ok
[INFO] [stdout] test profile_show_malformed_custom_errors_with_path ... ok
[INFO] [stdout] test profile_show_unknown_package_errors ... ok
[INFO] [stdout] test profile_show_custom_overrides_git_style ... ok
[INFO] [stdout] test config_with_custom_package_inherits_develop_allowances ... ok
[INFO] [stdout] test builtin_takes_priority_over_custom_with_same_name ... ok
[INFO] [stdout] test profile_show_custom_renders_inherited_rules ... ok
[INFO] [stdout] test config_with_custom_package_blocks_command ... ok
[INFO] [stdout] test profile_show_custom_inherits_git_style_from_base ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.19s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/features.rs (/opt/rustwide/target/debug/deps/features-42ee45932fc1844c)
[INFO] [stdout] 
[INFO] [stdout] running 26 tests
[INFO] [stdout] test debug_shows_deny_with_reason ... ok
[INFO] [stdout] test discover_without_args_errors ... ok
[INFO] [stdout] test debug_json_output_valid ... ok
[INFO] [stdout] test init_invalid_package_fails ... ok
[INFO] [stdout] test init_refuses_existing ... ok
[INFO] [stdout] test init_stdout_prints_stdlib ... ok
[INFO] [stdout] test init_creates_config_file ... ok
[INFO] [stdout] test debug_json_includes_resolved_field ... ok
[INFO] [stdout] test init_stdout_still_works ... ok
[INFO] [stdout] test debug_unknown_command_shows_ask ... ok
[INFO] [stdout] test debug_shows_config_source_override ... ok
[INFO] [stdout] test debug_shows_allow_verdict ... ok
[INFO] [stdout] test init_with_package_flag ... ok
[INFO] [stdout] test inspect_trace_safe_command ... ok
[INFO] [stdout] test inspect_list_with_config ... ok
[INFO] [stdout] test debug_shows_resolved_command_for_arithmetic ... ok
[INFO] [stdout] test inspect_list_json_output ... ok
[INFO] [stdout] test stdlib_cargo_test_allowed ... ok
[INFO] [stdout] test suggest_from_session_file ... ok
[INFO] [stdout] test inspect_json_output ... ok
[INFO] [stdout] test stdlib_cargo_run_asks ... ok
[INFO] [stdout] test discover_finds_curl_flags ... ok
[INFO] [stdout] test stdlib_rm_asks ... ok
[INFO] [stdout] test inspect_trace_with_config_rule ... ok
[INFO] [stdout] test stats_json_from_populated_db ... ok
[INFO] [stdout] test stdlib_sudo_asks ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 26 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.21s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/file_access.rs (/opt/rustwide/target/debug/deps/file_access-cac3b2c9b5e1e295)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test file_read_passthrough_no_rules ... ok
[INFO] [stdout] test file_read_denied_by_rule ... ok
[INFO] [stdout] test edit_tool_matched_by_rule ... ok
[INFO] [stdout] test file_read_allowed_by_explicit_rule ... ok
[INFO] [stdout] test file_write_denied_by_rule ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/file_reading.rs (/opt/rustwide/target/debug/deps/file_reading-c38d754e8f2d5367)
[INFO] [stdout] 
[INFO] [stdout] running 10 tests
[INFO] [stdout] test awk_f_safe_file_allows ... ok
[INFO] [stdout] test awk_f_system_file_asks ... ok
[INFO] [stdout] test bash_script_safe_file_allows ... ok
[INFO] [stdout] test bash_script_dangerous_file_asks ... ok
[INFO] [stdout] test psql_f_write_file_asks ... ok
[INFO] [stdout] test python_script_dangerous_file_asks ... ok
[INFO] [stdout] test python_script_safe_file_allows ... ok
[INFO] [stdout] test gh_api_input_mutation_file_asks ... ok
[INFO] [stdout] test psql_f_readonly_file_allows ... ok
[INFO] [stdout] test gh_api_input_query_file_allows ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/handlers.rs (/opt/rustwide/target/debug/deps/handlers-d5164ab469fae6e3)
[INFO] [stdout] 
[INFO] [stdout] running 30 tests
[INFO] [stdout] test ansible_lint_allows ... ok
[INFO] [stdout] test ansible_vault_encrypt_asks ... ok
[INFO] [stdout] test ansible_doc_allows ... ok
[INFO] [stdout] test ansible_vault_view_allows ... ok
[INFO] [stdout] test ansible_config_dump_allows ... ok
[INFO] [stdout] test ansible_galaxy_install_asks ... ok
[INFO] [stdout] test ansible_inventory_list_allows ... ok
[INFO] [stdout] test ansible_playbook_check_allows ... ok
[INFO] [stdout] test ansible_playbook_asks ... ok
[INFO] [stdout] test ansible_galaxy_list_allows ... ok
[INFO] [stdout] test cargo_build_allows ... ok
[INFO] [stdout] test cargo_deny_allows ... ok
[INFO] [stdout] test bash_c_without_positional_args_recurses ... ok
[INFO] [stdout] test cargo_add_asks ... ok
[INFO] [stdout] test bash_c_with_positional_args_asks ... ok
[INFO] [stdout] test cargo_audit_allows ... ok
[INFO] [stdout] test cargo_run_asks ... ok
[INFO] [stdout] test cargo_bench_allows ... ok
[INFO] [stdout] test env_inner_command_analyzed ... ok
[INFO] [stdout] test cargo_publish_asks ... ok
[INFO] [stdout] test fd_exec_batch_grep_allows ... ok
[INFO] [stdout] test fd_exec_rm_asks ... ok
[INFO] [stdout] test cargo_fix_asks ... ok
[INFO] [stdout] test fd_search_allows ... ok
[INFO] [stdout] test xargs_with_value_flags_finds_inner_command ... ok
[INFO] [stdout] test cargo_nextest_allows ... ok
[INFO] [stdout] test docker_exec_ls_allows ... ok
[INFO] [stdout] test cargo_rm_asks ... ok
[INFO] [stdout] test cargo_test_allows ... ok
[INFO] [stdout] test find_exec_grep_allows ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.23s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/infrastructure.rs (/opt/rustwide/target/debug/deps/infrastructure-b4c68f5a5ab3c8be)
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test malformed_json_returns_error ... ok
[INFO] [stdout] test mcp_tool_asks_by_default ... ok
[INFO] [stdout] test verbose_traces_to_stderr ... ok
[INFO] [stdout] test verbose_handler_trace ... ok
[INFO] [stdout] test oversized_input_returns_error ... ok
[INFO] [stderr]      Running tests/modes.rs (/opt/rustwide/target/debug/deps/modes-bfab46a387cd9692)
[INFO] [stdout] test log_file_receives_entry ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 12 tests
[INFO] [stdout] test codex_mode_dangerous_command ... ok
[INFO] [stdout] test claude_allow_safe_command ... ok
[INFO] [stdout] test claude_git_push_asks ... ok
[INFO] [stdout] test empty_command_in_payload ... ok
[INFO] [stdout] test claude_pipeline_safe ... ok
[INFO] [stdout] test claude_ask_dangerous_command ... ok
[INFO] [stdout] test dippy_config_file_loaded ... ok
[INFO] [stdout] test codex_mode_safe_command ... ok
[INFO] [stdout] test cursor_allow_safe ... ok
[INFO] [stdout] test gemini_deny_dangerous ... ok
[INFO] [stderr]      Running tests/proptest_robustness.rs (/opt/rustwide/target/debug/deps/proptest_robustness-807b636e8450dd0e)
[INFO] [stdout] test post_tool_use_returns_allow ... ok
[INFO] [stdout] test gemini_allow_safe ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 8 tests
[INFO] [stdout] test nested_substitutions_no_panic ... ok
[INFO] [stdout] test escaped_backtick_no_panic ... ok
[INFO] [stdout] test cmdsub_with_heredoc_no_panic ... ok
[INFO] [stdout] test pattern_matches_no_panic_and_literal_self_match ... ok
[INFO] [stdout] test payload_parse_no_panic_on_random_bytes ... ok
[INFO] [stdout] test payload_parse_no_panic_on_strings ... ok
[INFO] [stdout] test parser_and_analyzer_no_panic ... ok
[INFO] [stdout] test config_load_from_str_no_panic ... ok
[INFO] [stderr]      Running tests/proptest_security.rs (/opt/rustwide/target/debug/deps/proptest_security-0ac72c33129ccf30)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.59s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test safe_command_passthrough ... ok
[INFO] [stdout] test wrapper_safe_passthrough ... ok
[INFO] [stdout] test wrapper_dangerous_detected ... ok
[INFO] [stdout] test injection_detection ... ok
[INFO] [stdout] test contrast_safe_inner ... ok
[INFO] [stdout] test contrast_dangerous_inner ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.74s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/safety.rs (/opt/rustwide/target/debug/deps/safety-c8db219a4d54e2a5)
[INFO] [stdout] 
[INFO] [stdout] running 12 tests
[INFO] [stdout] test self_protect_allows_read_of_rippy_config ... ok
[INFO] [stdout] test python_c_import_json_allows ... ok
[INFO] [stdout] test python_c_print_allows ... ok
[INFO] [stdout] test python_c_import_os_asks ... ok
[INFO] [stdout] test cc_allow_rule_auto_approves ... ok
[INFO] [stdout] test self_protect_denies_write_to_rippy_config ... ok
[INFO] [stdout] test cc_ask_rule_prompts ... ok
[INFO] [stdout] test self_protect_disabled_allows_write ... ok
[INFO] [stdout] test cc_deny_rule_blocks ... ok
[INFO] [stdout] test python_script_asks ... ok
[INFO] [stdout] test self_protect_denies_edit_to_rippy_toml ... ok
[INFO] [stdout] test self_protect_denies_redirect_to_rippy ... ok
[INFO] [stderr]      Running tests/toml_config.rs (/opt/rustwide/target/debug/deps/toml_config-392f7f263a2a6859)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 11 tests
[INFO] [stdout] test example_autopilot_toml_parses ... ok
[INFO] [stdout] test example_review_toml_parses ... ok
[INFO] [stdout] test example_recommended_toml_parses ... ok
[INFO] [stdout] test migrate_stdout_produces_valid_toml ... ok
[INFO] [stdout] test config_weakening_verdict_annotated ... ok
[INFO] [stdout] test toml_config_denies_with_message ... ok
[INFO] [stdout] test toml_config_takes_precedence_over_legacy ... ok
[INFO] [stdout] test toml_config_allows_command ... ok
[INFO] [stdout] test toml_config_via_config_flag ... ok
[INFO] [stdout] test config_tightening_verdict_normal ... ok
[INFO] [stdout] test config_no_override_normal_reason ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/trust.rs (/opt/rustwide/target/debug/deps/trust-5f19fb568dc8f0a4)
[INFO] [stdout] 
[INFO] [stdout] running 14 tests
[INFO] [stdout] test trust_command_list_empty ... ok
[INFO] [stdout] test trust_guard_does_not_grant_trust_to_untrusted_file ... ok
[INFO] [stdout] test trust_guard_preserves_trust_after_allow ... ok
[INFO] [stdout] test trust_command_yes_trusts_without_stdin ... ok
[INFO] [stdout] test self_protect_blocks_trust_db_write ... ok
[INFO] [stdout] test trust_command_revoke ... ok
[INFO] [stdout] test trust_command_status_untrusted ... ok
[INFO] [stdout] test trust_command_status_when_trusted ... ok
[INFO] [stdout] test trust_modified_config_is_ignored ... ok
[INFO] [stdout] test trust_global_setting_bypasses_check ... ok
[INFO] [stdout] test trust_trusted_project_config_applied ... ok
[INFO] [stdout] test trust_untrusted_project_config_ignored ... ok
[INFO] [stdout] test trust_untrusted_config_emits_stderr_warning ... ok
[INFO] [stdout] test trust_repo_level_survives_config_change ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests rippy_cli
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "81ffef7f20d6b2285ef9942da48841043c4ed29fac2370327e56f21b3981c105", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "81ffef7f20d6b2285ef9942da48841043c4ed29fac2370327e56f21b3981c105", kill_on_drop: false }`
[INFO] [stdout] 81ffef7f20d6b2285ef9942da48841043c4ed29fac2370327e56f21b3981c105
