[INFO] cloning repository https://github.com/thePermission/RustSecurityHook
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/thePermission/RustSecurityHook" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FthePermission%2FRustSecurityHook", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FthePermission%2FRustSecurityHook'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c1aae4795d5f70cafa9db1a41234eadca8c938bc
[INFO] testing thePermission/RustSecurityHook against 1.98.0-beta.1 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FthePermission%2FRustSecurityHook" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/thePermission/RustSecurityHook
[INFO] finished tweaking git repo https://github.com/thePermission/RustSecurityHook
[INFO] tweaked toml for git repo https://github.com/thePermission/RustSecurityHook written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/thePermission/RustSecurityHook on toolchain 1.98.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/thePermission/RustSecurityHook already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 197f47c60ee4f13c000571516aee4be456b01aef06c079af0fbd48f166281e4b
[INFO] running `Command { std: "docker" "start" "197f47c60ee4f13c000571516aee4be456b01aef06c079af0fbd48f166281e4b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "197f47c60ee4f13c000571516aee4be456b01aef06c079af0fbd48f166281e4b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "197f47c60ee4f13c000571516aee4be456b01aef06c079af0fbd48f166281e4b" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "197f47c60ee4f13c000571516aee4be456b01aef06c079af0fbd48f166281e4b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "197f47c60ee4f13c000571516aee4be456b01aef06c079af0fbd48f166281e4b" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling shell-words v1.1.1
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling clap_complete v4.6.5
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling rsh v0.13.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 11.60s
[INFO] running `Command { std: "docker" "inspect" "197f47c60ee4f13c000571516aee4be456b01aef06c079af0fbd48f166281e4b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "197f47c60ee4f13c000571516aee4be456b01aef06c079af0fbd48f166281e4b" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling plotters-backend v0.3.7
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling ciborium-io v0.2.2
[INFO] [stderr]    Compiling itertools v0.10.5
[INFO] [stderr]    Compiling zerocopy-derive v0.8.48
[INFO] [stderr]    Compiling cast v0.3.0
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling is-terminal v0.4.17
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling oorandom v11.1.5
[INFO] [stderr]    Compiling anes v0.1.6
[INFO] [stderr]    Compiling plotters-svg v0.3.7
[INFO] [stderr]    Compiling plotters v0.3.7
[INFO] [stderr]    Compiling criterion-plot v0.5.0
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling rsh v0.13.1 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling criterion v0.5.1
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 24.41s
[INFO] running `Command { std: "docker" "inspect" "197f47c60ee4f13c000571516aee4be456b01aef06c079af0fbd48f166281e4b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "197f47c60ee4f13c000571516aee4be456b01aef06c079af0fbd48f166281e4b" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.18s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rsh-10878427da0dd9d9)
[INFO] [stdout] 
[INFO] [stdout] running 309 tests
[INFO] [stdout] test aliases::tests::detect_in_path_does_not_reliably_find_hardlink_alias ... ok
[INFO] [stdout] test aliases::tests::detect_in_path_finds_symlink_alias ... ok
[INFO] [stdout] test blacklist::tests::allows_unrelated_commands ... ok
[INFO] [stdout] test blacklist::tests::bin_groups_cover_all_rules ... ok
[INFO] [stdout] test blacklist::tests::blocks_aws_destructive_in_subprocess_list ... ok
[INFO] [stdout] test blacklist::tests::allows_other_rsh_subcommands ... ok
[INFO] [stdout] test blacklist::tests::allows_commands_not_referencing_flag_files ... ok
[INFO] [stdout] test blacklist::tests::blocks_compose_down ... ok
[INFO] [stdout] test blacklist::tests::blocks_apply_remote ... ok
[INFO] [stdout] test blacklist::tests::blocks_cargo_yank ... ok
[INFO] [stdout] test blacklist::tests::blocks_compose_legacy_down ... ok
[INFO] [stdout] test blacklist::tests::blocks_compose_down_volumes ... ok
[INFO] [stdout] test blacklist::tests::blocks_commands_referencing_flag_files ... ok
[INFO] [stdout] test blacklist::tests::blocks_delete_all ... ok
[INFO] [stdout] test blacklist::tests::blocks_compose_rm_volumes ... ok
[INFO] [stdout] test blacklist::tests::blocks_attach ... ok
[INFO] [stdout] test blacklist::tests::blocks_compose_legacy_rm_volumes ... ok
[INFO] [stdout] test blacklist::tests::blocks_aws_iam_delete ... ok
[INFO] [stdout] test blacklist::tests::blocks_aws_cf_delete_stack ... ok
[INFO] [stdout] test blacklist::tests::blocks_delete_crd ... ok
[INFO] [stdout] test blacklist::tests::blocks_delete_namespace ... ok
[INFO] [stdout] test blacklist::tests::blocks_aws_ec2_terminate ... ok
[INFO] [stdout] test blacklist::tests::blocks_aws_s3_rm_recursive ... ok
[INFO] [stdout] test blacklist::tests::blocks_delete_clusterrole_and_binding ... ok
[INFO] [stdout] test blacklist::tests::blocks_delete_pv_pvc ... ok
[INFO] [stdout] test blacklist::tests::blocks_aws_s3_bucket_delete ... ok
[INFO] [stdout] test blacklist::tests::blocks_delete_node ... ok
[INFO] [stdout] test blacklist::tests::blocks_compose_legacy_down_volumes ... ok
[INFO] [stdout] test blacklist::tests::blocks_aws_rds_delete ... ok
[INFO] [stdout] test blacklist::tests::blocks_docker_container_prune ... ok
[INFO] [stdout] test blacklist::tests::blocks_cordon ... ok
[INFO] [stdout] test blacklist::tests::blocks_docker_rm_volumes ... ok
[INFO] [stdout] test blacklist::tests::blocks_docker_volume_prune ... ok
[INFO] [stdout] test blacklist::tests::blocks_delete_workload ... ok
[INFO] [stdout] test blacklist::tests::blocks_docker_image_rm ... ok
[INFO] [stdout] test blacklist::tests::blocks_docker_volume_rm ... ok
[INFO] [stdout] test blacklist::tests::blocks_docker_rm ... ok
[INFO] [stdout] test blacklist::tests::blocks_docker_system_prune_risky ... ok
[INFO] [stdout] test blacklist::tests::blocks_delete_secret ... ok
[INFO] [stdout] test blacklist::tests::blocks_docker_rmi ... ok
[INFO] [stdout] test blacklist::tests::blocks_drain ... ok
[INFO] [stdout] test blacklist::tests::blocks_gh_repo_delete ... ok
[INFO] [stdout] test blacklist::tests::blocks_gh_release_delete ... ok
[INFO] [stdout] test blacklist::tests::blocks_docker_destructive_in_subprocess_list ... ok
[INFO] [stdout] test blacklist::tests::blocks_flag_file_nopush_manipulation ... ok
[INFO] [stdout] test blacklist::tests::blocks_cp_inbound_only ... ok
[INFO] [stdout] test blacklist::tests::blocks_docker_image_prune ... ok
[INFO] [stdout] test blacklist::tests::blocks_gh_secret_delete ... ok
[INFO] [stdout] test blacklist::tests::blocks_delete_ingress ... ok
[INFO] [stdout] test blacklist::tests::blocks_cluster_admin_binding ... ok
[INFO] [stdout] test blacklist::tests::blocks_gh_auth_logout ... ok
[INFO] [stdout] test blacklist::tests::blocks_git_branch_force_delete ... ok
[INFO] [stdout] test blacklist::tests::blocks_gh_variable_delete ... ok
[INFO] [stdout] test blacklist::tests::blocks_git_force_push_in_subprocess_list ... ok
[INFO] [stdout] test blacklist::tests::blocks_force_delete ... ok
[INFO] [stdout] test blacklist::tests::blocks_exec_shell ... ok
[INFO] [stdout] test blacklist::tests::allows_safe_kubectl ... ok
[INFO] [stdout] test blacklist::tests::blocks_delete_rolebinding ... ok
[INFO] [stdout] test blacklist::tests::blocks_git_reset_hard ... ok
[INFO] [stdout] test blacklist::tests::blocks_glab_release_delete ... ok
[INFO] [stdout] test blacklist::tests::blocks_glab_repo_delete ... ok
[INFO] [stdout] test blacklist::tests::blocks_redis_flushall ... ok
[INFO] [stdout] test blacklist::tests::blocks_gh_delete_in_subprocess_list ... ok
[INFO] [stdout] test blacklist::tests::blocks_helm_uninstall_delete ... ok
[INFO] [stdout] test blacklist::tests::blocks_glab_label_delete ... ok
[INFO] [stdout] test blacklist::tests::blocks_npm_unpublish ... ok
[INFO] [stdout] test blacklist::tests::blocks_glab_delete_in_subprocess_list ... ok
[INFO] [stdout] test blacklist::tests::blocks_redis_flushdb ... ok
[INFO] [stdout] test blacklist::tests::blocks_glab_repo_members_remove ... ok
[INFO] [stdout] test blacklist::tests::blocks_proxy ... ok
[INFO] [stdout] test blacklist::tests::blocks_glab_variable_delete ... ok
[INFO] [stdout] test blacklist::tests::blocks_helm_uninstall_in_subprocess_list ... ok
[INFO] [stdout] test blacklist::tests::blocks_rsh_off_and_on ... ok
[INFO] [stdout] test blacklist::tests::blocks_rsh_config_access ... ok
[INFO] [stdout] test blacklist::tests::blocks_glab_issue_delete ... ok
[INFO] [stdout] test blacklist::tests::blocks_rsh_off_on_in_subprocess_list ... ok
[INFO] [stdout] test blacklist::tests::blocks_git_clean ... ok
[INFO] [stdout] test blacklist::tests::blocks_rsh_allow ... ok
[INFO] [stdout] test blacklist::tests::blocks_sql_delete ... ok
[INFO] [stdout] test blacklist::tests::blocks_kubectl_delete_in_subprocess_list ... ok
[INFO] [stdout] test blacklist::tests::blocks_sql_truncate ... ok
[INFO] [stdout] test blacklist::tests::blocks_git_force_push ... ok
[INFO] [stdout] test blacklist::tests::blocks_sql_create_ddl ... ok
[INFO] [stdout] test blacklist::tests::blocks_sql_drop ... ok
[INFO] [stdout] test blacklist::tests::blocks_sql_drop_role ... ok
[INFO] [stdout] test blacklist::tests::blocks_debug_node ... ok
[INFO] [stdout] test blacklist::tests::blocks_sql_grant_all ... ok
[INFO] [stdout] test blacklist::tests::blocks_sql_revoke_all ... ok
[INFO] [stdout] test blacklist::tests::blocks_sql_alter_table ... ok
[INFO] [stdout] test blacklist::tests::blocks_subprocess_list_with_absolute_binary_path ... ok
[INFO] [stdout] test blacklist::tests::blocks_run_privileged ... ok
[INFO] [stdout] test blacklist::tests::check_filtered_still_blocks_non_disabled_rules ... ok
[INFO] [stdout] test blacklist::tests::check_filtered_skips_all_kubectl_rules_when_tool_disabled ... ok
[INFO] [stdout] test blacklist::tests::blocks_sys_firewall_flush ... ok
[INFO] [stdout] test blacklist::tests::check_filtered_skips_disabled_rule ... ok
[INFO] [stdout] test blacklist::tests::blocks_tf_destroy ... ok
[INFO] [stdout] test blacklist::tests::blocks_tf_workspace_delete ... ok
[INFO] [stdout] test blacklist::tests::check_filtered_empty_disabled_set_behaves_like_check ... ok
[INFO] [stdout] test blacklist::tests::blocks_rsh_rule_disable ... ok
[INFO] [stdout] test blacklist::tests::blocks_sys_nft_flush_ruleset ... ok
[INFO] [stdout] test blacklist::tests::blocks_rsh_tool_disable_via_self_protection ... ok
[INFO] [stdout] test blacklist::tests::security_regression_blocks_shell_escaped_kubectl_binary ... ok
[INFO] [stdout] test blacklist::tests::rule_ids_are_distinct_and_match_expected_set ... ok
[INFO] [stdout] test blacklist::tests::blocks_terraform_destroy_in_subprocess_list ... ok
[INFO] [stdout] test blacklist::tests::security_regression_blocks_shell_escaped_rsh_binary ... ok
[INFO] [stdout] test blacklist::tests::security_regression_blocks_shell_quoted_kubectl_verb ... ok
[INFO] [stdout] test blacklist::tests::check_filtered_still_blocks_other_tools_when_kubectl_disabled ... ok
[INFO] [stdout] test checker::tests::detect_checkers_always_includes_secret_file_checker ... ok
[INFO] [stdout] test checker::tests::detect_checkers_does_not_return_glab_for_helm_only ... ok
[INFO] [stdout] test checker::tests::detect_checkers_does_not_return_kubectl_for_helm_only ... ok
[INFO] [stdout] test checker::tests::detect_checkers_returns_docker_when_present ... ok
[INFO] [stdout] test blacklist::tests::check_filtered_tool_disabled_coexists_with_rule_disabled ... ok
[INFO] [stdout] test checker::tests::detect_checkers_returns_both_for_mixed_content ... ok
[INFO] [stdout] test blacklist::tests::check_for_bin_helm_only ... ok
[INFO] [stdout] test blacklist::tests::check_for_bin_kubectl_only ... ok
[INFO] [stdout] test blacklist::tests::check_for_bin_none_rules ... ok
[INFO] [stdout] test checker::tests::docker_checker_allows_safe_command ... ok
[INFO] [stdout] test blacklist::tests::blocks_sys_shutdown_systemctl ... ok
[INFO] [stdout] test blacklist::tests::blocks_sys_shutdown_direct ... ok
[INFO] [stdout] test checker::tests::docker_checker_blocks_volume_rm ... ok
[INFO] [stdout] test checker::tests::glab_checker_bins_contains_glab ... ok
[INFO] [stdout] test checker::tests::detect_checkers_returns_kubectl_when_present ... ok
[INFO] [stdout] test checker::tests::detect_checkers_returns_fallback_always ... ok
[INFO] [stdout] test checker::tests::fallback_checker_blocks_sql_delete ... ok
[INFO] [stdout] test checker::tests::detect_checkers_returns_glab_when_present ... ok
[INFO] [stdout] test checker::tests::all_raw_rules_bins_are_reachable_via_detect_checkers ... ok
[INFO] [stdout] test checker::tests::docker_checker_blocks_compose_legacy_down ... ok
[INFO] [stdout] test blacklist::tests::correct_rule_fires_for_each_pattern ... ok
[INFO] [stdout] test blacklist::tests::blocks_tf_force_unlock ... ok
[INFO] [stdout] test checker::tests::fallback_checker_blocks_subprocess_kubectl_delete ... ok
[INFO] [stdout] test checker::tests::fallback_checker_bins_is_empty ... ok
[INFO] [stdout] test checker::tests::docker_checker_bins_contains_docker ... ok
[INFO] [stdout] test checker::tests::glab_checker_allows_safe_command ... ok
[INFO] [stdout] test checker::tests::glab_checker_blocks_release_delete ... ok
[INFO] [stdout] test checker::tests::helm_checker_blocks_uninstall ... ok
[INFO] [stdout] test checker::tests::helm_checker_bins_contains_helm ... ok
[INFO] [stdout] test checker::tests::glab_checker_blocks_repo_delete ... ok
[INFO] [stdout] test checker::tests::rsh_checker_allows_rule_list ... ok
[INFO] [stdout] test checker::tests::kubectl_checker_allows_safe_command ... ok
[INFO] [stdout] test checker::tests::run_parallel_checks_blocks_bash_cat_dotenv ... ok
[INFO] [stdout] test checker::tests::helm_checker_allows_safe_command ... ok
[INFO] [stdout] test checker::tests::run_parallel_checks_allows_safe_git_push ... ok
[INFO] [stdout] test checker::tests::run_parallel_checks_allows_safe_gh_command ... ok
[INFO] [stdout] test checker::tests::rsh_checker_bins_contains_rsh ... ok
[INFO] [stdout] test checker::tests::rsh_checker_blocks_rule_disable ... ok
[INFO] [stdout] test checker::tests::run_parallel_checks_blocks_cargo_yank ... ok
[INFO] [stdout] test checker::tests::run_parallel_checks_blocks_sbin_shutdown ... ok
[INFO] [stdout] test checker::tests::run_parallel_checks_blocks_nft_flush_ruleset ... ok
[INFO] [stdout] test checker::tests::run_parallel_checks_blocks_git_force_push ... ok
[INFO] [stdout] test checker::tests::run_parallel_checks_blocks_gh_repo_delete ... ok
[INFO] [stdout] test checker::tests::run_parallel_checks_blocks_aws_ec2_terminate ... ok
[INFO] [stdout] test checker::tests::kubectl_checker_blocks_delete_namespace ... ok
[INFO] [stdout] test checker::tests::kubectl_checker_bins_contains_kubectl ... ok
[INFO] [stdout] test checker::tests::secret_file_checker_allows_normal_command ... ok
[INFO] [stdout] test checker::tests::run_parallel_checks_blocks_npm_unpublish ... ok
[INFO] [stdout] test checker::tests::run_parallel_checks_blocks_git_reset_hard ... ok
[INFO] [stdout] test checker::tests::secret_file_checker_allows_bare_flag ... ok
[INFO] [stdout] test checker::tests::secret_file_checker_blocks_cat_dotenv ... ok
[INFO] [stdout] test checker::tests::secret_file_checker_blocks_cp_with_secret_arg ... ok
[INFO] [stdout] test checker::tests::secret_file_checker_blocks_env_assignment_prefix ... ok
[INFO] [stdout] test blacklist::tests::blocks_scale_zero ... ok
[INFO] [stdout] test checker::tests::secret_file_checker_blocks_flag_equals_value_with_secret ... ok
[INFO] [stdout] test checker::tests::secret_file_checker_does_not_block_plain_command_name ... ok
[INFO] [stdout] test checker::tests::security_regression_inline_interpreter_secret_access_is_scanned ... ok
[INFO] [stdout] test checker::tests::run_parallel_checks_blocks_systemctl_poweroff ... ok
[INFO] [stdout] test checker::tests::security_regression_inline_sh_c_payload_is_scanned ... ok
[INFO] [stdout] test checker::tests::security_regression_pipeline_blocks_shell_escaped_kubectl_binary ... ok
[INFO] [stdout] test checker::tests::security_regression_pipeline_blocks_shell_escaped_rsh_binary ... ok
[INFO] [stdout] test checker::tests::security_regression_inline_bash_c_payload_is_scanned ... ok
[INFO] [stdout] test checker::tests::run_parallel_checks_blocks_terraform_destroy ... ok
[INFO] [stdout] test checker::tests::security_regression_interpreter_script_args_do_not_disable_script_scan ... ok
[INFO] [stdout] test checker::tests::run_parallel_checks_blocks_sudo_sbin_shutdown ... ok
[INFO] [stdout] test checker::tests::split_absolute_binary_is_direct_not_script ... ok
[INFO] [stdout] test checker::tests::security_regression_tilde_script_path_is_scanned ... ok
[INFO] [stdout] test checker::tests::split_detects_bash_script ... ok
[INFO] [stdout] test checker::tests::run_parallel_checks_returns_hit_for_blocked_command ... ok
[INFO] [stdout] test checker::tests::secret_file_checker_bins_is_empty ... ok
[INFO] [stdout] test checker::tests::split_absolute_script_with_extension_is_still_script ... ok
[INFO] [stdout] test checker::tests::run_parallel_checks_skips_unreadable_script ... ok
[INFO] [stdout] test disabled::tests::add_tool_writes_tool_prefix ... ok
[INFO] [stdout] test checker::tests::run_parallel_checks_returns_none_for_safe_command ... ok
[INFO] [stdout] test checker::tests::split_detects_dot_slash_script ... ok
[INFO] [stdout] test checker::tests::split_mixed_command ... ok
[INFO] [stdout] test checker::tests::split_direct_only ... ok
[INFO] [stdout] test checker::tests::split_newline_separator ... ok
[INFO] [stdout] test checker::tests::split_pipe_separator ... ok
[INFO] [stdout] test checker::tests::split_quoted_script_path ... ok
[INFO] [stdout] test checker::tests::run_parallel_checks_detects_hit_in_mixed_segments ... ok
[INFO] [stdout] test checker::tests::split_script_path_with_spaces ... ok
[INFO] [stdout] test checker::tests::split_semicolon_separator ... ok
[INFO] [stdout] test forbid::tests::blocks_when_context_flag_is_forbidden ... ok
[INFO] [stdout] test disabled::tests::flag_path_local_is_dot_rsh_disabled ... ok
[INFO] [stdout] test disabled::tests::config_path_points_to_disabled_json ... ok
[INFO] [stdout] test checker::tests::split_source_dot ... ok
[INFO] [stdout] test forbid::tests::blocks_when_current_context_is_forbidden_and_no_flag ... ok
[INFO] [stdout] test forbid::tests::blocks_when_current_namespace_is_forbidden ... ok
[INFO] [stdout] test checker::tests::security_regression_inline_node_e_payload_is_scanned ... ok
[INFO] [stdout] test forbid::tests::blocks_when_namespace_flag_is_quoted ... ok
[INFO] [stdout] test forbid::tests::blocks_when_wrapped_kubectl_context_is_forbidden ... ok
[INFO] [stdout] test disabled::tests::is_disabled_returns_true_when_global_flag_exists ... ok
[INFO] [stdout] test forbid::tests::allows_when_explicit_context_not_forbidden ... ok
[INFO] [stdout] test disabled::tests::load_returns_empty_when_file_missing ... ok
[INFO] [stdout] test disabled::tests::flag_path_global_ends_with_rsh_disabled ... ok
[INFO] [stdout] test disabled::tests::load_returns_empty_on_invalid_json ... ok
[INFO] [stdout] test disabled::tests::load_migrates_old_filename_to_new ... ok
[INFO] [stdout] test disabled::tests::save_produces_sorted_json ... ok
[INFO] [stdout] test disabled::tests::remove_tool_removes_tool_prefix ... ok
[INFO] [stdout] test disabled::tests::round_trip_add_and_remove ... ok
[INFO] [stdout] test forbid::tests::check_db_skips_non_sql_client_commands ... ok
[INFO] [stdout] test forbid::tests::check_returns_none_for_irrelevant_command ... ok
[INFO] [stdout] test forbid::tests::empty_config_is_a_no_op ... ok
[INFO] [stdout] test forbid::tests::extract_flag_handles_equals_form ... ok
[INFO] [stdout] test forbid::tests::extract_flag_handles_space_form ... ok
[INFO] [stdout] test forbid::tests::forbid_config_databases_field_mutates_as_expected ... ok
[INFO] [stdout] test forbid::tests::extract_flag_returns_none_when_absent ... ok
[INFO] [stdout] test forbid::tests::explicit_flag_overrides_implicit_current_context ... ok
[INFO] [stdout] test forbid::tests::forbid_config_is_empty_includes_databases ... ok
[INFO] [stdout] test forbid::tests::forbid_config_deserializes_without_databases_field ... ok
[INFO] [stdout] test forbid::tests::identifies_aliased_kubectl ... ok
[INFO] [stdout] test forbid::tests::identifies_kubectl_with_absolute_path ... ok
[INFO] [stdout] test forbid::tests::ignores_non_k8s_commands ... ok
[INFO] [stdout] test forbid::tests::security_regression_blocks_attached_short_namespace_forbidden_flag ... ok
[INFO] [stdout] test forbid::tests::identifies_kubectl_behind_wrapper ... ok
[INFO] [stdout] test forbid::tests::security_regression_blocks_when_wrapped_kubectl_context_uses_sudo_option_argument ... ok
[INFO] [stdout] test forbid::tests::security_regression_extract_flag_handles_attached_short_namespace_form ... ok
[INFO] [stdout] test forbid::tests::security_regression_wrapper_short_n_is_not_kubectl_namespace ... ok
[INFO] [stdout] test forbid::tests::blocks_when_namespace_flag_is_forbidden ... ok
[INFO] [stdout] test forbid::tests::helm_uses_kube_context_flag ... ok
[INFO] [stdout] test forbid::tests::check_db_allows_sql_client_without_host ... ok
[INFO] [stdout] test forbid::tests::check_db_blocks_host_flag_with_quotes ... ok
[INFO] [stdout] test forbid::tests::security_regression_check_db_blocks_attached_short_host_flag ... ok
[INFO] [stdout] test forbid::tests::security_regression_check_db_ignores_wrapper_host_flag ... ok
[INFO] [stdout] test forbid::tests::check_db_blocks_host_flag_equals_form ... ok
[INFO] [stdout] test forbid::tests::check_db_returns_database_hit_kind ... ok
[INFO] [stdout] test forbid::tests::check_db_blocks_wrapped_sql_client ... ok
[INFO] [stdout] test forbid::tests::check_db_blocks_host_flag_space_form ... ok
[INFO] [stdout] test forbid::tests::check_db_allows_non_forbidden_host ... ok
[INFO] [stdout] test forbid::tests::check_db_blocks_connection_url ... ok
[INFO] [stdout] test forbid::tests::check_db_blocks_url_with_userinfo ... ok
[INFO] [stdout] test checker::tests::split_skips_empty_and_comment_segments ... ok
[INFO] [stdout] test nopush::tests::flag_path_is_dot_rsh_nopush ... ok
[INFO] [stdout] test nopush::tests::is_nopush_active_false_when_no_flag ... ok
[INFO] [stdout] test nopush::tests::allows_git_status ... ok
[INFO] [stdout] test nopush::tests::allows_git_pull ... ok
[INFO] [stdout] test nopush::tests::is_nopush_active_true_when_flag_exists ... ok
[INFO] [stdout] test nopush::tests::blocks_gh_pr_merge ... ok
[INFO] [stdout] test nopush::tests::blocks_glab_mr_merge ... ok
[INFO] [stdout] test nopush::tests::blocks_glab_mr_create ... ok
[INFO] [stdout] test nopush::tests::blocks_git_push_delete ... ok
[INFO] [stdout] test nopush::tests::allows_git_fetch ... ok
[INFO] [stdout] test nopush::tests::does_not_cross_shell_separator ... ok
[INFO] [stdout] test nopush::tests::blocks_git_push_with_remote_and_branch ... ok
[INFO] [stdout] test nopush::tests::allows_glab_mr_list ... ok
[INFO] [stdout] test nopush::tests::allows_gh_pr_view ... ok
[INFO] [stdout] test nopush::tests::blocks_git_push_force ... ok
[INFO] [stdout] test secrets::tests::all_rules_count ... ok
[INFO] [stdout] test secrets::tests::check_path_hit_for_aws_credentials ... ok
[INFO] [stdout] test secrets::tests::check_path_hit_for_settings_xml ... ok
[INFO] [stdout] test secrets::tests::check_path_hit_for_env_extension ... ok
[INFO] [stdout] test secrets::tests::check_path_hit_for_ssh_key ... ok
[INFO] [stdout] test secrets::tests::glob_case_insensitive_basename ... ok
[INFO] [stdout] test secrets::tests::check_path_hit_for_dotenv ... ok
[INFO] [stdout] test secrets::tests::check_path_hit_for_pem ... ok
[INFO] [stdout] test secrets::tests::check_path_no_match_for_env_prefixed_non_secret ... ok
[INFO] [stdout] test secrets::tests::glob_case_insensitive_two_component ... ok
[INFO] [stdout] test secrets::tests::check_path_no_match_settings_xml_bak ... ok
[INFO] [stdout] test secrets::tests::glob_env_extension_matches ... ok
[INFO] [stdout] test secrets::tests::check_path_no_match_for_normal_file ... ok
[INFO] [stdout] test secrets::tests::glob_exact_basename_no_match_on_longer_name ... ok
[INFO] [stdout] test secrets::tests::glob_extension_matches ... ok
[INFO] [stdout] test secrets::tests::glob_extension_no_match_on_dotfile_only ... ok
[INFO] [stdout] test secrets::tests::glob_exact_basename_matches ... ok
[INFO] [stdout] test secrets::tests::glob_extension_no_match_on_extra_suffix ... ok
[INFO] [stdout] test secrets::tests::glob_two_component_path_matches ... ok
[INFO] [stdout] test secrets::tests::glob_two_component_path_no_match_on_different_name ... ok
[INFO] [stdout] test secrets::tests::glob_wildcard_suffix_no_match_on_bare_name ... ok
[INFO] [stdout] test secrets::tests::glob_wildcard_suffix_matches ... ok
[INFO] [stdout] test secrets::tests::glob_wildcard_suffix_no_match_on_trailing_dot_only ... ok
[INFO] [stdout] test secrets::tests::glob_windows_backslash_normalised ... ok
[INFO] [stdout] test settings_guard::tests::absolute_path_rsh_is_recognized ... ok
[INFO] [stdout] test settings_guard::tests::detects_codex_hooks ... ok
[INFO] [stdout] test settings_guard::tests::bare_rsh_is_recognized ... ok
[INFO] [stdout] test settings_guard::tests::detects_global_claude_settings ... ok
[INFO] [stdout] test settings_guard::tests::detects_local_claude_settings ... ok
[INFO] [stdout] test settings_guard::tests::unrelated_command_is_not_rsh ... ok
[INFO] [stdout] test settings_guard::tests::detects_windows_backslash_paths ... ok
[INFO] [stdout] test settings_guard::tests::write_allows_when_file_does_not_exist ... ok
[INFO] [stdout] test settings_guard::tests::edit_allows_when_file_does_not_exist ... ok
[INFO] [stdout] test shell::tests::tokenize_handles_single_quotes ... ok
[INFO] [stdout] test shell::tests::detects_env_assignments ... ok
[INFO] [stdout] test settings_guard::tests::edit_blocks_when_hook_entry_replaced_without_hook ... ok
[INFO] [stdout] test settings_guard::tests::write_allows_when_hook_preserved ... ok
[INFO] [stdout] test shell::tests::tokenize_preserves_quoted_spaces ... ok
[INFO] [stdout] test tests::protected_path_matches_local_rsh_disabled ... ok
[INFO] [stdout] test tests::protected_path_matches_local_rsh_nopush ... ok
[INFO] [stdout] test tests::protected_path_matches_rsh_config ... ok
[INFO] [stdout] test settings_guard::tests::write_allows_when_file_had_no_hook ... ok
[INFO] [stdout] test settings_guard::tests::edit_allows_when_file_had_no_hook ... ok
[INFO] [stdout] test settings_guard::tests::write_blocks_when_hook_removed ... ok
[INFO] [stdout] test settings_guard::tests::edit_allows_when_old_string_not_found ... ok
[INFO] [stdout] test settings_guard::tests::write_blocks_absolute_path_rsh_removed ... ok
[INFO] [stdout] test settings_guard::tests::does_not_flag_unrelated_files ... ok
[INFO] [stdout] test settings_guard::tests::edit_allows_when_hook_preserved_after_edit ... ok
[INFO] [stdout] test settings_guard::tests::write_allows_when_new_content_is_invalid_json ... ok
[INFO] [stdout] test tests::protected_path_matches_windows_backslash ... ok
[INFO] [stdout] test tests::security_regression_protected_path_matches_symlink_to_local_disable_flag ... ok
[INFO] [stdout] test forbid::tests::extract_flag_handles_short_namespace_form ... ok
[INFO] [stdout] test nopush::tests::blocks_git_push_plain ... ok
[INFO] [stdout] test tests::protected_path_does_not_match_unrelated ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 309 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.52s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/rsh-dff9063fa79a9a8a)
[INFO] [stdout] 
[INFO] [stdout] running 43 tests
[INFO] [stdout] test tests::add_to_gitignore_does_not_duplicate_entry ... ok
[INFO] [stdout] test tests::install_claude_hook_is_idempotent ... ok
[INFO] [stdout] test tests::allow_push_idempotent ... ok
[INFO] [stdout] test tests::allow_push_removes_flag ... ok
[INFO] [stdout] test tests::forbid_push_creates_flag_and_updates_gitignore ... ok
[INFO] [stdout] test tests::install_codex_hook_is_idempotent ... ok
[INFO] [stdout] test tests::run_hook_allows_unknown_non_command_tool_payload ... ok
[INFO] [stdout] test tests::run_hook_allows_read_of_normal_file ... ok
[INFO] [stdout] test tests::cli_debug_assert ... ok
[INFO] [stdout] test tests::detect_targets_uses_existing_config_dirs ... ok
[INFO] [stdout] test tests::is_valid_rule_id_accepts_secret_rule ... ok
[INFO] [stdout] test tests::category_tool_disabled_false_when_bin_not_disabled ... ok
[INFO] [stdout] test tests::is_valid_tool_bin_rejects_unknown ... ok
[INFO] [stdout] test tests::category_tool_disabled_false_for_mixed_bins ... ok
[INFO] [stdout] test tests::category_tool_disabled_detects_homogeneous_disabled_bin ... ok
[INFO] [stdout] test tests::run_hook_accepts_codex_exec_command_payload ... ok
[INFO] [stdout] test tests::is_valid_tool_bin_accepts_kubectl ... ok
[INFO] [stdout] test tests::run_tool_disable_unknown_bin_returns_failure ... ok
[INFO] [stdout] test tests::run_tool_enable_unknown_bin_returns_failure ... ok
[INFO] [stdout] test tests::security_regression_forbid_list_reports_invalid_config ... ok
[INFO] [stdout] test tests::run_off_creates_local_flag_and_run_on_removes_it ... ok
[INFO] [stdout] test tests::run_hook_accepts_codex_apply_patch_payload ... ok
[INFO] [stdout] test tests::security_regression_install_hook_rejects_invalid_existing_json ... ok
[INFO] [stdout] test tests::run_hook_blocks_codex_exec_command_payload ... ok
[INFO] [stdout] test tests::run_hook_blocks_edit_of_secret_path ... ok
[INFO] [stdout] test tests::run_hook_allows_git_push_when_nopush_inactive ... ok
[INFO] [stdout] test tests::forbid_push_idempotent ... ok
[INFO] [stdout] test tests::run_hook_blocks_gh_pr_merge_when_nopush_active ... ok
[INFO] [stdout] test tests::run_hook_blocks_git_push_when_nopush_active ... ok
[INFO] [stdout] test tests::run_hook_blocks_namespaced_exec_command_payload ... ok
[INFO] [stdout] test tests::run_hook_blocks_read_of_dotenv ... ok
[INFO] [stdout] test tests::run_hook_blocks_write_to_secret_path ... ok
[INFO] [stdout] test tests::security_regression_run_hook_blocks_edit_that_removes_rsh_hook ... ok
[INFO] [stdout] test tests::security_regression_run_hook_allows_write_that_preserves_rsh_hook ... ok
[INFO] [stdout] test tests::security_regression_run_hook_blocks_read_via_secret_symlink ... ok
[INFO] [stdout] test tests::run_hook_passes_through_when_globally_disabled ... ok
[INFO] [stdout] test tests::security_regression_invalid_forbid_config_does_not_fail_open ... ok
[INFO] [stdout] test tests::run_hook_blocks_unknown_command_tool_payload ... ok
[INFO] [stdout] test tests::security_regression_run_hook_blocks_write_that_removes_rsh_hook ... ok
[INFO] [stdout] test tests::security_regression_hook_command_does_not_use_unrelated_rsh_on_path ... ok
[INFO] [stdout] test tests::security_regression_run_hook_blocks_write_to_xdg_rsh_config_path ... ok
[INFO] [stdout] test tests::security_regression_write_tool_does_not_fall_back_to_command_shortcut ... ok
[INFO] [stdout] test tests::security_regression_run_hook_blocks_write_via_protected_symlink ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 43 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.40s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/docs.rs (/opt/rustwide/target/debug/deps/docs-0e28890f5321e5f8)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test security_regression_fail_open_adr_mentions_invalid_forbid_config_fail_closed ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests rsh
[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" "197f47c60ee4f13c000571516aee4be456b01aef06c079af0fbd48f166281e4b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "197f47c60ee4f13c000571516aee4be456b01aef06c079af0fbd48f166281e4b", kill_on_drop: false }`
[INFO] [stdout] 197f47c60ee4f13c000571516aee4be456b01aef06c079af0fbd48f166281e4b
