[INFO] cloning repository https://github.com/fohte/runok
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/fohte/runok" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffohte%2Frunok", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffohte%2Frunok'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 52c3772eb09961d1b2264bd642dfa290adff196c
[INFO] testing fohte/runok against master#cced03bfd61a304243a34504618ecec86c17063f for pr-154065-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffohte%2Frunok" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-7-tc1/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/fohte/runok
[INFO] finished tweaking git repo https://github.com/fohte/runok
[INFO] tweaked toml for git repo https://github.com/fohte/runok written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/fohte/runok on toolchain cced03bfd61a304243a34504618ecec86c17063f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/fohte/runok 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" "+cced03bfd61a304243a34504618ecec86c17063f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded streaming-iterator v0.1.9
[INFO] [stderr]   Downloaded tree-sitter-language v0.1.7
[INFO] [stderr]   Downloaded similar v3.1.1
[INFO] [stderr]   Downloaded is_ci v1.2.0
[INFO] [stderr]   Downloaded supports-color v3.0.2
[INFO] [stderr]   Downloaded supports-color v2.1.0
[INFO] [stderr]   Downloaded better_any v0.2.1
[INFO] [stderr]   Downloaded futures-timer v3.0.4
[INFO] [stderr]   Downloaded owo-colors v4.3.0
[INFO] [stderr]   Downloaded relative-path v1.9.3
[INFO] [stderr]   Downloaded murmur3 v0.4.1
[INFO] [stderr]   Downloaded assert_cmd v2.2.2
[INFO] [stderr]   Downloaded annotate-snippets v0.12.16
[INFO] [stderr]   Downloaded rstest v0.26.1
[INFO] [stderr]   Downloaded landlock v0.4.5
[INFO] [stderr]   Downloaded cel-parser v0.10.1
[INFO] [stderr]   Downloaded toml_edit v0.25.12+spec-1.1.0
[INFO] [stderr]   Downloaded rstest_macros v0.26.1
[INFO] [stderr]   Downloaded cel-interpreter v0.10.0
[INFO] [stderr]   Downloaded granit-parser v0.0.3
[INFO] [stderr]   Downloaded tree-sitter v0.26.9
[INFO] [stderr]   Downloaded seccompiler v0.5.0
[INFO] [stderr]   Downloaded antlr4rust v0.3.0-rc2
[INFO] [stderr]   Downloaded proptest v1.11.0
[INFO] [stderr]   Downloaded serde-saphyr v0.0.27
[INFO] [stderr]   Downloaded tree-sitter-bash v0.25.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" "+cced03bfd61a304243a34504618ecec86c17063f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] a9ef0808fe4682a0949bf0a7e06ece8ea87cf7b8f2555a5769b8f9f95f5ba45c
[INFO] running `Command { std: "docker" "start" "-a" "a9ef0808fe4682a0949bf0a7e06ece8ea87cf7b8f2555a5769b8f9f95f5ba45c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a9ef0808fe4682a0949bf0a7e06ece8ea87cf7b8f2555a5769b8f9f95f5ba45c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a9ef0808fe4682a0949bf0a7e06ece8ea87cf7b8f2555a5769b8f9f95f5ba45c", kill_on_drop: false }`
[INFO] [stdout] a9ef0808fe4682a0949bf0a7e06ece8ea87cf7b8f2555a5769b8f9f95f5ba45c
[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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+cced03bfd61a304243a34504618ecec86c17063f" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] ddc84868671868b39fddd71766de0047442bfc2a43eace313d1cd43c2d9a2d7f
[INFO] running `Command { std: "docker" "start" "-a" "ddc84868671868b39fddd71766de0047442bfc2a43eace313d1cd43c2d9a2d7f", kill_on_drop: false }`
[INFO] [stderr]    Compiling memchr v2.8.2
[INFO] [stderr]    Compiling shlex v2.0.1
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling tree-sitter-language v0.1.7
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling zerocopy v0.8.52
[INFO] [stderr]    Compiling cc v1.2.64
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling murmur3 v0.4.1
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling uuid v1.23.3
[INFO] [stderr]    Compiling is_ci v1.2.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling better_any v0.2.1
[INFO] [stderr]    Compiling typed-arena v2.0.2
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling is-terminal v0.4.17
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling const-oid v0.10.2
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling owo-colors v4.3.0
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling arraydeque v0.5.1
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling antlr4rust v0.3.0-rc2
[INFO] [stderr]    Compiling hybrid-array v0.4.12
[INFO] [stderr]    Compiling granit-parser v0.0.3
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling supports-color v2.1.0
[INFO] [stderr]    Compiling encoding_rs_io v0.1.7
[INFO] [stderr]    Compiling supports-color v3.0.2
[INFO] [stderr]    Compiling console v0.16.3
[INFO] [stderr]    Compiling annotate-snippets v0.12.16
[INFO] [stderr]    Compiling crypto-common v0.2.2
[INFO] [stderr]    Compiling block-buffer v0.12.1
[INFO] [stderr]    Compiling tree-sitter-bash v0.25.1
[INFO] [stderr]    Compiling cpufeatures v0.3.0
[INFO] [stderr]    Compiling shell-words v1.1.1
[INFO] [stderr]    Compiling unicode-segmentation v1.13.3
[INFO] [stderr]    Compiling nohash-hasher v0.2.0
[INFO] [stderr]    Compiling streaming-iterator v0.1.9
[INFO] [stderr]    Compiling zeroize v1.9.0
[INFO] [stderr]    Compiling runok v0.3.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling terminal_size v0.4.4
[INFO] [stderr]    Compiling dialoguer v0.12.0
[INFO] [stderr]    Compiling similar v3.1.1
[INFO] [stderr]    Compiling digest v0.11.3
[INFO] [stderr]    Compiling cel-parser v0.10.1
[INFO] [stderr]    Compiling sha2 v0.11.0
[INFO] [stderr]    Compiling seccompiler v0.5.0
[INFO] [stderr]    Compiling tree-sitter v0.26.9
[INFO] [stderr]    Compiling fs2 v0.4.3
[INFO] [stderr]    Compiling semver v1.0.28
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling enumflags2_derive v0.7.12
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling enumflags2 v0.7.12
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling landlock v0.4.5
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling serde-saphyr v0.0.27
[INFO] [stderr]    Compiling cel-interpreter v0.10.0
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 41.72s
[INFO] running `Command { std: "docker" "inspect" "ddc84868671868b39fddd71766de0047442bfc2a43eace313d1cd43c2d9a2d7f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ddc84868671868b39fddd71766de0047442bfc2a43eace313d1cd43c2d9a2d7f", kill_on_drop: false }`
[INFO] [stdout] ddc84868671868b39fddd71766de0047442bfc2a43eace313d1cd43c2d9a2d7f
[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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+cced03bfd61a304243a34504618ecec86c17063f" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 48b8331c68164df5b493b83b492984f724e2e68493eb9a7160c773cfdd4b57e2
[INFO] running `Command { std: "docker" "start" "-a" "48b8331c68164df5b493b83b492984f724e2e68493eb9a7160c773cfdd4b57e2", kill_on_drop: false }`
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling winnow v1.0.3
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling normalize-line-endings v0.3.0
[INFO] [stderr]    Compiling difflib v0.4.0
[INFO] [stderr]    Compiling quick-error v1.2.3
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling assert_cmd v2.2.2
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling relative-path v1.9.3
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling rstest_macros v0.26.1
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling antlr4rust v0.3.0-rc2
[INFO] [stderr]    Compiling futures-timer v3.0.4
[INFO] [stderr]    Compiling unarray v0.1.4
[INFO] [stderr]    Compiling rand v0.9.4
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling dyn-clone v1.0.20
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling proptest v1.11.0
[INFO] [stderr]    Compiling toml_edit v0.25.12+spec-1.1.0
[INFO] [stderr]    Compiling cel-parser v0.10.1
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling proc-macro-crate v3.5.0
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling tree-sitter v0.26.9
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling serde_derive_internals v0.29.1
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling enumflags2_derive v0.7.12
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling ref-cast-impl v1.0.25
[INFO] [stderr]    Compiling schemars_derive v1.2.1
[INFO] [stderr]    Compiling ref-cast v1.0.25
[INFO] [stderr]    Compiling enumflags2 v0.7.12
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling landlock v0.4.5
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling rstest v0.26.1
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling serde-saphyr v0.0.27
[INFO] [stderr]    Compiling schemars v1.2.1
[INFO] [stderr]    Compiling cel-interpreter v0.10.0
[INFO] [stderr]    Compiling runok v0.3.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 11s
[INFO] running `Command { std: "docker" "inspect" "48b8331c68164df5b493b83b492984f724e2e68493eb9a7160c773cfdd4b57e2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "48b8331c68164df5b493b83b492984f724e2e68493eb9a7160c773cfdd4b57e2", kill_on_drop: false }`
[INFO] [stdout] 48b8331c68164df5b493b83b492984f724e2e68493eb9a7160c773cfdd4b57e2
[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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+cced03bfd61a304243a34504618ecec86c17063f" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 2da57a94892ab2914c93718877a607b0ae3fb9cdee510c067e00367402233cfa
[INFO] running `Command { std: "docker" "start" "-a" "2da57a94892ab2914c93718877a607b0ae3fb9cdee510c067e00367402233cfa", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.36s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/runok-4a8b21764f1c9e0f)
[INFO] [stdout] 
[INFO] [stdout] running 1845 tests
[INFO] [stdout] test adapter::check_adapter::tests::build_check_output_maps_action_to_output::case_3_ask_with_message ... ok
[INFO] [stdout] test adapter::check_adapter::tests::build_check_output_maps_action_to_output::case_2_deny ... ok
[INFO] [stdout] test adapter::check_adapter::tests::build_check_output_maps_action_to_output::case_5_with_sandbox_preset ... ok
[INFO] [stdout] test adapter::check_adapter::tests::build_no_match_output_maps_defaults::case_1_default_ask ... ok
[INFO] [stdout] test adapter::check_adapter::tests::build_no_match_output_maps_defaults::case_2_explicit_allow ... ok
[INFO] [stdout] test adapter::check_adapter::tests::build_no_match_output_maps_defaults::case_3_explicit_deny ... ok
[INFO] [stdout] test adapter::check_adapter::tests::build_no_match_output_maps_defaults::case_4_explicit_ask ... ok
[INFO] [stdout] test adapter::check_adapter::tests::build_check_output_maps_action_to_output::case_1_allow ... ok
[INFO] [stdout] test adapter::check_adapter::tests::build_sandbox_info_from_merged_policy_network_allowed ... ok
[INFO] [stdout] test adapter::check_adapter::tests::build_sandbox_info_from_merged_policy_network_denied ... ok
[INFO] [stdout] test adapter::check_adapter::tests::build_sandbox_info_from_preset ... ok
[INFO] [stdout] test adapter::check_adapter::tests::build_sandbox_info_returns_none_for_empty::case_2_no_merged_policy ... ok
[INFO] [stdout] test adapter::check_adapter::tests::build_sandbox_info_returns_none_for_empty::case_1_no_preset ... ok
[INFO] [stdout] test adapter::check_adapter::tests::from_stdin_extracts_command ... ok
[INFO] [stdout] test adapter::check_adapter::tests::from_command_extracts_command ... ok
[INFO] [stdout] test adapter::check_adapter::tests::handle_action_always_returns_exit_0::case_1_allow ... ok
[INFO] [stdout] test adapter::check_adapter::tests::handle_action_always_returns_exit_0::case_3_ask ... ok
[INFO] [stdout] test adapter::check_adapter::tests::handle_action_always_returns_exit_0::case_2_deny ... ok
[INFO] [stdout] test adapter::check_adapter::tests::handle_no_match_returns_exit_0 ... ok
[INFO] [stdout] test adapter::check_adapter::tests::is_auditable_returns_false ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::extract_command_returns_expected::case_1_empty_args ... ok
[INFO] [stdout] test adapter::check_adapter::tests::handle_error_returns_exit_2 ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::extract_command_returns_expected::case_3_single_compound_arg ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_action_allow_executes_and_returns_exit_code::case_2_exit_1 ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::extract_command_returns_expected::case_4_multiple_args ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_action_deny_returns_exit_3::case_1_with_message ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_action_ask_returns_exit_3::case_2_without_message ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::audit_metadata_returns_exec_endpoint_type ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_action_allow_executes_and_returns_exit_code::case_3_exit_42 ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_action_allow_with_merged_policy ... ok
[INFO] [stdout] test adapter::check_adapter::tests::build_check_output_maps_action_to_output::case_4_ask_without_message ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_action_deny_with_fix_suggestion ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_action_dispatches_correct_command_input::case_1_single_arg_shell ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_action_dispatches_correct_command_input::case_2_multiple_args_argv ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_action_allow_errors_on_undefined_sandbox_preset ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_action_allow_executes_and_returns_exit_code::case_1_exit_0 ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::extract_command_returns_expected::case_5_args_with_spaces ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_error_returns_exit_1 ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_action_deny_returns_exit_3::case_2_without_message ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_no_match_empty_args_returns_0 ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::build_action_output_maps_action_to_hook_output::case_3_deny_with_message ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::build_action_output_maps_action_to_hook_output::case_6_ask_with_message ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::build_action_output_maps_action_to_hook_output::case_5_deny_with_message_and_suggestion ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_no_match_follows_defaults::case_2_none_default ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::build_action_output_maps_action_to_hook_output::case_7_ask_without_message ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::build_action_output_maps_action_to_hook_output::case_8_ask_with_sandbox ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_no_match_follows_defaults::case_3_deny_default ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_no_match_follows_defaults::case_4_ask_default ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::is_auditable_returns_true ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::audit_metadata_returns_hook_endpoint_type ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_no_match_follows_defaults::case_1_allow_default ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::build_action_output_maps_action_to_hook_output::case_2_allow_with_sandbox ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::build_action_output_maps_action_to_hook_output::case_1_allow ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::build_no_match_output_bash_applies_defaults::case_2_explicit_ask ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::build_action_output_maps_action_to_hook_output::case_4_deny_without_message ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::build_no_match_output_bash_applies_defaults::case_1_default_ask ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::build_no_match_output_bash_applies_defaults::case_3_explicit_allow ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::build_no_match_output_bash_applies_defaults::case_4_explicit_deny ... ok
[INFO] [stdout] {"test adapter::hook_adapter::tests::build_no_match_output_with_default_sandbox::case_1_ask ... hookSpecificOutputok
[INFO] [stdout] ":{"hookEventName":"PreToolUse","permissionDecision":"ask"}}test adapter::hook_adapter::tests::build_no_match_output_non_bash_returns_none ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::extract_command_filters_by_tool_name::case_1_bash_tool ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::build_no_match_output_with_default_sandbox::case_2_allow ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::extract_command_filters_by_tool_name::case_3_write_tool ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::handle_error_returns_exit_1 ... ok
[INFO] [stdout] {"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"allow"}}test adapter::hook_adapter::tests::extract_command_filters_by_tool_name::case_2_non_bash_tool ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::hook_output_includes_optional_fields_when_present ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::handle_no_match_returns_exit_0 ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::hook_output_serializes_to_camel_case_json ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::is_auditable_returns_true ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::sandbox_updated_input_resolves_preset::case_1_preset_some ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::handle_action_returns_exit_0 ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::hook_input_deserializes_from_snake_case_json ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::extract_command_invalid_bash_input_returns_error ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::sandbox_updated_input_resolves_preset::case_3_merged_policy ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::wrap_with_sandbox_quotes_command::case_1_simple_command ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::wrap_with_sandbox_quotes_command::case_4_compound_pipe ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::wrap_with_sandbox_quotes_command::case_3_compound_and ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::wrap_with_sandbox_quotes_preset::case_1_preset_with_spaces ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::wrap_with_sandbox_rejects_nul_byte ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::wrap_with_sandbox_quotes_preset::case_2_preset_with_special_chars ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::wrap_with_sandbox_quotes_command::case_2_command_with_spaces ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::wrap_with_sandbox_quotes_command::case_5_compound_semicolon ... ok
[INFO] [stdout] test adapter::tests::apply_sandbox_fallback_works::case_3_preset_none_without_default ... ok
[INFO] [stdout] test adapter::tests::apply_sandbox_fallback_works::case_4_merged_none_with_default ... ok
[INFO] [stdout] test adapter::tests::apply_sandbox_fallback_works::case_1_preset_none_with_default ... ok
[INFO] [stdout] test adapter::tests::apply_sandbox_fallback_works::case_2_preset_some_with_default ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_action_ask_returns_exit_3::case_1_with_message ... ok
[INFO] [stdout] test adapter::tests::compound_all_unmatched_calls_handle_action_with_ask ... ok
[INFO] [stdout] test adapter::tests::extract_none_calls_handle_no_match ... ok
[INFO] [stdout] test adapter::tests::extract_error_calls_handle_error ... ok
[INFO] [stdout] test adapter::tests::handle_action_error_delegates_to_handle_error ... ok
[INFO] [stdout] test adapter::tests::for_loop_with_deny_rule_on_subcommand ... ok
[INFO] [stdout] test adapter::tests::handle_action_exit_code_propagated::case_1_exit_0 ... ok
[INFO] [stdout] test adapter::tests::compound_allow_plus_unmatched_with_defaults_ask_calls_handle_action_with_ask ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::sandbox_updated_input_resolves_preset::case_2_preset_none ... ok
[INFO] [stdout] test adapter::tests::audit_log_not_written_when_disabled ... ok
[INFO] [stdout] test adapter::tests::allow_with_sandbox_preset_passes_to_handle_action ... ok
[INFO] [stdout] test adapter::tests::audit_log_write_failure_does_not_affect_exit_code ... ok
[INFO] [stdout] test adapter::tests::handle_error_exit_code_propagated::case_1_exit_2 ... ok
[INFO] [stdout] test adapter::tests::extract_none_passes_defaults_to_handle_no_match ... ok
[INFO] [stdout] test adapter::tests::handle_action_exit_code_propagated::case_2_exit_1 ... ok
[INFO] [stdout] test adapter::tests::handle_no_match_error_delegates_to_handle_error ... ok
[INFO] [stdout] test adapter::tests::handle_no_match_exit_code_propagated::case_2_exit_5 ... ok
[INFO] [stdout] test adapter::tests::handle_action_exit_code_propagated::case_3_exit_42 ... ok
[INFO] [stdout] test adapter::tests::matched_rule_without_sandbox_falls_back_to_defaults_sandbox ... ok
[INFO] [stdout] test adapter::tests::no_match_calls_handle_action_with_ask::case_1_no_matching_rule ... ok
[INFO] [stdout] test adapter::tests::compound_deny_wins_over_allow ... ok
[INFO] [stdout] test adapter::tests::audit_log_not_written_for_non_auditable_endpoint ... ok
[INFO] [stdout] test adapter::tests::handle_no_match_exit_code_propagated::case_1_exit_0 ... ok
[INFO] [stdout] test adapter::tests::handle_error_exit_code_propagated::case_2_exit_1 ... ok
[INFO] [stdout] test adapter::tests::no_match_with_defaults_allow_calls_handle_action_with_allow ... ok
[INFO] [stdout] test adapter::tests::rule_match_calls_handle_action::case_1_allow ... ok
[INFO] [stdout] test adapter::tests::audit_log_records_deny_action ... ok
[INFO] [stdout] test adapter::tests::audit_log_records_default_action_for_no_match ... ok
[INFO] [stdout] test adapter::tests::rule_match_calls_handle_action::case_3_ask ... ok
[INFO] [stdout] test adapter::tests::rule_match_calls_handle_action::case_2_deny ... ok
[INFO] [stdout] test adapter::tests::audit_log_written_for_auditable_endpoint_on_match ... ok
[INFO] [stdout] test adapter::tests::matched_rule_with_sandbox_overrides_defaults_sandbox ... ok
[INFO] [stdout] test adapter::tests::audit_log_records_compound_command_evaluations ... ok
[INFO] [stdout] test audit::filter::tests::parse_absolute::case_1_date_only ... ok
[INFO] [stdout] test adapter::tests::no_match_calls_handle_action_with_ask::case_2_empty_config ... ok
[INFO] [stdout] test audit::filter::tests::parse_invalid::case_1_empty ... ok
[INFO] [stdout] test adapter::tests::single_extracted_subcommand_evaluates_simplified_form::case_1_for_loop_with_echo ... ok
[INFO] [stdout] test audit::filter::tests::parse_invalid::case_4_bad_unit ... ok
[INFO] [stdout] test audit::filter::tests::parse_overflow_returns_error::case_1_large_days ... ok
[INFO] [stdout] test audit::filter::tests::parse_invalid::case_5_multibyte_suffix ... ok
[INFO] [stdout] test adapter::tests::run_with_default_options_behaves_like_run ... ok
[INFO] [stdout] test adapter::tests::single_extracted_subcommand_evaluates_simplified_form::case_2_for_loop_no_matching_rule ... ok
[INFO] [stdout] test audit::filter::tests::parse_overflow_returns_error::case_2_large_hours ... ok
[INFO] [stdout] test audit::filter::tests::parse_relative::case_1_minutes ... ok
[INFO] [stdout] test audit::filter::tests::default_filter_has_limit_50 ... ok
[INFO] [stdout] test audit::filter::tests::parse_overflow_returns_error::case_3_large_minutes ... ok
[INFO] [stdout] test adapter::tests::single_extracted_subcommand_verbose_logs_extraction ... ok
[INFO] [stdout] test audit::filter::tests::parse_relative::case_3_days ... ok
[INFO] [stdout] test audit::formatter::tests::test_action_str::case_3_ask ... ok
[INFO] [stdout] test audit::filter::tests::parse_invalid::case_2_invalid ... ok
[INFO] [stdout] test audit::formatter::tests::test_action_str::case_4_default ... ok
[INFO] [stdout] test audit::filter::tests::parse_relative::case_2_hours ... ok
[INFO] [stdout] test audit::filter::tests::parse_absolute::case_2_iso_8601 ... ok
[INFO] [stdout] test audit::filter::tests::resolve::case_1_relative ... ok
[INFO] [stdout] test audit::formatter::tests::test_escape_control_chars::case_4_with_tab ... ok
[INFO] [stdout] test audit::formatter::tests::test_print_table_empty ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::extract_command_returns_expected::case_2_single_arg ... ok
[INFO] [stdout] test audit::filter::tests::resolve::case_2_absolute ... ok
[INFO] [stdout] test audit::formatter::tests::test_action_str::case_1_allow ... ok
[INFO] [stdout] test audit::formatter::tests::test_action_str::case_2_deny ... ok
[INFO] [stdout] test audit::formatter::tests::test_escape_control_chars::case_1_no_control_chars ... ok
[INFO] [stdout] test audit::formatter::tests::test_escape_control_chars::case_2_with_newline ... ok
[INFO] [stdout] test audit::formatter::tests::test_escape_control_chars::case_3_with_cr ... ok
[INFO] [stdout] test audit::log_rotator::tests::parse_log_date_cases::case_2_invalid_prefix ... ok
[INFO] [stdout] test audit::log_rotator::tests::cleanup_nonexistent_dir_is_ok ... ok
[INFO] [stdout] test audit::log_rotator::tests::parse_log_date_cases::case_4_invalid_date ... ok
[INFO] [stdout] test audit::formatter::tests::test_print_tsv_escapes_newlines ... ok
[INFO] [stdout] test audit::formatter::tests::test_print_table_has_header_and_rows ... ok
[INFO] [stdout] test audit::log_rotator::tests::current_log_path_contains_today_date ... ok
[INFO] [stdout] test audit::model::tests::action_to_serializable::case_1_allow ... ok
[INFO] [stdout] test audit::formatter::tests::test_print_table_multibyte_truncation_does_not_panic ... ok
[INFO] [stdout] test audit::formatter::tests::test_print_tsv_format ... ok
[INFO] [stdout] test audit::log_rotator::tests::parse_log_date_cases::case_1_valid ... ok
[INFO] [stdout] test audit::log_rotator::tests::parse_log_date_cases::case_3_invalid_suffix ... ok
[INFO] [stdout] test audit::model::tests::action_to_serializable::case_2_deny_with_details ... ok
[INFO] [stdout] test audit::model::tests::action_to_serializable::case_3_deny_without_details ... ok
[INFO] [stdout] test audit::model::tests::action_to_serializable::case_4_ask_with_message ... ok
[INFO] [stdout] test audit::model::tests::action_to_serializable::case_5_ask_without_message ... ok
[INFO] [stdout] test audit::log_rotator::tests::cleanup_deletes_old_files ... ok
[INFO] [stdout] test audit::model::tests::serializable_action_roundtrip::case_1_allow_action ... ok
[INFO] [stdout] test audit::model::tests::serializable_action_roundtrip::case_2_deny_action_with_details ... ok
[INFO] [stdout] test audit::model::tests::serializable_action_roundtrip::case_3_deny_action_without_details ... ok
[INFO] [stdout] test audit::model::tests::audit_entry_omits_legacy_top_level_keys ... ok
[INFO] [stdout] test audit::model::tests::serializable_action_roundtrip::case_4_ask_action_with_message ... ok
[INFO] [stdout] test audit::model::tests::audit_entry_roundtrip::case_1_single_command ... ok
[INFO] [stdout] test audit::model::tests::audit_entry_roundtrip::case_2_compound ... ok
[INFO] [stdout] test audit::model::tests::command_evaluation_serialises::case_1_primary_minimal ... ok
[INFO] [stdout] test audit::model::tests::command_evaluation_serialises::case_2_env_argv_redirects_pipe ... ok
[INFO] [stdout] test audit::model::tests::legacy_single_audit_entry_deserialises_into_one_primary_evaluation ... ok
[INFO] [stdout] test audit::model::tests::legacy_compound_audit_entry_deserialises_into_command_evaluations ... ok
[INFO] [stdout] test audit::model::tests::rule_match_info_to_serializable::case_1_allow_rule ... ok
[INFO] [stdout] test audit::model::tests::rule_match_info_to_serializable::case_2_deny_rule ... ok
[INFO] [stdout] test audit::model::tests::rule_match_info_to_serializable::case_3_ask_rule ... ok
[INFO] [stdout] test audit::model::tests::serializable_action_roundtrip::case_5_ask_action_without_message ... ok
[INFO] [stdout] test audit::model::tests::serializable_rule_match_roundtrip::case_1_single_rule ... ok
[INFO] [stdout] test audit::model::tests::serializable_action_roundtrip::case_6_default_action ... ok
[INFO] [stdout] test audit::reader::tests::read_nonexistent_dir ... ok
[INFO] [stdout] test audit::reader::tests::read_empty_dir ... ok
[INFO] [stdout] test audit::reader::tests::filter_by_action ... ok
[INFO] [stdout] test audit::reader::tests::filter_by_command_pattern ... ok
[INFO] [stdout] test audit::filter::tests::parse_invalid::case_3_no_unit ... ok
[INFO] [stdout] test audit::reader::tests::filter_by_cwd_no_false_prefix_match ... ok
[INFO] [stdout] test audit::reader::tests::since_filters_date_files ... ok
[INFO] [stdout] test audit::reader::tests::skip_corrupted_lines ... ok
[INFO] [stdout] test audit::reader::tests::malformed_timestamp_excluded_by_time_filter ... ok
[INFO] [stdout] test audit::model::tests::serializable_rule_match_roundtrip::case_2_empty_rules ... ok
[INFO] [stdout] test audit::reader::tests::filter_by_cwd_root_directory ... ok
[INFO] [stdout] test audit::reader::tests::skip_empty_lines ... ok
[INFO] [stdout] test audit::reader::tests::limit_entries ... ok
[INFO] [stdout] test audit::reader::tests::filter_by_cwd ... ok
[INFO] [stdout] test config::cache::tests::cache_key_is_deterministic::case_1_same_input ... ok
[INFO] [stdout] test config::cache::tests::cache_key_differs_for_different_refs::case_2_different_repos ... ok
[INFO] [stdout] test config::cache::tests::cache_key_is_hex_sha256 ... ok
[INFO] [stdout] test audit::writer::tests::write_failure_on_invalid_path ... ok
[INFO] [stdout] test audit::reader::tests::filter_by_since ... ok
[INFO] [stdout] test config::cache::tests::cache_key_differs_for_different_refs::case_1_different_versions ... ok
[INFO] [stdout] test config::cache::tests::acquire_lock_creates_file ... ok
[INFO] [stdout] test audit::reader::tests::read_across_multiple_date_files ... ok
[INFO] [stdout] test audit::writer::tests::write_produces_valid_jsonl ... ok
[INFO] [stdout] test audit::writer::tests::write_skips_when_disabled ... ok
[INFO] [stdout] test audit::writer::tests::write_creates_jsonl_file ... ok
[INFO] [stdout] test audit::reader::tests::read_entries_sorted_ascending ... ok
[INFO] [stdout] test config::dirs::tests::cache_dir::case_1_xdg_set ... ok
[INFO] [stdout] test config::dirs::tests::cache_dir::case_4_both_unset ... ok
[INFO] [stdout] test config::dirs::tests::cache_dir::case_3_xdg_unset_falls_back ... ok
[INFO] [stdout] test config::dirs::tests::cache_dir::case_2_xdg_empty_falls_back ... ok
[INFO] [stdout] test config::cache::tests::stale_when_no_metadata ... ok
[INFO] [stdout] test config::dirs::tests::config_dir::case_2_xdg_empty_falls_back ... ok
[INFO] [stdout] test config::dirs::tests::config_dir::case_1_xdg_set ... ok
[INFO] [stdout] test config::dirs::tests::config_dir::case_3_xdg_unset_falls_back ... ok
[INFO] [stdout] test config::dirs::tests::config_dir::case_4_both_unset ... ok
[INFO] [stdout] test config::dirs::tests::home_dir::case_2_empty ... ok
[INFO] [stdout] test config::error::tests::config_error_from_io_error ... ok
[INFO] [stdout] test config::dirs::tests::home_dir::case_1_set ... ok
[INFO] [stdout] test config::dirs::tests::home_dir::case_3_unset ... ok
[INFO] [stdout] test config::error::tests::config_error_from_preset_error ... ok
[INFO] [stdout] test config::error::tests::anyhow_error_chain_config_to_preset ... ok
[INFO] [stdout] test config::error::tests::config_error_io_has_source ... ok
[INFO] [stdout] test config::error::tests::config_error_into_anyhow ... ok
[INFO] [stdout] test config::error::tests::config_error_validation_multiple ... ok
[INFO] [stdout] test config::error::tests::config_error_preset_has_source ... ok
[INFO] [stdout] test config::error::tests::config_error_validation_single ... ok
[INFO] [stdout] test config::error::tests::config_error_from_yaml_error ... ok
[INFO] [stdout] test config::error::tests::preset_error_circular_reference ... ok
[INFO] [stdout] test config::error::tests::config_error_yaml_has_source ... ok
[INFO] [stdout] test config::error::tests::preset_error_display::case_2 ... ok
[INFO] [stdout] test audit::writer::tests::write_creates_parent_directory ... ok
[INFO] [stdout] test config::error::tests::preset_error_display::case_1 ... ok
[INFO] [stdout] test config::cache::tests::miss_when_no_cache_dir ... ok
[INFO] [stdout] test config::cache::tests::immutable_never_stale ... ok
[INFO] [stdout] test config::cache::tests::metadata_roundtrip ... ok
[INFO] [stdout] test config::error::tests::preset_error_display::case_3 ... ok
[INFO] [stdout] test config::error::tests::preset_error_display::case_4 ... ok
[INFO] [stdout] test config::error::tests::preset_error_display::case_5 ... ok
[INFO] [stdout] test config::error::tests::preset_error_implements_std_error ... ok
[INFO] [stdout] test config::error::tests::preset_error_into_anyhow ... ok
[INFO] [stdout] test audit::writer::tests::write_rotation_cleans_old_files ... ok
[INFO] [stdout] test config::cache::tests::stale_when_ttl_exceeded ... ok
[INFO] [stdout] test config::cache::tests::lock_is_released_on_drop ... ok
[INFO] [stdout] test audit::writer::tests::write_appends_multiple_entries ... ok
[INFO] [stdout] test config::cache::tests::hit_when_fresh_cache ... ok
[INFO] [stdout] test config::cache::tests::lock_path_is_beside_cache_dir ... ok
[INFO] [stdout] test config::loader::tests::load_audit_global_only_ignores_local_overrides ... ok
[INFO] [stdout] test config::loader::tests::load_audit_absent_returns_none ... ok
[INFO] [stdout] test config::error::tests::preset_error_local_not_found ... ok
[INFO] [stdout] test config::error::tests::preset_error_max_extends_depth_exceeded ... ok
[INFO] [stdout] test config::loader::tests::load_global_local_override::case_2_global_local_yaml_fallback ... ok
[INFO] [stdout] test config::loader::tests::load_global_yml_takes_priority_over_yaml::case_2_global_local_override ... ok
[INFO] [stdout] test config::loader::tests::load_global_only::case_2_yaml_fallback ... ok
[INFO] [stdout] test config::loader::tests::load_local_only::case_1_yml ... ok
[INFO] [stdout] test config::loader::tests::load_finds_config_in_parent_directory ... ok
[INFO] [stdout] test config::loader::tests::load_finds_config_and_local_override_in_parent ... ok
[INFO] [stdout] test config::loader::tests::load_global_local_override::case_1_global_local_yml ... ok
[INFO] [stdout] test config::loader::tests::load_local_override_only_without_project_config ... ok
[INFO] [stdout] test config::loader::tests::load_audit_stripped_from_extended_project_config ... ok
[INFO] [stdout] test config::loader::tests::load_local_override::case_2_local_yaml_fallback ... ok
[INFO] [stdout] test config::loader::tests::load_local_override::case_1_local_yml ... ok
[INFO] [stdout] test config::loader::tests::load_local_override_parse_error ... ok
[INFO] [stdout] test config::loader::tests::load_global_yml_takes_priority_over_yaml::case_1_global ... ok
[INFO] [stdout] test config::loader::tests::load_local_only::case_2_yaml_fallback ... ok
[INFO] [stdout] test config::loader::tests::load_merges_global_and_local ... ok
[INFO] [stdout] test config::loader::tests::load_no_config_files_returns_default ... ok
[INFO] [stdout] test config::loader::tests::load_project_yml_takes_priority_over_yaml::case_2_project_local_override ... ok
[INFO] [stdout] test config::loader::tests::load_no_config_in_ancestor_returns_default ... ok
[INFO] [stdout] test config::loader::tests::load_nearest_config_wins ... ok
[INFO] [stdout] test config::loader::tests::load_merges_definitions ... ok
[INFO] [stdout] test config::loader::tests::load_stops_at_home_dir ... ok
[INFO] [stdout] test config::loader::tests::load_project_overrides_global_local_override ... ok
[INFO] [stdout] test config::loader::tests::load_merges_all_three_layers ... ok
[INFO] [stdout] test config::loader::tests::load_project_yml_takes_priority_over_yaml::case_1_project ... ok
[INFO] [stdout] test config::loader::tests::load_merges_all_four_layers ... ok
[INFO] [stdout] test config::loader::tests::load_validation_error_propagated ... ok
[INFO] [stdout] test config::model::tests::action_and_pattern_returns_correct_action::case_1_deny ... ok
[INFO] [stdout] test config::model::tests::action_and_pattern_returns_correct_action::case_2_allow ... ok
[INFO] [stdout] test config::model::tests::action_and_pattern_returns_none_when_all_three_set ... ok
[INFO] [stdout] test config::model::tests::action_kind_default_is_ask ... ok
[INFO] [stdout] test config::model::tests::action_kind_ordering ... ok
[INFO] [stdout] test config::loader::tests::load_yaml_parse_error::case_1_global_parse_error ... ok
[INFO] [stdout] test config::model::tests::audit_config_is_enabled::case_1_enabled ... ok
[INFO] [stdout] test config::model::tests::audit_config_is_enabled::case_2_disabled ... ok
[INFO] [stdout] test config::model::tests::audit_config_default ... ok
[INFO] [stdout] test config::model::tests::audit_config_is_enabled::case_3_default_when_none ... ok
[INFO] [stdout] test config::model::tests::action_and_pattern_returns_correct_action::case_3_ask ... ok
[INFO] [stdout] test config::model::tests::audit_config_resolved_path_custom ... ok
[INFO] [stdout] test config::loader::tests::load_yaml_parse_error::case_2_local_parse_error ... ok
[INFO] [stdout] test config::model::tests::merge_audit_both_none ... ok
[INFO] [stdout] test config::model::tests::expand_sandbox_path_refs_errors::case_1_undefined_name ... ok
[INFO] [stdout] test config::model::tests::expand_sandbox_path_refs_success::case_1_single_path_ref ... ok
[INFO] [stdout] test config::model::tests::expand_sandbox_path_refs_errors::case_2_no_paths_defined ... ok
[INFO] [stdout] test config::model::tests::merge_audit_override_wins ... ok
[INFO] [stdout] test config::model::tests::merge_audit_override_only ... ok
[INFO] [stdout] test config::model::tests::merge_audit_partial_override_preserves_base_fields ... ok
[INFO] [stdout] test config::model::tests::action_and_pattern_returns_none_when_multiple_set ... ok
[INFO] [stdout] test config::model::tests::merge_base_only ... ok
[INFO] [stdout] test config::model::tests::action_and_pattern_returns_none_when_none_set ... ok
[INFO] [stdout] test config::model::tests::merge_audit_base_preserved ... ok
[INFO] [stdout] test config::model::tests::expand_sandbox_path_refs_success::case_2_mixed_concrete_and_ref ... ok
[INFO] [stdout] test config::model::tests::merge_defaults_action_overridden ... ok
[INFO] [stdout] test config::model::tests::merge_defaults_partial_override ... ok
[INFO] [stdout] test config::model::tests::merge_both_default ... ok
[INFO] [stdout] test config::model::tests::merge_defaults_sandbox_overridden ... ok
[INFO] [stdout] test config::model::tests::merge_definitions_paths_appended_per_key ... ok
[INFO] [stdout] test config::model::tests::merge_definitions_paths_deduplicates ... ok
[INFO] [stdout] test config::model::tests::merge_definitions_sandbox_per_key ... ok
[INFO] [stdout] test config::model::tests::merge_definitions_wrappers_appended ... ok
[INFO] [stdout] test config::model::tests::merge_override_only ... ok
[INFO] [stdout] test config::model::tests::merge_strictest_network::case_1_both_allowed ... ok
[INFO] [stdout] test config::model::tests::merge_strictest_network::case_2_one_denied ... ok
[INFO] [stdout] test config::model::tests::merge_extends_appended ... ok
[INFO] [stdout] test config::model::tests::merge_strictest_network::case_3_both_denied ... ok
[INFO] [stdout] test config::model::tests::merge_definitions_vars_override_only ... ok
[INFO] [stdout] test config::model::tests::merge_definitions_vars_base_only ... ok
[INFO] [stdout] test config::model::tests::merge_rules_appended ... ok
[INFO] [stdout] test config::model::tests::merge_strictest_deny_union ... ok
[INFO] [stdout] test config::model::tests::merge_strictest_empty_returns_none ... ok
[INFO] [stdout] test config::model::tests::merge_strictest_network::case_4_none_defaults_to_allowed ... ok
[INFO] [stdout] test config::model::tests::merge_strictest_no_fs_preserves_other ... ok
[INFO] [stdout] test config::model::tests::merge_strictest_writable_intersection::case_1_non_empty_intersection ... ok
[INFO] [stdout] test config::model::tests::merge_strictest_single_preset ... ok
[INFO] [stdout] test config::model::tests::merge_strictest_writable_intersection::case_2_empty_intersection ... ok
[INFO] [stdout] test config::model::tests::parse_defaults_action::case_3 ... ok
[INFO] [stdout] test config::model::tests::parse_defaults_with_sandbox ... ok
[INFO] [stdout] test config::model::tests::parse_audit_full ... ok
[INFO] [stdout] test config::model::tests::parse_definitions_paths ... ok
[INFO] [stdout] test config::model::tests::parse_audit_partial ... ok
[INFO] [stdout] test config::model::tests::parse_audit_absent_returns_none ... ok
[INFO] [stdout] test config::model::tests::parse_definitions_vars_multiple_vars ... ok
[INFO] [stdout] test config::model::tests::parse_definitions_vars_default_type_is_literal ... ok
[INFO] [stdout] test config::loader::tests::load_global_local_override_parse_error ... ok
[INFO] [stdout] test config::model::tests::parse_definitions_vars_literal ... ok
[INFO] [stdout] test config::model::tests::parse_definitions_sandbox ... ok
[INFO] [stdout] test config::model::tests::parse_definitions_string_lists::case_1_wrappers ... ok
[INFO] [stdout] test config::model::tests::parse_defaults_action::case_1 ... ok
[INFO] [stdout] test config::model::tests::parse_defaults_action::case_2 ... ok
[INFO] [stdout] test config::model::tests::parse_error::case_1_invalid_yaml ... ok
[INFO] [stdout] test config::model::tests::parse_error::case_3_invalid_action ... ok
[INFO] [stdout] test config::model::tests::parse_extends ... ok
[INFO] [stdout] test config::model::tests::parse_empty_string_returns_empty_config ... ok
[INFO] [stdout] test config::model::tests::parse_definitions_vars_path ... ok
[INFO] [stdout] test config::model::tests::parse_empty_config ... ok
[INFO] [stdout] test config::model::tests::parse_error::case_2_wrong_type ... ok
[INFO] [stdout] test config::model::tests::parse_rule_attributes::case_6_when_and_message ... ok
[INFO] [stdout] test config::model::tests::parse_rule_attributes::case_5_message_and_fix ... ok
[INFO] [stdout] test config::model::tests::rotation_config_resolved_retention_days::case_1_custom ... ok
[INFO] [stdout] test config::model::tests::rotation_config_resolved_retention_days::case_2_default_when_none ... ok
[INFO] [stdout] test config::model::tests::parse_rule_attributes::case_4_sandbox ... ok
[INFO] [stdout] test config::model::tests::parse_single_rule::case_1_deny ... ok
[INFO] [stdout] test config::model::tests::parse_single_rule::case_2_allow ... ok
[INFO] [stdout] test config::model::tests::parse_single_rule::case_3_ask ... ok
[INFO] [stdout] test config::model::tests::validate_collects_all_errors ... ok
[INFO] [stdout] test config::model::tests::parse_multiple_rules ... ok
[INFO] [stdout] test config::model::tests::validate_accepts_valid_vars ... ok
[INFO] [stdout] test config::model::tests::parse_rule_all_optional_fields_none_by_default ... ok
[INFO] [stdout] test config::model::tests::validate_allow_with_valid_sandbox ... ok
[INFO] [stdout] test config::model::tests::validate_ask_with_valid_sandbox ... ok
[INFO] [stdout] test config::model::tests::validate_errors_on_rule_with_no_action ... ok
[INFO] [stdout] test config::model::tests::validate_config_without_rules ... ok
[INFO] [stdout] test config::model::tests::validate_errors_on_undefined_sandbox_name ... ok
[INFO] [stdout] test config::model::tests::parse_rule_attributes::case_1_when ... ok
[INFO] [stdout] test config::model::tests::validate_errors_on_deny_with_sandbox ... ok
[INFO] [stdout] test config::model::tests::parse_rule_attributes::case_2_message ... ok
[INFO] [stdout] test config::model::tests::parse_full_config ... ok
[INFO] [stdout] test config::model::tests::parse_rule_attributes::case_3_fix_suggestion ... ok
[INFO] [stdout] test config::model::tests::schema_is_up_to_date ... ok
[INFO] [stdout] test config::model::tests::validate_errors_on_rule_with_multiple_actions ... ok
[INFO] [stdout] test config::path_resolver::tests::normalize_logical_cases::case_2_dot ... ok
[INFO] [stdout] test config::path_resolver::tests::normalize_logical_cases::case_4_multiple_dots ... ok
[INFO] [stdout] test config::path_resolver::tests::normalize_logical_cases::case_3_dotdot ... ok
[INFO] [stdout] test config::path_resolver::tests::normalize_logical_cases::case_5_multiple_dotdots ... ok
[INFO] [stdout] test config::path_resolver::tests::normalize_logical_cases::case_6_dotdot_at_root ... ok
[INFO] [stdout] test config::model::tests::validate_valid_config ... ok
[INFO] [stdout] test config::model::tests::validate_rejects_path_ref_in_definitions_paths ... ok
[INFO] [stdout] test config::path_resolver::tests::normalize_logical_cases::case_1_identity ... ok
[INFO] [stdout] test config::path_resolver::tests::resolve_config_paths_resolves_definitions ... ok
[INFO] [stdout] test config::model::tests::validate_rejects_placeholder_in_definitions_vars::case_2_path_ref ... ok
[INFO] [stdout] test config::path_resolver::tests::resolve_path_cases::case_1_absolute_simple ... ok
[INFO] [stdout] test config::path_resolver::tests::resolve_path_cases::case_2_absolute_with_dot ... ok
[INFO] [stdout] test config::path_resolver::tests::resolve_config_paths_preserves_path_refs ... ok
[INFO] [stdout] test config::model::tests::validate_includes_rule_index_in_error ... ok
[INFO] [stdout] test config::path_resolver::tests::resolve_path_cases::case_3_absolute_with_dotdot ... ok
[INFO] [stdout] test config::model::tests::validate_rejects_placeholder_in_definitions_vars::case_1_var_ref ... ok
[INFO] [stdout] test config::model::tests::validate_errors_on_undefined_sandbox_name_with_empty_definitions ... ok
[INFO] [stdout] test config::path_resolver::tests::resolve_path_cases::case_4_relative_simple ... ok
[INFO] [stdout] test config::path_resolver::tests::resolve_path_cases::case_8_relative_glob_nested ... ok
[INFO] [stdout] test config::path_resolver::tests::resolve_tilde_cases::case_2_tilde_only ... ok
[INFO] [stdout] test config::path_resolver::tests::resolve_tilde_cases::case_1_tilde_subpath ... ok
[INFO] [stdout] test config::path_resolver::tests::resolve_path_cases::case_5_relative_dot ... ok
[INFO] [stdout] test config::path_resolver::tests::resolve_path_cases::case_6_relative_dotdot ... ok
[INFO] [stdout] test config::path_resolver::tests::resolve_path_cases::case_7_relative_glob ... ok
[INFO] [stdout] test config::path_resolver::tests::resolve_tilde_cases::case_3_tilde_with_dotdot ... ok
[INFO] [stdout] test config::path_resolver::tests::resolve_path_cases::case_9_absolute_glob ... ok
[INFO] [stdout] test config::path_resolver::tests::resolve_tilde_home_not_set::case_1_tilde_prefix ... ok
[INFO] [stdout] test config::path_resolver::tests::resolve_tilde_home_not_set::case_2_tilde_only ... ok
[INFO] [stdout] test config::preset::tests::circular_reference_self ... ok
[INFO] [stdout] test config::preset::tests::circular_reference_direct ... ok
[INFO] [stdout] test config::preset::tests::error_on_home_not_set ... ok
[INFO] [stdout] test config::preset::tests::circular_reference_back_to_root ... ok
[INFO] [stdout] test config::preset::tests::error_on_path_traversal_relative::case_2_dot_dot_nested ... ok
[INFO] [stdout] test config::preset::tests::extends_stripped_from_resolved_config ... ok
[INFO] [stdout] test config::preset::tests::circular_reference_three_level ... ok
[INFO] [stdout] test config::preset::tests::loaded_preset_config_is_valid ... ok
[INFO] [stdout] test config::preset::tests::local_only_extends_chain_preserves_tests ... ok
[INFO] [stdout] test config::preset::tests::no_extends_returns_config_as_is ... ok
[INFO] [stdout] test config::preset::tests::error_message_contains_cycle_chain ... ok
[INFO] [stdout] test config::preset::tests::preset_base_dir_for_github_shorthand::case_1_github_no_path ... ok
[INFO] [stdout] test config::preset::tests::error_on_nonexistent_absolute_path ... ok
[INFO] [stdout] test config::preset::tests::diamond_extends_resolved ... ok
[INFO] [stdout] test config::preset::tests::error_on_nonexistent_file ... ok
[INFO] [stdout] test config::preset::tests::error_on_invalid_yaml_in_preset ... ok
[INFO] [stdout] test config::preset::tests::error_on_path_traversal_home ... ok
[INFO] [stdout] test config::preset::tests::error_on_path_traversal_relative::case_1_dot_dot_relative ... ok
[INFO] [stdout] test config::preset::tests::preset_base_dir_for_github_shorthand::case_3_github_nested_path ... ok
[INFO] [stdout] test config::preset::tests::preset_base_dir_for_github_shorthand::case_2_github_simple_path ... ok
[INFO] [stdout] test config::preset::tests::remote_preset_inline_tests_stripped ... ok
[INFO] [stdout] test config::preset::tests::relative_extends_follows_symlink_outside_base_dir ... ok
[INFO] [stdout] test config::preset::tests::resolve_relative_path::case_1_relative_dot_slash ... ok
[INFO] [stdout] test config::preset::tests::local_intermediate_then_remote_strips_only_remote_descendants ... ok
[INFO] [stdout] test config::preset::tests::nested_extends_resolved ... ok
[INFO] [stdout] test config::preset::tests::local_preset_inline_tests_preserved ... ok
[INFO] [stdout] test config::preset::tests::remote_preset_with_local_extends_strips_nested_tests ... ok
[INFO] [stdout] test config::preset::tests::resolve_absolute_path ... ok
[INFO] [stdout] test config::preset::tests::resolve_relative_path::case_2_relative_no_dot ... ok
[INFO] [stdout] test config::preset_remote::tests::commit_sha_detection::case_1_valid_sha ... ok
[INFO] [stdout] test config::preset::tests::resolve_home_directory_path ... ok
[INFO] [stdout] test config::preset_remote::tests::commit_sha_detection::case_6_tag ... ok
[INFO] [stdout] test config::preset_remote::tests::commit_sha_detection::case_3_too_short ... ok
[INFO] [stdout] test config::preset_remote::tests::commit_sha_detection::case_4_too_long ... ok
[INFO] [stdout] test config::preset_remote::tests::commit_sha_detection::case_5_non_hex ... ok
[INFO] [stdout] test config::preset_remote::tests::commit_sha_detection::case_7_empty ... ok
[INFO] [stdout] test config::preset_remote::tests::github_to_url::case_1_basic ... ok
[INFO] [stdout] test config::preset_remote::tests::github_to_url::case_2_with_dash ... ok
[INFO] [stdout] test config::preset_remote::tests::commit_sha_triggers_fetch_and_checkout_after_clone ... ok
[INFO] [stdout] test config::preset_remote::tests::cache_hit_skips_lock ... ok
[INFO] [stdout] test config::preset_remote::tests::commit_sha_detection::case_2_all_digits ... ok
[INFO] [stdout] test config::preset_remote::tests::git_url_commit_sha_fetches_then_checkouts ... ok
[INFO] [stdout] test config::preset_remote::tests::lock_acquired_for_cache_miss ... ok
[INFO] [stdout] test config::preset_remote::tests::clone_miss_calls_clone_with_branch ... ok
[INFO] [stdout] test config::preset_remote::tests::clone_failure_no_cache_returns_error ... ok
[INFO] [stdout] test config::preset_remote::tests::cache_hit_skips_clone ... ok
[INFO] [stdout] test config::preset_remote::tests::missing_runok_yml_returns_error ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_02_github_tag ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_01_github_latest ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_06_github_with_path_and_tag ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_03_github_sha ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_07_github_with_nested_path_and_sha ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_04_github_branch_name ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_05_github_with_path ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_08_https_url_no_ref ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_09_https_url_with_ref ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_10_ssh_url_no_ref ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_12_ssh_url_no_git_suffix_with_ref ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_11_ssh_url_with_ref ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_13_https_url_with_userinfo ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_14_https_url_with_userinfo_and_ref ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_16_local_absolute ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference_errors::case_02_empty_owner ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference_errors::case_03_empty_repo ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference_errors::case_05_empty_path_with_version ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference_errors::case_04_empty_version ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_15_local_relative ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference_errors::case_06_path_traversal ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference_errors::case_07_path_traversal_no_ref ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference_errors::case_10_trailing_slash ... ok
[INFO] [stdout] test config::preset::tests::user_config_keeps_tests_when_remote_extends_chain_is_stripped ... ok
[INFO] [stdout] test config::preset_remote::tests::nonexistent_path_preset_returns_descriptive_error ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference_errors::case_08_absolute_path ... ok
[INFO] [stdout] test config::preset_remote::tests::read_preset_from_dir_reads_yaml ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_17_local_home ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference_errors::case_01_no_slash ... ok
[INFO] [stdout] test config::preset_remote::tests::read_preset_from_dir_reads_yml ... ok
[INFO] [stdout] test config::preset_remote::tests::lock_acquired_for_stale_cache ... ok
[INFO] [stdout] test config::preset_remote::tests::read_preset_from_dir_with_path::case_1_yml ... ok
[INFO] [stdout] test config::preset_remote::tests::read_preset_from_dir_with_path::case_2_yaml ... ok
[INFO] [stdout] test config::preset_remote::tests::read_preset_from_dir_with_path_not_found ... ok
[INFO] [stdout] test config::preset_remote::tests::multiple_path_presets_from_same_repo ... ok
[INFO] [stdout] test config::model::tests::rotation_config_default ... ok
[INFO] [stdout] test config::preset_remote::tests::path_based_preset_loads_correct_file ... ok
[INFO] [stdout] test config::preset_remote::tests::path_based_preset_with_version ... ok
[INFO] [stdout] test config::required_version::tests::check_required_runok_version_ok::case_1_none_always_ok ... ok
[INFO] [stdout] test config::required_version::tests::check_required_runok_version_ok::case_2_exact_match ... ok
[INFO] [stdout] test config::required_version::tests::check_required_runok_version_ok::case_3_ge_match ... ok
[INFO] [stdout] test config::required_version::tests::check_required_runok_version_ok::case_4_caret_match ... ok
[INFO] [stdout] test config::preset_remote::tests::stale_cache_fetch_failure_uses_old_cache ... ok
[INFO] [stdout] test config::required_version::tests::check_required_runok_version_invalid_requirement ... ok
[INFO] [stdout] test config::required_version::tests::check_required_runok_version_unsupported::case_1_too_old ... ok
[INFO] [stdout] test config::required_version::tests::check_required_runok_version_unsupported::case_2_upper_bound_violated ... ok
[INFO] [stdout] test config::required_version::tests::current_runok_version_from_cases::case_1_release ... ok
[INFO] [stdout] test config::required_version::tests::current_runok_version_from_cases::case_2_release_with_v_patch ... ok
[INFO] [stdout] test config::required_version::tests::current_runok_version_from_cases::case_3_nightly_short ... ok
[INFO] [stdout] test config::preset_remote::tests::path_based_preset_stale_cache_fetches_then_reads_path ... ok
[INFO] [stdout] test config::required_version::tests::current_runok_version_from_cases::case_4_nightly_bare ... ok
[INFO] [stdout] test config::required_version::tests::current_runok_version_from_cases::case_5_unparseable ... ok
[INFO] [stdout] test config::required_version::tests::nightly_satisfies_any_lower_bound ... ok
[INFO] [stdout] test config::required_version::tests::nightly_violates_strict_upper_bound ... ok
[INFO] [stdout] test config::required_version::tests::check_required_runok_version_ok::case_5_range_inclusive ... ok
[INFO] [stdout] test exec::command_executor::tests::build_deny_paths::case_1_empty_deny ... ok
[INFO] [stdout] test exec::command_executor::tests::build_deny_paths::case_2_glob_pattern ... ok
[INFO] [stdout] test exec::command_executor::tests::build_deny_paths::case_3_recursive_glob ... ok
[INFO] [stdout] test exec::command_executor::tests::build_deny_paths::case_4_nonexistent_path ... ok
[INFO] [stdout] test exec::command_executor::tests::build_deny_paths::case_5_duplicate_deduped ... ok
[INFO] [stdout] test exec::command_executor::tests::build_single_writable ... ok
[INFO] [stdout] test exec::command_executor::tests::build_multiple_writable ... ok
[INFO] [stdout] test exec::command_executor::tests::build_duplicate_writable_deduped ... ok
[INFO] [stdout] test exec::command_executor::tests::build_tilde_writable ... ok
[INFO] [stdout] test exec::command_executor::tests::build_deny_paths::case_6_multiple_deny ... ok
[INFO] [stdout] test exec::command_executor::tests::build_tilde_deny ... ok
[INFO] [stdout] test exec::command_executor::tests::build_writable_and_deny_together ... ok
[INFO] [stdout] test exec::command_executor::tests::command_input_is_compound::case_1_argv ... ok
[INFO] [stdout] test exec::command_executor::tests::command_input_program::case_2_shell ... ok
[INFO] [stdout] test exec::command_executor::tests::command_input_is_compound::case_2_shell ... ok
[INFO] [stdout] test exec::command_executor::tests::command_input_program::case_1_argv ... ok
[INFO] [stdout] test exec::command_executor::tests::command_input_program::case_3_empty_argv ... ok
[INFO] [stdout] test exec::command_executor::tests::determine_exec_mode::case_3_compound_no_sandbox ... ok
[INFO] [stdout] test exec::command_executor::tests::determine_exec_mode::case_1_single_no_sandbox ... ok
[INFO] [stdout] test exec::command_executor::tests::determine_exec_mode::case_4_compound_with_sandbox ... ok
[INFO] [stdout] test exec::command_executor::tests::exec_argv_with_mock_sandbox_nonzero ... ok
[INFO] [stdout] test exec::command_executor::tests::build_rejects_nonexistent_writable_path ... ok
[INFO] [stdout] test exec::command_executor::tests::exec_empty_argv_returns_not_found ... ok
[INFO] [stdout] test exec::command_executor::tests::determine_exec_mode::case_2_single_with_sandbox ... ok
[INFO] [stdout] test exec::command_executor::tests::exec_argv_with_mock_sandbox_returns_exit_code ... ok
[INFO] [stdout] test exec::command_executor::tests::exec_argv_with_sandbox_calls_sandbox_executor ... ok
[INFO] [stdout] test exec::command_executor::tests::exec_shell_with_mock_sandbox_passes_sh_c ... ok
[INFO] [stdout] test exec::command_executor::tests::exec_shell_with_sandbox_calls_sandbox_executor ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference_errors::case_09_dot_segment ... ok
[INFO] [stdout] test config::preset_remote::tests::stale_refresh_incompatible_candidate_keeps_working_tree ... ok
[INFO] [stdout] test exec::command_executor::tests::exec_shell_returns_correct_exit_code::case_3_custom_exit_code ... ok
[INFO] [stdout] test exec::command_executor::tests::exec_signal_termination_returns_128_plus_signal ... ok
[INFO] [stdout] test config::preset_remote::tests::stale_cache_fetch_success ... ok
[INFO] [stdout] test exec::command_executor::tests::exec_shell_returns_correct_exit_code::case_2_failure ... ok
[INFO] [stdout] test config::preset_remote::tests::stale_refresh_compatible_candidate_updates_working_tree ... ok
[INFO] [stderr] sh: 1: __nonexistent_command_12345__: not found
[INFO] [stdout] test config::preset_remote::tests::stale_cache_latest_checkouts_fetch_head ... ok
[INFO] [stdout] test exec::command_executor::tests::expand_tilde_cases::case_2_tilde_only ... ok
[INFO] [stdout] hello
[INFO] [stdout] test exec::command_executor::tests::expand_tilde_cases::case_1_tilde_prefix ... ok
[INFO] [stdout] test exec::command_executor::tests::expand_tilde_cases::case_4_tilde_in_middle ... ok
[INFO] [stdout] test exec::command_executor::tests::expand_tilde_cases::case_3_no_tilde ... ok
[INFO] [stdout] test exec::command_executor::tests::from_merged_basic ... ok
[INFO] [stdout] test exec::command_executor::tests::from_merged_glob_and_tilde_deny ... ok
[INFO] [stdout] test exec::command_executor::tests::linux_sandbox_executor_new_succeeds ... ok
[INFO] [stdout] test exec::command_executor::tests::exec_shell_returns_correct_exit_code::case_4_pipeline ... ok
[INFO] [stdout] test exec::command_executor::tests::merge_network_allowed::case_1_both_true ... ok
[INFO] [stdout] test exec::command_executor::tests::exit_code_from_status_cases::case_3_custom_exit ... ok
[INFO] [stdout] test exec::command_executor::tests::exec_shell_returns_correct_exit_code::case_1_success ... ok
[INFO] [stdout] test exec::command_executor::tests::merge_network_allowed::case_3_second_false ... ok
[INFO] [stdout] test exec::command_executor::tests::merge_network_allowed::case_2_first_false ... ok
[INFO] [stdout] test exec::command_executor::tests::exec_not_found_returns_error ... ok
[INFO] [stdout] test exec::command_executor::tests::merge_network_allowed::case_4_both_false ... ok
[INFO] [stdout] test exec::command_executor::tests::exit_code_from_status_cases::case_1_success ... ok
[INFO] [stdout] test exec::command_executor::tests::merge_read_only_subpaths::case_2_overlapping_deduped ... ok
[INFO] [stdout] test exec::command_executor::tests::merge_read_only_subpaths::case_3_one_empty ... ok
[INFO] [stdout] test exec::command_executor::tests::merge_read_only_subpaths::case_1_disjoint ... ok
[INFO] [stdout] test exec::command_executor::tests::merge_read_only_subpaths::case_4_both_empty ... ok
[INFO] [stdout] test exec::command_executor::tests::merge_single_returns_clone ... ok
[INFO] [stdout] test exec::command_executor::tests::merge_writable_roots::case_1_partial_overlap ... ok
[INFO] [stdout] test exec::command_executor::tests::merge_writable_roots::case_2_identical ... ok
[INFO] [stdout] test exec::command_executor::tests::merge_writable_roots::case_4_both_empty ... ok
[INFO] [stdout] test exec::command_executor::tests::merge_writable_roots::case_3_no_overlap_two_non_empty ... ok
[INFO] [stdout] test exec::command_executor::tests::merge_writable_roots::case_5_one_empty_one_non_empty ... ok
[INFO] [stdout] test exec::command_executor::tests::merge_writable_roots::case_7_three_way_one_empty ... ok
[INFO] [stdout] test exec::command_executor::tests::merge_writable_roots::case_8_three_way_conflict ... ok
[INFO] [stdout] test exec::command_executor::tests::merge_writable_roots::case_6_three_way_success ... ok
[INFO] [stdout] test exec::command_executor::tests::validate_command::case_3_empty ... ok
[INFO] [stdout] test exec::command_executor::tests::merge_empty_returns_error ... ok
[INFO] [stdout] test exec::error::tests::exec_error_display::case_1 ... ok
[INFO] [stdout] test exec::error::tests::exec_error_display::case_2 ... ok
[INFO] [stdout] test exec::command_executor::tests::from_merged_all_empty ... ok
[INFO] [stdout] test exec::command_executor::tests::exit_code_from_signal ... ok
[INFO] [stdout] test exec::command_executor::tests::sandbox_policy_deserialize_from_json ... ok
[INFO] [stdout] test exec::command_executor::tests::sandbox_policy_round_trip_serialization ... ok
[INFO] [stdout] test exec::command_executor::tests::validate_command::case_2_nonexistent ... ok
[INFO] [stdout] test exec::command_executor::tests::from_merged_rejects_nonexistent_writable ... ok
[INFO] [stdout] test exec::command_executor::tests::linux_sandbox_executor_is_supported ... ok
[INFO] [stdout] test exec::error::tests::exec_error_from_io_error ... ok
[INFO] [stdout] test exec::error::tests::exec_error_into_anyhow ... ok
[INFO] [stdout] test exec::error::tests::extension_error_display::case_2 ... ok
[INFO] [stdout] test exec::error::tests::extension_error_from_io_error ... ok
[INFO] [stdout] test exec::error::tests::extension_error_implements_std_error ... ok
[INFO] [stdout] test exec::error::tests::sandbox_error_display::case_4 ... ok
[INFO] [stdout] test exec::error::tests::exec_error_io_has_source ... ok
[INFO] [stdout] test exec::command_executor::tests::validate_command::case_1_exists ... ok
[INFO] [stdout] test exec::error::tests::extension_error_display::case_1 ... ok
[INFO] [stdout] test exec::error::tests::sandbox_error_display::case_1 ... ok
[INFO] [stdout] test exec::error::tests::sandbox_error_display::case_5 ... ok
[INFO] [stdout] test exec::error::tests::sandbox_error_into_anyhow ... ok
[INFO] [stdout] test exec::error::tests::extension_error_into_anyhow ... ok
[INFO] [stdout] test exec::extension_runner::tests::error_falls_back_to_ask::case_1_timeout ... ok
[INFO] [stdout] test exec::command_executor::tests::exit_code_from_status_cases::case_2_failure ... ok
[INFO] [stdout] test exec::extension_runner::tests::error_falls_back_to_ask::case_2_spawn ... ok
[INFO] [stdout] test exec::error::tests::sandbox_error_from_io_error ... ok
[INFO] [stdout] test exec::extension_runner::tests::parse_command::case_1_simple ... ok
[INFO] [stdout] test exec::extension_runner::tests::parse_command::case_2_no_args ... ok
[INFO] [stdout] test exec::extension_runner::tests::parse_invalid_response::case_1_invalid_json ... ok
[INFO] [stdout] test exec::extension_runner::tests::parse_invalid_response::case_4_jsonrpc_error ... ok
[INFO] [stdout] test exec::extension_runner::tests::parse_command::case_3_with_flags ... ok
[INFO] [stdout] test exec::extension_runner::tests::parse_invalid_response::case_2_missing_result ... ok
[INFO] [stdout] test exec::extension_runner::tests::integration_spawn_failure_falls_back_to_ask ... ok
[INFO] [stdout] test exec::extension_runner::tests::parse_invalid_response::case_3_missing_status ... ok
[INFO] [stdout] test exec::extension_runner::tests::parse_valid_response::case_1_deny ... ok
[INFO] [stdout] test exec::extension_runner::tests::parse_valid_response::case_2_allow ... ok
[INFO] [stdout] test exec::extension_runner::tests::sanitize_for_terminal_cases::case_1_plain_text ... ok
[INFO] [stdout] test exec::extension_runner::tests::sanitize_for_terminal_cases::case_2_strips_ansi_escape ... ok
[INFO] [stdout] test exec::extension_runner::tests::sanitize_for_terminal_cases::case_3_preserves_newline ... ok
[INFO] [stdout] test exec::extension_runner::tests::parse_valid_response::case_3_ask ... ok
[INFO] [stdout] test exec::extension_runner::tests::sanitize_for_terminal_cases::case_4_preserves_tab ... ok
[INFO] [stdout] test exec::extension_runner::tests::sanitize_for_terminal_cases::case_5_strips_null ... ok
[INFO] [stdout] test exec::extension_runner::tests::sanitize_for_terminal_cases::case_6_strips_bell ... ok
[INFO] [stdout] test exec::extension_runner::tests::serialize_jsonrpc_request ... ok
[INFO] [stdout] test exec::extension_runner::tests::success_maps_to_correct_action::case_1_allow ... ok
[INFO] [stdout] test exec::extension_runner::tests::success_maps_to_correct_action::case_3_ask ... ok
[INFO] [stdout] test exec::extension_runner::tests::serialize_request_with_empty_fields ... ok
[INFO] [stdout] test exec::extension_runner::tests::validate_spawn_error_for_nonexistent_command ... ok
[INFO] [stdout] test exec::extension_runner::tests::unknown_status_falls_back_to_ask ... ok
[INFO] [stdout] test audit::reader::tests::filter_by_until ... ok
[INFO] [stdout] test audit::reader::tests::filter_combined ... ok
[INFO] [stdout] test config::loader::tests::load_global_only::case_1_yml ... ok
[INFO] [stdout] test config::model::tests::merge_definitions_vars_override_per_key ... ok
[INFO] [stdout] test exec::extension_runner::tests::success_maps_to_correct_action::case_2_deny ... ok
[INFO] [stdout] test exec::error::tests::sandbox_error_display::case_2 ... ok
[INFO] [stdout] test exec::error::tests::sandbox_error_display::case_3 ... ok
[INFO] [stdout] test exec::glob_utils::tests::expand_braces_cases::case_01_simple ... ok
[INFO] [stdout] test exec::extension_runner::tests::verbose_mode_logs_error::case_1_timeout_verbose ... ok
[INFO] [stdout] test exec::extension_runner::tests::verbose_mode_logs_error::case_2_spawn_verbose ... ok
[INFO] [stdout] test exec::extension_runner::tests::error_falls_back_to_ask::case_3_invalid_response ... ok
[INFO] [stdout] test exec::extension_runner::tests::verbose_mode_logs_error::case_3_invalid_response_verbose ... ok
[INFO] [stdout] test exec::glob_utils::tests::expand_braces_cases::case_02_with_prefix ... ok
[INFO] [stdout] test exec::glob_utils::tests::expand_braces_cases::case_03_with_suffix ... ok
[INFO] [stdout] test exec::glob_utils::tests::expand_braces_cases::case_04_with_both ... ok
[INFO] [stdout] test exec::glob_utils::tests::expand_braces_cases::case_05_three_alt ... ok
[INFO] [stdout] test exec::glob_utils::tests::expand_braces_cases::case_06_nested ... ok
[INFO] [stdout] test exec::glob_utils::tests::expand_braces_cases::case_08_glob_with_brace ... ok
[INFO] [stdout] test exec::glob_utils::tests::expand_braces_cases::case_09_unmatched_open ... ok
[INFO] [stdout] test exec::glob_utils::tests::expand_braces_cases::case_07_no_braces ... ok
[INFO] [stdout] test exec::glob_utils::tests::expand_braces_cases::case_10_empty_alternative ... ok
[INFO] [stdout] test exec::glob_utils::tests::expand_braces_cases::case_11_leading_empty_alternative ... ok
[INFO] [stdout] test config::preset_remote::tests::stale_refresh_incompatible_extends_child_rejects_parent ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::bwrap_args_contain_chdir ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::bwrap_args_contain_writable_bind ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::bwrap_args_contain_unshare_all ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::bwrap_args_die_with_parent ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::bwrap_args_contain_command ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::bwrap_args_no_tmpfs_when_child_of_tmp_is_writable ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::bwrap_args_no_tmpfs_when_parent_is_writable ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::bwrap_args_no_tmpfs_when_tmp_is_writable ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::bwrap_args_proc_and_dev ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::bwrap_args_share_net::case_2_network_allowed ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::bwrap_args_share_net::case_1_network_blocked ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::bwrap_args_glob_no_matches_produces_no_ro_bind ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::bwrap_args_tmpfs_when_tmp_not_writable ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::bwrap_args_expand_relative_glob ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::is_glob_pattern_cases::case_1_star ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::is_glob_pattern_cases::case_2_double_star ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::is_glob_pattern_cases::case_4_bracket ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::is_glob_pattern_cases::case_3_question_mark ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::bwrap_args_expand_absolute_glob ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::bwrap_args_expand_brace_glob ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::is_glob_pattern_cases::case_5_brace ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::is_glob_pattern_cases::case_6_literal ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::is_glob_pattern_cases::case_7_absolute_literal ... ok
[INFO] [stdout] test exec::linux_sandbox::landlock_sandbox::tests::build_rules_from_policy::case_1_basic_policy ... ok
[INFO] [stdout] test exec::extension_runner::tests::validate_invalid_json_from_process ... ok
[INFO] [stdout] test exec::linux_sandbox::seccomp_sandbox::tests::apply_seccomp_skips_filter_when_network_allowed ... ok
[INFO] [stdout] test exec::linux_sandbox::seccomp_sandbox::tests::build_filter_can_convert_to_bpf ... ok
[INFO] [stdout] test exec::linux_sandbox::seccomp_sandbox::tests::build_filter_succeeds ... ok
[INFO] [stdout] test exec::linux_sandbox::seccomp_sandbox::tests::describe_rules_network_blocked_has_socket_rule ... ok
[INFO] [stdout] test exec::linux_sandbox::landlock_sandbox::tests::build_rules_from_policy::case_2_no_writable ... ok
[INFO] [stdout] test exec::linux_sandbox::landlock_sandbox::tests::build_rules_from_policy::case_3_multiple_writable ... ok
[INFO] [stdout] test exec::linux_sandbox::tests::exec_command_rejects_empty_command ... ok
[INFO] [stdout] test exec::linux_sandbox::tests::exec_command_rejects_nul_byte_in_argument ... ok
[INFO] [stdout] test exec::linux_sandbox::seccomp_sandbox::tests::describe_rules_count::case_1_network_blocked ... ok
[INFO] [stdout] test exec::linux_sandbox::seccomp_sandbox::tests::describe_rules_count::case_2_network_allowed ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::classify_deny_path_cases::case_01_absolute_path ... ok
[INFO] [stdout] test exec::extension_runner::tests::integration_success_does_not_fallback ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::classify_deny_path_cases::case_05_relative_dotenv ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::bwrap_args_contain_stage2_subcommand_and_flag ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::classify_deny_path_cases::case_02_absolute_dir ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::bwrap_args_contain_ro_bind_root ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::classify_deny_path_cases::case_08_glob_deep ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::classify_deny_path_cases::case_03_relative_dotfile ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::classify_deny_path_cases::case_07_glob_absolute ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::classify_deny_path_cases::case_04_relative_secrets ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::classify_deny_path_cases::case_06_glob_relative ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::classify_deny_path_cases::case_09_glob_single_star ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::classify_deny_path_cases::case_10_glob_question_mark ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::classify_deny_path_cases::case_11_glob_char_class ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::classify_deny_path_cases::case_12_glob_brace ... ok
[INFO] [stdout] test exec::linux_sandbox::tests::exit_code_from_status_returns_code::case_3_exit_42 ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_02_star_in_middle ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_07_double_star_prefix ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_03_double_star ... ok
[INFO] [stdout] test exec::extension_runner::tests::integration_invalid_response_falls_back_to_ask ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_01_single_star ... ok
[INFO] [stdout] test exec::linux_sandbox::tests::exit_code_from_status_returns_code::case_2_failure ... ok
[INFO] [stdout] test exec::linux_sandbox::tests::exit_code_from_status_returns_code::case_1_success ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_04_double_star_nested ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_05_double_star_with_suffix ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_14_char_class ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_12_question_mark ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_08_double_star_trailing ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_16_char_class_multiple ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_06_bare_double_star ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_19_brace_empty_alternative ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_20_brace_nested ... ok
[INFO] [stdout] test exec::extension_runner::tests::validate_with_real_process::case_1_deny ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_15_char_class_negation ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_17_brace_expansion ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_09_double_star_multiple ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_22_brace_with_glob ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_13_multiple_question_marks ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_25_parens_escaped ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_24_plus_escaped ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_26_pipe_escaped ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_27_unmatched_brace ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_18_brace_with_path ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_21_brace_dot_in_alt ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_28_empty_pattern ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_23_dots_escaped ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_10_no_glob ... ok
[INFO] [stdout] test exec::extension_runner::tests::validate_with_real_process::case_2_allow ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_11_dotfile ... ok
[INFO] [stdout] test exec::macos_sandbox::tests::build_command_preserves_original_args ... ok
[INFO] [stdout] test exec::macos_sandbox::tests::generate_sbpl::case_02_with_writable_roots ... ok
[INFO] [stdout] test exec::macos_sandbox::tests::generate_sbpl::case_05_full_policy ... ok
[INFO] [stdout] test exec::macos_sandbox::tests::generate_sbpl::case_06_relative_deny_resolved ... ok
[INFO] [stdout] test exec::macos_sandbox::tests::generate_sbpl::case_08_glob_absolute_deny ... ok
[INFO] [stdout] test exec::macos_sandbox::tests::generate_sbpl::case_09_glob_relative_deny ... ok
[INFO] [stdout] test exec::macos_sandbox::tests::sbpl_escape::case_2_with_spaces ... ok
[INFO] [stdout] test exec::macos_sandbox::tests::sbpl_escape::case_1_simple ... ok
[INFO] [stdout] test exec::macos_sandbox::tests::sbpl_escape::case_3_with_backslash ... ok
[INFO] [stdout] test exec::macos_sandbox::tests::sbpl_escape::case_4_with_quotes ... ok
[INFO] [stdout] test init::claude_code::tests::convert_permissions_converts_prefix_match ... ok
[INFO] [stdout] test exec::macos_sandbox::tests::generate_sbpl::case_10_multiple_roots_with_relative_deny ... ok
[INFO] [stdout] test init::claude_code::tests::convert_permissions_basic ... ok
[INFO] [stdout] test init::claude_code::tests::convert_permissions_empty ... ok
[INFO] [stdout] test init::claude_code::tests::convert_permissions_skips_non_bash ... ok
[INFO] [stdout] test exec::macos_sandbox::tests::is_supported_returns_bool ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_29_star_and_question ... ok
[INFO] [stdout] test exec::macos_sandbox::tests::build_command_basic ... ok
[INFO] [stdout] test init::claude_code::tests::read_permissions_no_files ... ok
[INFO] [stdout] test init::claude_code::tests::register_hook_creates_new_file ... ok
[INFO] [stdout] test init::claude_code::tests::read_permissions_from_settings_json ... ok
[INFO] [stdout] test init::claude_code::tests::convert_permissions_escapes_single_quotes ... ok
[INFO] [stdout] test init::claude_code::tests::register_hook_skips_duplicate::case_1_current_format ... ok
[INFO] [stdout] test init::claude_code::tests::remove_permissions_no_file ... ok
[INFO] [stdout] test init::claude_code::tests::register_hook_skips_duplicate::case_3_string_format ... ok
[INFO] [stdout] test init::claude_code::tests::register_hook_skips_duplicate::case_2_legacy_format ... ok
[INFO] [stdout] test init::claude_code::tests::register_hook_preserves_existing_keys ... ok
[INFO] [stdout] test init::claude_code::tests::remove_permissions_noop_when_empty ... ok
[INFO] [stdout] test init::claude_code::tests::test_convert_bash_pattern::case_3_prefix_match ... ok
[INFO] [stdout] test init::claude_code::tests::register_hook_skips_duplicate::case_4_string_hooks_in_object ... ok
[INFO] [stdout] test init::claude_code::tests::test_convert_bash_pattern::case_4_prefix_match_nested ... ok
[INFO] [stdout] test init::claude_code::tests::remove_permissions_removes_key_when_only_bash ... ok
[INFO] [stdout] test init::claude_code::tests::test_detect_conflicting_hooks::case_01_empty ... ok
[INFO] [stdout] test init::claude_code::tests::test_detect_conflicting_hooks::case_02_runok_only ... ok
[INFO] [stdout] test init::claude_code::tests::test_detect_conflicting_hooks::case_03_other_bash_matcher ... ok
[INFO] [stdout] test init::claude_code::tests::remove_permissions_also_cleans_settings_local ... ok
[INFO] [stdout] test init::claude_code::tests::test_convert_bash_pattern::case_5_colon_in_middle ... ok
[INFO] [stdout] test init::claude_code::tests::test_detect_conflicting_hooks::case_04_no_matcher_field ... ok
[INFO] [stdout] test init::claude_code::tests::test_detect_conflicting_hooks::case_06_mixed_runok_and_conflicting ... ok
[INFO] [stdout] test init::claude_code::tests::test_detect_conflicting_hooks::case_07_string_entry_non_runok ... ok
[INFO] [stdout] test init::claude_code::tests::test_detect_conflicting_hooks::case_08_string_entry_runok ... ok
[INFO] [stdout] test init::claude_code::tests::test_detect_conflicting_hooks::case_10_multiple_conflicts ... ok
[INFO] [stdout] test init::claude_code::tests::test_entry_has_runok_hook::case_3_plain_string ... ok
[INFO] [stdout] test init::claude_code::tests::test_entry_has_runok_hook::case_2_legacy_format ... ok
[INFO] [stdout] test init::claude_code::tests::test_entry_has_runok_hook::case_4_string_hooks_in_object ... ok
[INFO] [stdout] test init::claude_code::tests::test_entry_has_runok_hook::case_5_no_match_different_command ... ok
[INFO] [stdout] test init::claude_code::tests::test_entry_has_runok_hook::case_1_current_format ... ok
[INFO] [stdout] test init::claude_code::tests::test_entry_has_runok_hook::case_6_no_match_different_string ... ok
[INFO] [stdout] test init::claude_code::tests::test_parse_permission_entry::case_1_bash_simple ... ok
[INFO] [stdout] test init::claude_code::tests::test_parse_permission_entry::case_2_bash_wildcard ... ok
[INFO] [stdout] test init::claude_code::tests::test_parse_permission_entry::case_3_read_tool ... ok
[INFO] [stdout] test init::claude_code::tests::test_entry_has_runok_hook::case_7_no_match_empty_object ... ok
[INFO] [stdout] test init::claude_code::tests::test_detect_conflicting_hooks::case_09_no_matcher_with_runok_present ... ok
[INFO] [stdout] test init::claude_code::tests::test_parse_permission_entry::case_4_no_parens ... ok
[INFO] [stdout] test init::config_gen::tests::boilerplate_has_expected_content ... ok
[INFO] [stdout] test init::claude_code::tests::test_parse_permission_entry::case_5_empty_parens ... ok
[INFO] [stdout] test init::config_gen::tests::build_config_content_with_empty_rules ... ok
[INFO] [stdout] test init::config_gen::tests::build_config_content_with_rules ... ok
[INFO] [stdout] test init::config_gen::tests::write_config_creates_directory_and_file ... ok
[INFO] [stdout] test init::config_gen::tests::build_config_content_without_rules ... ok
[INFO] [stdout] test init::error::tests::json_error_display ... ok
[INFO] [stdout] test init::claude_code::tests::test_detect_conflicting_hooks::case_05_non_bash_matcher ... ok
[INFO] [stdout] test init::prompt::tests::auto_yes_select_returns_default::case_2_select_default_one ... ok
[INFO] [stdout] test init::error::tests::error_display::case_1_io_error ... ok
[INFO] [stdout] test init::wizard::preview::tests::normalize_json_reformats_indentation ... ok
[INFO] [stdout] test init::config_gen::tests::write_config_overwrites_existing ... ok
[INFO] [stdout] test init::prompt::tests::auto_yes_confirm_always_returns_true::case_2_auto_yes_default_false ... ok
[INFO] [stdout] test init::prompt::tests::auto_yes_select_returns_default::case_1_select_default_zero ... ok
[INFO] [stdout] test init::prompt::tests::auto_yes_confirm_always_returns_true::case_1_auto_yes_default_true ... ok
[INFO] [stdout] test init::wizard::preview::tests::preview_register_hook_adds_hook_entry ... ok
[INFO] [stdout] test init::wizard::preview::tests::preview_register_hook_returns_none_for_legacy_format ... ok
[INFO] [stdout] test init::wizard::preview::tests::preview_register_hook_empty_input ... ok
[INFO] [stdout] test init::wizard::preview::tests::preview_register_hook_returns_none_when_already_registered ... ok
[INFO] [stdout] test init::wizard::preview::tests::preview_register_hook_returns_none_for_string_format ... ok
[INFO] [stdout] test init::wizard::preview::tests::preview_remove_permissions_strips_only_bash_entries ... ok
[INFO] [stdout] test init::claude_code::tests::test_convert_bash_pattern::case_1_plain ... ok
[INFO] [stdout] test init::wizard::preview::tests::preview_remove_permissions_empty_input ... ok
[INFO] [stdout] test init::wizard::tests::wizard_batch_decline_skips_all_changes ... ok
[INFO] [stdout] test init::wizard::tests::wizard_no_scope_select_project ... ok
[INFO] [stdout] test init::wizard::tests::wizard_batch_accept_applies_all_changes ... ok
[INFO] [stdout] test init::claude_code::tests::test_convert_bash_pattern::case_2_glob ... ok
[INFO] [stdout] test exec::macos_sandbox::tests::generate_sbpl::case_04_network_denied ... ok
[INFO] [stdout] test exec::macos_sandbox::tests::generate_sbpl::case_07_relative_deny_no_writable_roots ... ok
[INFO] [stdout] test init::wizard::tests::wizard_hook_already_registered_no_prompt_needed ... ok
[INFO] [stdout] test init::wizard::tests::wizard_no_scope_select_user ... ok
[INFO] [stdout] test init::wizard::tests::wizard_claude_dir_without_settings_json_registers_hook_only ... ok
[INFO] [stdout] test init::wizard::tests::wizard_no_scope_with_auto_yes_selects_user ... ok
[INFO] [stdout] test init::wizard::tests::wizard_no_warning_when_no_conflicting_hooks ... ok
[INFO] [stdout] test migrate::sandbox_fs::tests::test_migrate_sandbox_fs::case_01_writable_only ... ok
[INFO] [stdout] test init::claude_code::tests::remove_permissions_removes_only_bash_entries ... ok
[INFO] [stdout] test migrate::sandbox_fs::tests::test_migrate_sandbox_fs::case_02_writable_and_deny_inline ... ok
[INFO] [stdout] test migrate::sandbox_fs::tests::test_migrate_sandbox_fs::case_04_deny_only ... ok
[INFO] [stdout] test init::wizard::tests::wizard_project_scope_creates_config ... ok
[INFO] [stdout] test migrate::sandbox_fs::tests::test_migrate_sandbox_fs::case_06_preserves_comments ... ok
[INFO] [stdout] test migrate::sandbox_fs::tests::test_migrate_sandbox_fs::case_07_no_changes_needed ... ok
[INFO] [stdout] test init::wizard::tests::wizard_user_scope_creates_config ... ok
[INFO] [stdout] test migrate::sandbox_fs::tests::test_migrate_sandbox_fs::case_08_non_sandbox_deny_untouched ... ok
[INFO] [stdout] test init::wizard::tests::wizard_project_scope_auto_yes_migrates_and_applies ... ok
[INFO] [stdout] test migrate::sandbox_fs::tests::test_migrate_sandbox_fs::case_10_comment_between_blocks ... ok
[INFO] [stdout] test init::wizard::tests::wizard_warns_when_conflicting_hooks_exist ... ok
[INFO] [stdout] test init::wizard::tests::wizard_project_scope_never_registers_hook ... ok
[INFO] [stdout] test init::wizard::tests::wizard_warns_after_registering_hook_with_existing_conflicting_entry ... ok
[INFO] [stdout] test migrate::sandbox_fs::tests::test_migrate_sandbox_fs::case_09_blank_line_between_blocks ... ok
[INFO] [stdout] test init::wizard::tests::wizard_project_scope_migrates_when_opted_in ... ok
[INFO] [stdout] test migrate::sandbox_fs::tests::test_migrate_sandbox_fs::case_11_with_network ... ok
[INFO] [stdout] test migrate::sandbox_fs::tests::test_migrate_sandbox_fs::case_12_deny_before_writable ... ok
[INFO] [stdout] test rules::alias_expander::tests::cycle_through_two_aliases_is_broken ... ok
[INFO] [stdout] test init::wizard::tests::wizard_user_scope_with_claude_code_integration ... ok
[INFO] [stdout] test rules::alias_expander::tests::expands_leading_alias_token ... ok
[INFO] [stdout] test rules::alias_expander::tests::no_aliases_passthrough ... ok
[INFO] [stdout] test rules::alias_expander::tests::pattern_syntax_prefix_never_matches_an_alias ... ok
[INFO] [stdout] test rules::alias_expander::tests::depth_limit_caps_runaway ... ok
[INFO] [stdout] test rules::alias_expander::tests::recursive_expansion_chain_order ... ok
[INFO] [stdout] test rules::alias_expander::tests::multi_pattern_alias_produces_multiple_expansions ... ok
[INFO] [stdout] test rules::alias_expander::tests::single_string_alias_form_works ... ok
[INFO] [stdout] test rules::alias_expander::tests::expands_no_tail ... ok
[INFO] [stdout] test rules::alias_expander::tests::split_leading_token_cases::case_1_single_token ... ok
[INFO] [stdout] test rules::alias_expander::tests::split_leading_token_cases::case_2_with_tail ... ok
[INFO] [stdout] test rules::alias_expander::tests::split_leading_token_cases::case_3_leading_spaces ... ok
[INFO] [stdout] test rules::alias_expander::tests::split_leading_token_cases::case_5_whitespace_only ... ok
[INFO] [stdout] test rules::alias_expander::tests::split_leading_token_cases::case_6_optional_group_prefix ... ok
[INFO] [stdout] test rules::alias_expander::tests::split_leading_token_cases::case_8_pipe_alternation_prefix ... ok
[INFO] [stdout] test rules::alias_expander::tests::split_leading_token_cases::case_7_var_ref_prefix ... ok
[INFO] [stdout] test rules::alias_expander::tests::split_leading_token_cases::case_4_empty ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_bare_variable_assignment_returns_empty ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_errors::case_1_empty ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_errors::case_2_syntax_error ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_metadata_declaration_and_unset_argv::case_1_export_assignment ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_metadata_declaration_and_unset_argv::case_2_declare_flag_assignment ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_metadata_compound_per_branch_argv ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_metadata_declaration_and_unset_argv::case_3_unset_multiple ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_metadata_env_argv_single::case_1_no_prefix ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_metadata_env_with_command_substitution ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_metadata_env_argv_single::case_2_single_env_prefix ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_metadata_pipeline_argv_per_stage ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_metadata_env_argv_single::case_3_multiple_env_prefix ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_metadata_pipelines::case_1_simple_command ... ok
[INFO] [stdout] test init::wizard::tests::wizard_non_bash_permissions_only_skips_rule_conversion ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_metadata_env_argv_single::case_4_env_with_dquoted_value ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_metadata_env_argv_single::case_5_env_with_squoted_value ... ok
[INFO] [stdout] test exec::macos_sandbox::tests::generate_sbpl::case_01_minimal ... ok
[INFO] [stdout] test exec::macos_sandbox::tests::generate_sbpl::case_03_with_read_only_subpaths ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_metadata_pipelines::case_2_two_stage_pipeline ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_metadata_pipelines::case_4_nested_pipeline_in_subshell ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_metadata_redirect_does_not_appear_in_argv ... ok
[INFO] [stdout] test init::claude_code::tests::read_permissions_merges_both_files ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_metadata_pipelines::case_3_three_stage_pipeline ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_metadata_single::case_1_output_redirect ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_whitespace::case_1_extra_whitespace ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_metadata_single::case_5_herestring_redirect ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_metadata_single::case_2_append_redirect ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_whitespace::case_2_with_subshell ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_metadata_single::case_7_clobber_redirect ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_metadata_single::case_3_dup_redirect_2_to_1 ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_metadata_single::case_4_input_redirect ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_metadata_single::case_6_ampersand_redirect ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_comments::case_1_comment_before_command ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_comments::case_3_comment_only ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_comments::case_4_inline_comment_after_semicolon ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_compound_commands::case_2_pipeline ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_compound_commands::case_3_and ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_compound_commands::case_5_semicolon ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_compound_commands::case_7_logical_chain ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_compound_commands::case_4_or ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_compound_commands::case_1_single ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_compound_commands::case_6_mixed_operators ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_comments::case_2_comment_before_pipeline ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_structures::case_02_for_multiple_cmds ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_structures::case_03_for_cmd_substitution ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_structures::case_04_for_backtick_substitution ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_compound_commands::case_8_quotes_preserved ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_structures::case_05_while_simple ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_structures::case_13_case_statement ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_structures::case_12_case_cmd_sub_in_pattern ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_structures::case_08_if_then_else ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_structures::case_09_if_elif_else ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_structures::case_14_compound_statement ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_structures::case_15_function_def ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_structures::case_06_while_pipeline ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_structures::case_07_if_then ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_structures::case_10_for_quoted_cmd_sub_in_value ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_structures::case_16_negated_command ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_structures::case_17_negated_command_in_if ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_with_operators::case_1_list_with_for ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_with_operators::case_2_for_piped ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_with_operators::case_3_cmd_sub_in_command ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_with_operators::case_5_cmd_sub_in_quoted_string ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_with_operators::case_4_backtick_in_command ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_with_operators::case_6_cmd_sub_in_concatenation ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_with_operators::case_7_cmd_sub_in_single_quotes ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_declaration_and_unset_commands::case_1_standalone_export ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_with_operators::case_9_docker_env_with_cmd_sub ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_declaration_and_unset_commands::case_5_unset_in_subshell ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_env_prefix_commands::case_1_single_env_prefix ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_with_operators::case_8_backtick_sub_in_quoted_string ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_structures::case_18_negated_pipeline_in_subshell ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_declaration_and_unset_commands::case_4_export_in_and_list ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_structures::case_11_case_cmd_sub_in_match_value ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_env_prefix_commands::case_2_multiple_env_prefixes ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_env_prefix_commands::case_3_env_prefix_with_flags ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_in_compound::case_2_pipe_single_quoted_delimiter ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_in_compound::case_1_pipe_unquoted ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_env_prefix_commands::case_4_env_prefix_with_pipeline ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_env_prefix_commands::case_6_env_cmd_with_var_arg ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_env_prefix_commands::case_5_env_prefix_with_cmd_substitution ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_in_compound::case_3_pipe_double_quoted_delimiter ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_in_compound::case_5_pipe_tab_strip ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_in_compound::case_4_pipe_backslash_quoted_delimiter ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_in_compound::case_6_pipe_multiple_stages ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_in_compound::case_7_and_chain ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_pipe_inside_control_flow::case_1_if_body ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_in_compound::case_8_or_chain ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_pipe_metadata::case_2_and_with_right_pipeline ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_pipe_metadata::case_3_pipe_then_and_chain ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_pipe_inside_control_flow::case_2_while_body ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_pipe_metadata::case_5_heredoc_pipe_in_body_with_and_arm ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_pipe_metadata::case_4_pipe_chain_then_list_chain ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_quoted_delimiter_skips_body_substitutions::case_1_single_quoted_delimiter ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_quoted_delimiter_skips_body_substitutions::case_3_backslash_quoted_delimiter ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_quoted_delimiter_skips_body_substitutions::case_4_tab_strip_single_quoted_delimiter ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_inside_command_substitution_inside_double_quotes ... ok
[INFO] [stdout] test migrate::sandbox_fs::tests::test_migrate_sandbox_fs::case_03_writable_and_deny_block ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_pipe_then_and_chain ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_quoted_delimiter_skips_body_substitutions::case_5_mid_backslash_quoted_delimiter ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_unquoted_delimiter_keeps_body_command ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_pipe_inside_control_flow::case_3_for_body ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_pipe_metadata::case_1_three_stage_pipeline ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_with_semicolon_or_ampersand_is_syntax_error::case_1_semicolon_after_heredoc ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_quoted_delimiter_skips_body_substitutions::case_2_double_quoted_delimiter ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_with_semicolon_or_ampersand_is_syntax_error::case_2_ampersand_after_heredoc ... ok
[INFO] [stdout] test migrate::sandbox_fs::tests::test_migrate_sandbox_fs::case_05_writable_block_style ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_loop_kind::case_01_no_loop ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_loop_kind::case_05_nested_until_in_for ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_loop_kind::case_06_subshell_wraps_loop ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_loop_kind::case_02_until_body ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_loop_kind::case_07_pipeline_inside_loop ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_loop_kind::case_03_while_body ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_loop_kind::case_04_for_body ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_loop_kind::case_08_loop_followed_by_outside ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_loop_kind::case_09_for_value_substitution_bare ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_structures::case_01_for_simple ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_loop_kind::case_10_for_value_substitution_quoted ... ok
[INFO] [stdout] test rules::alias_expander::tests::non_alias_head_passthrough ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_declaration_and_unset_commands::case_3_declare_in_pipeline ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc_unquoted_delimiter_extracts_body_substitution ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_nested_control_structures::case_2_if_in_for ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_redirected_statements::case_02_append_to_file ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_redirected_statements::case_04_stderr_to_devnull ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_redirected_statements::case_03_stdin_from_file ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_redirected_statements::case_10_redirect_with_list ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_nested_control_structures::case_1_for_in_if ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_redirected_statements::case_11_redirect_in_compound ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_redirected_statements::case_08_herestring ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_redirected_statements::case_07_devnull_redirect ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_redirected_statements::case_09_redirect_with_pipeline ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_pipeline_into_heredoc ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_declaration_and_unset_commands::case_2_standalone_unset ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_redirected_statements::case_01_stdout_to_file ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_redirected_statements::case_05_stdout_and_stderr ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_redirected_statements::case_12_process_substitution_in_redirect ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_redirected_statements::case_13_command_substitution_in_redirect ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_redirected_statements::case_14_command_substitution_in_herestring ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_special_constructs::case_1_process_substitution ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_redirected_statements::case_06_fd_redirect_only ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_subshell::case_1_in_pipeline ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_subshell::case_2_in_logical_chain ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_subshell::case_3_deeply_nested ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_two_heredocs_in_pipeline_is_syntax_error ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_variable_assignments::case_1_assignment_then_command ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_variable_assignments::case_2_assignment_with_cmd_substitution ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_variable_assignments::case_3_assignment_with_cmd_substitution_and_command ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_variable_assignments::case_4_multiple_assignments ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_variable_assignments::case_5_assignment_with_backtick_substitution ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_variable_assignments::case_7_quoted_backtick_substitution ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_variable_assignments::case_8_process_substitution_in_assignment ... ok
[INFO] [stdout] test rules::command_parser::tests::parse_command_default_schema::case_2_multiple_args ... ok
[INFO] [stdout] test rules::command_parser::tests::parse_command_default_schema::case_1_no_flags ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_variable_assignments::case_6_quoted_cmd_substitution ... ok
[INFO] [stdout] test rules::command_parser::tests::parse_command_default_schema::case_4_long_flag ... ok
[INFO] [stdout] test rules::command_parser::tests::parse_command_default_schema::case_7_eq_non_flag ... ok
[INFO] [stdout] test rules::command_parser::tests::parse_command_default_schema::case_6_eq_long ... ok
[INFO] [stdout] test rules::command_parser::tests::parse_command_default_schema::case_5_eq_short ... ok
[INFO] [stdout] test rules::command_parser::tests::parse_command_with_schema::case_1_short ... ok
[INFO] [stdout] test rules::command_parser::tests::parse_command_mixed_flags_and_args ... ok
[INFO] [stdout] test rules::command_parser::tests::parse_command_with_schema::case_4_separate_bool_and_value ... ok
[INFO] [stdout] test rules::command_parser::tests::parse_command_with_schema::case_2_long ... ok
[INFO] [stdout] test rules::command_parser::tests::parse_command_with_schema::case_5_combined_short_flags ... ok
[INFO] [stdout] test rules::command_parser::tests::parse_command_with_schema::case_7_order_flag_last ... ok
[INFO] [stdout] test rules::command_parser::tests::parse_command_with_schema::case_6_order_flag_first ... ok
[INFO] [stdout] test rules::command_parser::tests::shell_quote_join_cases::case_5_flags_and_paths ... ok
[INFO] [stdout] test rules::command_parser::tests::shell_quote_join_cases::case_1_simple ... ok
[INFO] [stdout] test rules::command_parser::tests::shell_quote_join_cases::case_6_single_token ... ok
[INFO] [stdout] test rules::command_parser::tests::shell_quote_join_cases::case_4_single_quote_in_token ... ok
[INFO] [stdout] test rules::command_parser::tests::parse_command_default_schema::case_3_short_combined ... ok
[INFO] [stdout] test rules::command_parser::tests::parse_command_raw_tokens_preserved ... ok
[INFO] [stdout] test rules::command_parser::tests::split_top_level_commands_cases::case_01_single_line ... ok
[INFO] [stdout] test rules::command_parser::tests::split_top_level_commands_cases::case_03_semicolon_separator ... ok
[INFO] [stdout] test rules::command_parser::tests::split_top_level_commands_cases::case_02_three_separate_lines ... ok
[INFO] [stdout] test rules::command_parser::tests::split_top_level_commands_cases::case_05_and_or_kept_together ... ok
[INFO] [stdout] test rules::command_parser::tests::split_top_level_commands_cases::case_06_pipeline_kept_together ... ok
[INFO] [stdout] test rules::command_parser::tests::parse_command_empty_input ... ok
[INFO] [stdout] test rules::command_parser::tests::split_top_level_commands_cases::case_09_multiline_double_quoted_string ... ok
[INFO] [stdout] test rules::command_parser::tests::split_top_level_commands_cases::case_04_ampersand_background ... ok
[INFO] [stdout] test rules::command_parser::tests::split_top_level_commands_cases::case_10_skips_blank_lines ... ok
[INFO] [stdout] test rules::command_parser::tests::split_top_level_commands_cases::case_11_skips_comment_only_line ... ok
[INFO] [stdout] test rules::command_parser::tests::split_top_level_commands_cases::case_08_heredoc_inside_command_substitution ... ok
[INFO] [stdout] test rules::command_parser::tests::split_top_level_commands_cases::case_12_skips_comment_between_commands ... ok
[INFO] [stdout] test rules::command_parser::tests::split_top_level_commands_cases::case_13_trailing_inline_comment_terminated_by_newline ... ok
[INFO] [stdout] test rules::command_parser::tests::split_top_level_commands_errors::case_1_empty ... ok
[INFO] [stdout] test rules::command_parser::tests::split_top_level_commands_errors::case_2_whitespace_only ... ok
[INFO] [stdout] test rules::command_parser::tests::split_top_level_commands_errors::case_3_only_comments ... ok
[INFO] [stdout] test rules::command_parser::tests::split_top_level_commands_errors::case_4_unclosed_quote ... ok
[INFO] [stdout] test rules::command_parser::tests::shell_quote_join_cases::case_2_space_in_token ... ok
[INFO] [stdout] test rules::command_parser::tests::split_top_level_commands_cases::case_14_pipelines_split_around_comment_line ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_builtins::case_01_export_assignment ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_builtins::case_02_export_bare_name ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_builtins::case_04_export_flag_with_arg ... ok
[INFO] [stdout] test rules::command_parser::tests::split_top_level_commands_errors::case_5_unclosed_heredoc ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_builtins::case_03_export_flag ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_builtins::case_07_readonly_assignment ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_builtins::case_06_declare_flag_assignment ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_builtins::case_10_unset_single ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_builtins::case_13_export_quoted_value ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_builtins::case_08_local_assignment ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_builtins::case_11_unset_multiple ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_builtins::case_05_export_multiple ... ok
[INFO] [stdout] test rules::command_parser::tests::parse_command_with_schema::case_3_at_end ... ok
[INFO] [stdout] test rules::command_parser::tests::shell_quote_join_cases::case_3_empty_token ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_double_quotes::case_2_escaped_dquote ... ok
[INFO] [stdout] test rules::command_parser::tests::split_top_level_commands_cases::case_07_backslash_line_continuation ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_double_quotes::case_1_space_inside ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_double_quotes::case_5_escaped_dollar ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_double_quotes::case_6_empty_with_arg ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_double_quotes::case_3_escaped_backslash ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_equals_flags::case_2_long_eq ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_double_quotes::case_4_unknown_escape ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_errors::case_1_empty ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_builtins::case_09_typeset_assignment ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_equals_flags::case_1_short_dkey ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_errors::case_2_whitespace ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_errors::case_3_lone_continuation ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_errors::case_6_pipeline ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_errors::case_5_unclosed_dquote ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_extra_whitespace::case_2_tabs ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_groupings::case_5_dollar_substitution ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_errors::case_4_unclosed_squote ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_builtins::case_12_unsetenv_single ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_groupings::case_7_process_substitution ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_mixed_quoting::case_1_dquote_arg ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_groupings::case_3_subshell_multi_arg ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_groupings::case_4_nested_subshell ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_extra_whitespace::case_1_leading_and_trailing ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_groupings::case_2_subshell_pipeline ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_groupings::case_1_bare_subshell ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_groupings::case_6_backtick_substitution ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_errors::case_7_and_list ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_mixed_quoting::case_2_squote_arg ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_mixed_quoting::case_3_concatenated ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_single_quotes::case_2_embedded_quote ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_outside_escapes::case_1_space_escape ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_single_quotes::case_3_backslash_inside_raw ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_outside_escapes::case_2_quote_escape ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_single_quotes::case_1_with_space ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_simple::case_1_single_arg ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_simple::case_2_no_args ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_simple::case_3_flags_and_path ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_simple::case_4_single_word ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_simple::case_5_dquoted_command_name ... ok
[INFO] [stdout] test rules::error::tests::expr_error_display::case_2 ... ok
[INFO] [stdout] test rules::error::tests::expr_error_display::case_3 ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_simple::case_6_squoted_command_name ... ok
[INFO] [stdout] test rules::error::tests::command_parse_error_implements_std_error ... ok
[INFO] [stdout] test rules::error::tests::pattern_parse_error_display::case_1 ... ok
[INFO] [stdout] test rules::error::tests::pattern_parse_error_display::case_2 ... ok
[INFO] [stdout] test rules::error::tests::pattern_parse_error_display::case_3 ... ok
[INFO] [stdout] test rules::error::tests::expr_error_implements_std_error ... ok
[INFO] [stdout] test rules::error::tests::expr_error_display::case_1 ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_command_single_quotes::case_4_empty_with_arg ... ok
[INFO] [stdout] test rules::error::tests::anyhow_error_chain_preserves_source ... ok
[INFO] [stdout] test rules::error::tests::command_parse_error_display::case_1 ... ok
[INFO] [stdout] test rules::error::tests::pattern_parse_error_display::case_5 ... ok
[INFO] [stdout] test rules::error::tests::command_parse_error_display::case_2 ... ok
[INFO] [stdout] test rules::error::tests::pattern_parse_error_display::case_4 ... ok
[INFO] [stdout] test rules::error::tests::pattern_parse_error_implements_std_error ... ok
[INFO] [stdout] test rules::error::tests::pattern_parse_error_into_anyhow ... ok
[INFO] [stdout] test rules::error::tests::pattern_parse_error_is_debug ... ok
[INFO] [stdout] test rules::error::tests::rule_error_command_parse_has_source ... ok
[INFO] [stdout] test rules::error::tests::rule_error_from_command_parse_error ... ok
[INFO] [stdout] test rules::error::tests::rule_error_expr_eval_has_source ... ok
[INFO] [stdout] test rules::error::tests::rule_error_from_expr_error ... ok
[INFO] [stdout] test rules::error::tests::rule_error_from_pattern_parse_error ... ok
[INFO] [stdout] test rules::error::tests::rule_error_into_anyhow ... ok
[INFO] [stdout] test rules::error::tests::rule_error_pattern_parse_has_source ... ok
[INFO] [stdout] test rules::error::tests::rule_error_recursion_depth_exceeded ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::env_variable_access::case_3 ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::flag_access::case_3 ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::flag_access::case_2 ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::env_variable_access::case_2 ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::env_variable_access::case_1 ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::args_index_access::case_3 ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::eval_error_on_undeclared_reference ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::args_index_access::case_2 ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::args_starts_with ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::fs_functions_classify_path::case_2_exists_dir ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::args_index_access::case_1 ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::flag_access::case_1 ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::flag_groups_access::case_4_size_zero_when_group_unmatched ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::fs_functions_classify_path::case_8_is_dir_dir ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::fs_functions_classify_path::case_3_exists_missing ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::fs_functions_classify_path::case_4_is_file_file ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::fs_functions_classify_path::case_6_is_file_missing ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::flag_groups_access::case_2_exists_no_match ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::fs_functions_classify_path::case_1_exists_file ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::fs_functions_classify_path::case_5_is_file_dir ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::fs_functions_classify_path::case_7_is_dir_file ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::fs_functions_follow_symlinks::case_6_is_dir_to_dir ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::fs_functions_reject_non_fs_receiver::case_1_exists ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::fs_functions_follow_symlinks::case_3_is_file_to_file ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::flag_groups_access::case_1_exists_matches_mutation ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::fs_functions_follow_symlinks::case_4_is_file_to_dir ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::fs_functions_follow_symlinks::case_1_exists_to_file ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::fs_functions_follow_symlinks::case_5_is_dir_to_file ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::fs_functions_reject_non_fs_receiver::case_2_is_file ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::fs_functions_return_false_for_broken_symlink::case_2_is_file ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::fs_functions_reject_non_fs_receiver::case_3_is_dir ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::fs_functions_return_false_for_broken_symlink::case_1_exists ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::combined_conditions ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::fs_functions_follow_symlinks::case_2_exists_to_dir ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::flag_groups_access::case_3_size_one ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::os_variable_access::case_1_macos_match ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::fs_functions_classify_path::case_9_is_dir_missing ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::fs_functions_return_false_for_empty_string::case_2_is_file ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::os_variable_access::case_2_macos_no_match ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::fs_functions_return_false_for_empty_string::case_1_exists ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::os_variable_access::case_3_linux_match ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::fs_functions_return_false_for_broken_symlink::case_3_is_dir ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::fs_functions_return_false_for_empty_string::case_3_is_dir ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::pipe_variable_access::case_2_pipe_stdin_false ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::pipe_variable_access::case_1_pipe_stdin_true ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::parse_error_on_invalid_expression ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::paths_access ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::pipe_variable_access::case_4_pipe_stdout_false ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::pipe_variable_access::case_3_pipe_stdout_true ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::paths_contains_check ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::redirects_variable_access::case_1_exists_output_redirect_present ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::shell_loop_kind_access::case_1_until_matches ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::logical_not ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::shell_loop_kind_access::case_2_while_matches ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::shell_loop_kind_access::case_3_for_matches ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::redirects_variable_access::case_4_redirect_target_starts_with ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::os_variable_access::case_5_not_in_list ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::shell_loop_kind_access::case_4_empty_no_loop ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::redirects_variable_access::case_2_exists_output_redirect_absent ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_alternation::case_1 ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::os_variable_access::case_4_in_list ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_alternation::case_2 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_alternation::case_3 ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::shell_loop_kind_access::case_7_for_excluded_from_polling_set ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::shell_loop_kind_access::case_6_polling_loop_unset ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_backslash_escaped_semicolon ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_brackets::case_1 ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::redirects_variable_access::case_3_size_redirects_with_entry ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::shell_loop_kind_access::case_5_polling_loop_set ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::logical_and ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::type_error_on_non_bool_result ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::vars_empty_when_no_var_captured ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::logical_or ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::redirects_variable_access::case_5_redirect_descriptor_equals_2 ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::vars_access::case_1_exact_match ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::vars_access::case_2_no_match ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::vars_has_check ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_brackets::case_2 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_complex::case_2 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_complex::case_3 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_empty_negation_alternation::case_2 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_empty_alternation::case_1 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_empty_alternation::case_4 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_empty_input ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_empty_alternation::case_3 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_brackets::case_3 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_empty_negation_alternation::case_1 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_empty_alternation::case_2 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_multi_word_alternation::case_01_quoted_then_bare ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_complex::case_1 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_multi_word_alternation::case_03_three_alternatives ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_flag_alternation_with_force ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_joined_token_with_equals ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_leading_trailing_spaces ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_literal_brackets::case_1_bracket_command_wildcard ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_literal_brackets::case_2_bracket_command_with_args ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_literal_brackets::case_3_bracket_at_end ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_literal_brackets::case_4_close_bracket_outside_group ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_literals::case_1 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_empty_negation_alternation::case_3 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_multi_word_alternation::case_02_bare_then_quoted ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_literals::case_2 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_multi_word_alternation::case_04_multi_word_with_trailing_tokens ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_multi_word_alternation::case_05_all_single_word_quoted_becomes_alternation ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_multi_word_alternation::case_08_all_single_word_via_bare_and_quoted ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_multi_word_alternation::case_06_mixed_single_and_multi_word ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_multi_word_alternation::case_10_quoted_multi_then_two_bare ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_multi_word_alternation_errors::case_1_empty_quoted_alternative ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_multi_word_alternation_errors::case_2_trailing_pipe_after_quoted ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_multi_word_alternation::case_11_bare_pipe_bare_pipe_quoted ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_multi_word_unclosed_quote_reports_quote_position::case_1_bare_then_unclosed_quote ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_multi_word_unclosed_quote_reports_quote_position::case_2_quoted_then_unclosed_quote ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_negation::case_1 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_multi_word_alternation::case_07_single_quoted_multi_word ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_multiple_spaces ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_multiple_optional_groups ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_nested_square_brackets ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_negation::case_2 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_negation::case_3 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_multi_word_alternation::case_09_three_bare_and_quoted_single_word ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_placeholder_directly_after_bracket ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_placeholders::case_1 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_placeholders::case_2 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_quoted::case_1_double_quoted_glob ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_quoted::case_2_single_quoted_with_space ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_placeholders::case_3 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_quoted::case_3_escaped_star_in_quotes ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_single_literal ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_quoted::case_4_escaped_star_unquoted ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_unclosed_angle_bracket ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_unclosed_quote ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_single_word_alternation_unchanged ... ok
[INFO] [stdout] test rules::pattern_matcher::flag_utils::tests::split_flag_equals_cases::case_01_long_flag ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_unclosed_square_bracket ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_wildcard::case_2 ... ok
[INFO] [stdout] test rules::pattern_matcher::flag_utils::tests::split_flag_equals_cases::case_02_short_flag ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_whitespace_only ... ok
[INFO] [stdout] test rules::pattern_matcher::flag_utils::tests::split_flag_equals_cases::case_04_multiple_equals ... ok
[INFO] [stdout] test rules::pattern_matcher::flag_utils::tests::split_flag_equals_cases::case_03_empty_value ... ok
[INFO] [stdout] test rules::pattern_matcher::flag_utils::tests::split_flag_equals_cases::case_07_combined_short_flags_with_equals ... ok
[INFO] [stdout] test rules::pattern_matcher::flag_utils::tests::split_flag_equals_cases::case_06_java_system_property ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_wildcard::case_1 ... ok
[INFO] [stdout] test rules::pattern_matcher::flag_utils::tests::split_short_flag_value_cases::case_1_fused_value ... ok
[INFO] [stdout] test rules::pattern_matcher::flag_utils::tests::split_flag_equals_cases::case_09_equals_only ... ok
[INFO] [stdout] test rules::pattern_matcher::flag_utils::tests::split_short_flag_value_cases::case_2_fused_multichar_value ... ok
[INFO] [stdout] test rules::pattern_matcher::flag_utils::tests::split_short_flag_value_cases::case_3_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::flag_utils::tests::split_flag_equals_cases::case_11_dash_only ... ok
[INFO] [stdout] test rules::pattern_matcher::flag_utils::tests::split_flag_equals_cases::case_08_no_dash ... ok
[INFO] [stdout] test rules::pattern_matcher::flag_utils::tests::split_flag_equals_cases::case_05_no_equals ... ok
[INFO] [stdout] test rules::pattern_matcher::flag_utils::tests::split_short_flag_value_cases::case_4_long_flag ... ok
[INFO] [stdout] test rules::pattern_matcher::flag_utils::tests::split_short_flag_value_cases::case_6_dash_only ... ok
[INFO] [stdout] test rules::pattern_matcher::flag_utils::tests::split_flag_equals_cases::case_10_empty ... ok
[INFO] [stdout] test rules::pattern_matcher::flag_utils::tests::split_short_flag_value_cases::case_8_multiple_aliases ... ok
[INFO] [stdout] test rules::pattern_matcher::flag_utils::tests::split_short_flag_value_cases::case_5_exact_short_flag ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::alternation_flag_equals_joined::case_3_equals_joined_no_match_wrong_flag ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::alternation_flag_equals_joined::case_1_long_flag_equals_joined ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::alternation_glob_matching::case_1_glob_alt_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::alternation_flag_equals_joined::case_2_short_flag_equals_joined ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::alternation_glob_matching::case_2_glob_alt_exact_still_works ... ok
[INFO] [stdout] test rules::pattern_matcher::flag_utils::tests::split_short_flag_value_cases::case_7_empty ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::alternation_glob_matching::case_3_glob_alt_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::alternation_glob_matching::case_4_glob_alt_list_instances ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::alternation_matching::case_2_second_alt ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::alternation_matching::case_1_first_alt ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::alternation_matching::case_3_no_alt_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::alternation_matching::case_4_subcommand_alt ... ok
[INFO] [stdout] test rules::pattern_matcher::flag_utils::tests::split_short_flag_value_cases::case_9_non_ascii_after_dash ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::alternation_matching::case_5_non_flag_alt_skips_flags ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::alternation_glob_matching::case_5_glob_alt_describe_prefix ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::alternation_matching::case_6_non_flag_alt_skips_flags_second ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::bracket_command_matching::case_1_bracket_wildcard ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::bracket_command_matching::case_3_bracket_wildcard_no_args ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::alternation_matching::case_9_mixed_flag_nonflag_alt_nonflag_variant ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::bracket_command_matching::case_5_bracket_wrong_args ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::bracket_command_matching::case_2_bracket_exact_args ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::double_dash_matching::case_4_double_dash_with_optional_c_present ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::alternation_matching::case_7_non_flag_alt_after_double_dash_no_skip ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::double_dash_matching::case_1_double_dash_exact ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::double_dash_matching::case_5_double_dash_rejects_args_before ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::bracket_command_matching::case_4_bracket_command_mismatch ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::double_dash_matching::case_3_double_dash_with_optional_c ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::double_dash_matching::case_6_double_dash_rejects_no_separator ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::double_dash_matching::case_2_double_dash_multiple_files ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::combined_optional_and_wildcard ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_cases::case_01_simple_placeholder ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::equals_joined_token ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_cases::case_04_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_cases::case_02_literal_before_cmd ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_cases::case_03_wildcard_before_cmd ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_cases::case_09_flag_negation_empty_tokens_before_cmd ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_cases::case_06_negation_before_cmd ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_cases::case_08_positional_negation_empty_tokens ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_cases::case_11_positional_negation_rejected_before_cmd ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_cases::case_10_flag_negation_rejected_before_cmd ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_cases::case_05_opts_before_cmd ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::alternation_matching::case_8_mixed_flag_nonflag_alt_flag_variant ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_cases::case_07_positional_negation_before_cmd ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_cases::case_13_flag_like_literal_before_cmd ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_cases::case_14_cmd_rejects_flag_start ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_cases::case_15_cmd_accepts_non_flag ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_cmd_followed_by_literal ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_with_alternation ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_with_flag_with_value::case_1_space_separated ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_with_flag_with_value::case_2_equals_joined ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_with_non_cmd_trailing ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::flag_group_ref_matching::case_1_short_space ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::flag_group_ref_matching::case_2_long_space ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::flag_group_ref_matching::case_3_long_equals ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::flag_with_negation_value ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::flag_with_value_matching::case_01_flag_before_arg ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::flag_group_ref_matching::case_4_no_field_flag ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::flag_with_value_matching::case_02_flag_after_arg ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::flag_with_value_matching::case_03_long_alias ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::flag_with_value_matching::case_04_wrong_value ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::flag_with_value_matching::case_05_missing_flag ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::flag_with_value_matching::case_06_wildcard_value ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_cases::case_12_flag_like_literal_bash_c ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::flag_with_value_matching::case_07_bare_flag_before_arg ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::flag_with_value_matching::case_08_bare_flag_after_arg ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::flag_with_value_matching::case_10_bare_flag_missing ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::literal_glob_matching::case_1_literal_glob_prefix ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::flag_with_value_matching::case_09_bare_flag_wrong_value ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::literal_glob_matching::case_3_literal_glob_exact_still_works ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::literal_glob_matching::case_4_literal_glob_suffix ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::literal_glob_matching::case_2_literal_glob_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::literal_glob_matching::case_5_literal_glob_suffix_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::literal_glob_matching::case_6_literal_glob_middle ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::literal_glob_matching::case_7_literal_glob_middle_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::literal_glob_matching::case_9_negated_literal_glob_allows ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::matches_with_captures_returns_expected::case_1_no_wildcard ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::matches_with_captures_returns_expected::case_2_single_wildcard ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::literal_glob_matching::case_8_negated_literal_glob_blocks ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::matches_with_captures_returns_expected::case_3_wildcard_multiple_tokens ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::matches_with_captures_returns_expected::case_4_wildcard_in_optional ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::matches_with_captures_returns_expected::case_5_optional_absent_no_captures ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::matches_with_captures_returns_expected::case_6_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::matches_with_captures_returns_expected::case_7_different_command ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::matches_with_captures_returns_expected::case_8_wildcard_command_captures ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::matches_with_captures_returns_expected::case_9_wildcard_command_no_args ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::multi_word_alternation_backward_compat::case_1_backward_compat_first ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::multi_word_alternation_backward_compat::case_2_backward_compat_second ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::multi_word_alternation_backward_compat::case_3_backward_compat_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::multi_word_alternation_matching::case_01_npx_variant ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::multi_word_alternation_matching::case_02_bare_variant ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::multi_word_alternation_matching::case_03_no_match_different_runner ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::multi_word_alternation_matching::case_04_no_match_different_tool ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::multi_word_alternation_matching::case_05_three_alternatives_first ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::multi_word_alternation_matching::case_06_three_alternatives_second ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::multi_word_alternation_matching::case_07_three_alternatives_third ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::multi_word_alternation_matching::case_08_python_pytest_module ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::multi_word_alternation_matching::case_09_python_pytest_bare ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::multi_word_alternation_matching::case_10_python_pytest_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_alternation_glob_matching::case_1_negated_glob_blocks_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_alternation_glob_matching::case_2_negated_glob_allows_non_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_alternation_glob_matching::case_3_negated_glob_blocks_exact ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_alternation_glob_matching::case_4_negated_glob_blocks_exact_get ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_matching::case_01_negation_matches ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_matching::case_02_negation_rejects ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_matching::case_03_negation_alternation ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_matching::case_04_negation_alternation_reject ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_matching::case_05_flag_negation_rejects_at_end ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_matching::case_06_flag_negation_rejects_at_start ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_matching::case_07_flag_negation_allows_no_flag ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_matching::case_08_flag_negation_alt_rejects ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_matching::case_09_flag_negation_alt_allows ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_matching::case_10_flag_negation_rejects_equals_form ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_matching::case_11_flag_negation_allows_different_flag_equals ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_matching::case_12_flag_negation_alt_rejects_equals_form ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_matching::case_13_flag_negation_alt_allows_equals_different_flag ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_matching::case_14_flag_negation_empty_tokens_single ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_matching::case_15_flag_negation_empty_tokens_alt ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_matching::case_16_flag_negation_empty_tokens_find ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_matching::case_17_long_flag_negation_empty_after_literals ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_matching::case_18_long_flag_negation_with_safe_arg ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_matching::case_19_long_flag_negation_rejects_banned ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_matching::case_20_positional_negation_empty_tokens ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::no_match::case_1_different_command ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::no_match::case_2_extra_args ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::no_match::case_3_missing_args ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::optional_matching::case_01_with_optional_flag ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::optional_matching::case_02_without_optional_flag ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::optional_matching::case_03_optional_flag_with_value ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::optional_matching::case_04_optional_absent ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::optional_matching::case_05_optional_wrong_value ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::optional_matching::case_06_optional_flag_with_value_after_arg ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::optional_matching::case_07_optional_dir ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::optional_matching::case_08_optional_dir_absent ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::optional_matching::case_09_optional_bare_flags_reversed ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::optional_matching::case_10_optional_bare_flags_after_arg ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::optional_matching::case_11_optional_bare_flags_interleaved ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::optional_matching::case_12_optional_bare_flags_in_order ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::optional_matching::case_14_optional_bare_flags_only_s ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::optional_matching::case_13_optional_bare_flags_all_absent ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::optional_matching::case_15_optional_bare_flags_only_x ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::optional_matching::case_16_optional_bare_flags_wrong_value_reversed ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::optional_matching::case_18_optional_bare_flags_wrong_value_interleaved ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::optional_matching::case_20_optional_flag_with_value_equals_joined_absent ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::optional_matching::case_21_optional_flag_with_value_equals_joined_with_other_flags ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::optional_matching::case_22_optional_flag_with_value_equals_joined_specific_value ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::optional_matching::case_23_optional_flag_with_value_equals_joined_wrong_value ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::opts_non_wrapper_matching::case_1_opts_consumes_flags ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::opts_non_wrapper_matching::case_2_opts_no_flags ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::opts_non_wrapper_matching::case_3_opts_with_short_flag_value ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::optional_matching::case_17_optional_bare_flags_wrong_value_after_arg ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::opts_non_wrapper_matching::case_4_opts_mismatch_trailing ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::optional_matching::case_19_optional_flag_with_value_equals_joined ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::opts_non_wrapper_matching::case_5_opts_digit_flag_not_consuming ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::opts_non_wrapper_matching::case_6_opts_end_of_options_marker ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::opts_non_wrapper_matching::case_7_opts_end_of_options_with_flags ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::order_independent_literal_matching::case_01_flag_before_literal ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::order_independent_literal_matching::case_02_literal_at_normal_position ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::order_independent_literal_matching::case_03_multiple_flags_before_literal ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::order_independent_literal_matching::case_04_extra_flag_not_in_pattern_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::order_independent_literal_matching::case_05_double_dash_stays_positional ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::order_independent_literal_matching::case_06_double_dash_at_correct_position ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::order_independent_literal_matching::case_07_literal_mismatch_still_fails ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::order_independent_literal_matching::case_08_flag_literal_remains_positional ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::order_independent_literal_matching::case_09_flag_after_double_dash_is_positional ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::order_independent_literal_matching::case_10_flag_not_consumed_means_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::order_independent_literal_matching::case_11_flag_skip_leaves_flag_unconsumed ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::order_independent_literal_matching::case_12_skipped_flag_consumed_by_wildcard ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::order_independent_literal_matching::case_13_negation_bypass_with_flag ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::path_ref_definition_normalized ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::order_independent_literal_matching::case_14_skipped_flag_unconsumed_without_wildcard ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::path_ref_matches_listed_path ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::path_ref_normalized::case_3_multiple_dots ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::path_ref_normalized::case_5_unrelated_path ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::path_ref_undefined_name_never_matches ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::path_ref_normalized::case_1_dot_segment ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::path_ref_rejects_unlisted_path ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::path_ref_normalized::case_2_dotdot_segment ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::quoted_literal_matching::case_5_escaped_star_exact_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::quoted_literal_matching::case_6_escaped_star_no_glob ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::quoted_literal_matching::case_7_escaped_star_only ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::quoted_literal_matching::case_8_escaped_star_only_no_glob ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::quoted_literal_matching::case_2_quoted_star_glob_exact ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::quoted_literal_matching::case_3_quoted_star_glob_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::quoted_literal_matching::case_1_quoted_star_glob_matches ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::quoted_literal_matching::case_4_quoted_star_only_glob ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::path_ref_normalized::case_4_complex_traversal ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::simple_matching::case_3_command_mismatch ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::simple_matching::case_1_exact_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::simple_matching::case_5_too_many_args ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::var_captures_not_stale_after_optional_backtrack ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::var_captures_returns_expected::case_3_path_var_captured ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::wildcard_command_matching::case_02_version_flag ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::wildcard_command_matching::case_04_wildcard_only ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::var_captures_returns_expected::case_1_literal_var_captured ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::wildcard_command_matching::case_03_any_command_any_args ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::var_captures_returns_expected::case_2_no_match_returns_none ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::simple_matching::case_6_command_only ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::simple_matching::case_7_command_only_mismatch ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::wildcard_command_matching::case_05_wildcard_command_multi_word ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::wildcard_command_matching::case_09_wildcard_help_three_words ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::wildcard_command_matching::case_01_help_flag ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::wildcard_command_matching::case_10_wildcard_help_deep_subcommand ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::wildcard_command_matching::case_07_wildcard_command_missing_flag ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::wildcard_command_matching::case_08_wildcard_help_multi_word ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::wildcard_command_matching::case_06_wildcard_command_flag_mismatch ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::simple_matching::case_2_exact_multi ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::wildcard_matching::case_2_wildcard_zero ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::wildcard_matching::case_1_trailing_wildcard ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::wildcard_matching::case_4_wildcard_with_flags ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::literal_matches_cases::case_3_backslash_star_literal ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::literal_matches_cases::case_1_backslash_semicolon ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::literal_matches_cases::case_5_escaped_and_bare_glob ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::wildcard_matching::case_6_middle_wildcard_multi ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::literal_matches_cases::case_2_backslash_semicolon_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::literal_matches_cases::case_6_escaped_and_bare_glob_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::literal_matches_cases::case_7_no_backslash ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::simple_matching::case_4_too_few_args ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::match_var_ref_literal::case_2_literal_match_second_value ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::wildcard_command_matching::case_11_wildcard_with_args_multi_word ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::wildcard_matching::case_3_wildcard_many ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::match_var_ref_literal::case_1_literal_match ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::literal_matches_cases::case_4_backslash_star_not_glob ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::match_var_ref_literal::case_3_literal_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::literal_matches_cases::case_8_plain_glob ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::match_var_ref_literal::case_4_literal_empty_string ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::match_var_ref_multi_multi_word ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::match_var_ref_multi_per_value_type::case_1_plain_literal_match ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::match_var_ref_multi_per_value_type::case_2_typed_path_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::wildcard_matching::case_5_middle_wildcard ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::match_var_ref_multi_per_value_type::case_4_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::match_var_ref_negative_cases::case_2_empty_values ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::match_var_ref_negative_cases::case_1_undefined_var ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::match_var_ref_negative_cases::case_3_no_vars_section ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::match_var_ref_path::case_1_exact_match ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::match_var_ref_path::case_3_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::match_var_ref_path::case_2_dot_prefix ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::normalize_path_cases::case_2_dot ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::normalize_path_cases::case_4_multiple_dots ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::normalize_path_cases::case_5_dotdot_at_root ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::match_var_ref_multi_per_value_type::case_3_multi_word_literal ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::match_var_ref_per_value_type_overrides_definition ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::normalize_path_cases::case_1_identity ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::normalize_path_cases::case_3_dotdot ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::normalize_path_cases::case_6_relative ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::normalize_path_cases::case_7_relative_dotdot ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::normalize_path_cases::case_8_leading_dotdot ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::normalize_path_cases::case_9_leading_double_dotdot ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::test_glob_match::case_02_prefix_glob_short ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::test_glob_match::case_03_prefix_glob_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::test_glob_match::case_05_suffix_glob ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::test_glob_match::case_06_suffix_glob_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::test_glob_match::case_07_middle_glob ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::test_glob_match::case_04_prefix_glob_no_match_partial ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::test_glob_match::case_12_star_only ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::test_glob_match::case_13_star_only_empty ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::test_glob_match::case_14_multiple_stars ... ok
[INFO] [stdout] test rules::pattern_parser::tests::command_alternation_matches::case_1_matches_first ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::test_glob_match::case_15_multiple_stars_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::test_glob_match::case_10_exact_no_glob ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::test_glob_match::case_01_prefix_glob ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::test_glob_match::case_11_exact_no_glob_no_match ... ok
[INFO] [stdout] test rules::pattern_parser::tests::command_pattern_glob_matches::case_03_absolute_path_prefix_no_match_relative ... ok
[INFO] [stdout] test rules::pattern_parser::tests::command_alternation_matches::case_2_matches_second ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::test_glob_match::case_08_middle_glob_exact ... ok
[INFO] [stdout] test rules::pattern_matcher::token_matching::tests::test_glob_match::case_09_middle_glob_no_match ... ok
[INFO] [stdout] test rules::pattern_parser::tests::command_pattern_glob_matches::case_02_absolute_path_prefix_short ... ok
[INFO] [stdout] test rules::pattern_parser::tests::command_pattern_glob_matches::case_04_absolute_path_prefix_no_match_dot_slash ... ok
[INFO] [stdout] test rules::pattern_parser::tests::command_pattern_glob_matches::case_05_name_prefix_glob ... ok
[INFO] [stdout] test rules::pattern_parser::tests::command_alternation_matches::case_3_no_match ... ok
[INFO] [stdout] test rules::pattern_parser::tests::command_pattern_glob_matches::case_06_name_prefix_glob_short ... ok
[INFO] [stdout] test rules::pattern_parser::tests::command_pattern_glob_matches::case_07_name_prefix_glob_no_match ... ok
[INFO] [stdout] test rules::pattern_parser::tests::command_pattern_glob_matches::case_01_absolute_path_prefix ... ok
[INFO] [stdout] test rules::pattern_parser::tests::command_pattern_glob_matches::case_08_middle_glob ... ok
[INFO] [stdout] test rules::pattern_parser::tests::command_pattern_glob_matches::case_10_escaped_star_only_matches_literal_star ... ok
[INFO] [stdout] test rules::pattern_parser::tests::command_pattern_glob_matches::case_09_middle_glob_no_match ... ok
[INFO] [stdout] test rules::pattern_parser::tests::command_pattern_glob_matches::case_11_escaped_star_does_not_match_other ... ok
[INFO] [stdout] test rules::pattern_parser::tests::command_pattern_glob_matches::case_12_alt_second_glob_matches ... ok
[INFO] [stdout] test rules::pattern_parser::tests::command_pattern_glob_matches::case_13_alt_second_glob_matches_short ... ok
[INFO] [stdout] test rules::pattern_parser::tests::command_pattern_glob_matches::case_14_alt_first_literal_matches ... ok
[INFO] [stdout] test rules::pattern_parser::tests::command_pattern_glob_matches::case_15_alt_neither_matches ... ok
[INFO] [stdout] test rules::pattern_parser::tests::command_pattern_glob_matches::case_16_alt_first_does_not_glob ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_alternation::case_1_value_alternation ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_alternation::case_2_non_flag ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_bare_flag::case_1_flag_with_value ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_bare_flag::case_2_short_flag_with_value ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_bare_flag::case_4_flag_not_consuming_trailing_wildcard ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_bare_flag::case_3_flag_consumes_next_non_flag ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_bare_flag::case_7_flag_not_consuming_flag_negation ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_bare_flag::case_5_flag_at_end ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_command_alternation::case_3_aliases_no_args ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_bare_flag::case_6_combined_short_flag_with_value ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_command_alternation::case_2_three_aliases ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_double_dash_as_literal::case_1_double_dash_with_wildcard ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_command_alternation::case_1_two_aliases ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_err::case_03_unclosed_angle_bracket ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_err::case_04_unclosed_square_bracket ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_err::case_05_nested_square_brackets ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_err::case_06_empty_angle_brackets ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_err::case_07_angle_bracket_with_pipe ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_err::case_11_unclosed_single_quote ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_err::case_01_empty_string ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_double_dash_as_literal::case_2_flag_before_double_dash ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_err::case_08_angle_bracket_value_alternation ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_double_dash_as_literal::case_3_double_dash_with_optional ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_err::case_02_whitespace_only ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_err::case_09_empty_alternation ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_flag_group_ref::case_2_with_trailing_literal ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_err::case_12_unclosed_double_quote ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_flag_group_ref::case_4_no_trailing_token ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_err::case_10_empty_negation_alternation ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_flag_group_ref_empty_name_is_error ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_flag_group_ref::case_1_standalone ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_flag_group_ref::case_3_with_trailing_wildcard ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_flag_group_ref_inside_optional_group_is_error ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_flag_with_value::case_1_literal_value ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_flag_with_value::case_2_wildcard_value ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_flag_with_value::case_5_boolean_flag ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_flag_with_value::case_6_placeholder_not_consumed_as_flag_value ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_literal_bracket_command::case_1_bracket_command_wildcard ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_literal_bracket_command::case_2_bracket_command_boolean_flag ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_literals::case_1_command_only ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_flag_with_value::case_4_trailing_wildcard_not_consumed ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_literals::case_4_joined_equals ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_flag_with_value::case_7_path_ref_value ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_literals::case_5_single_quoted ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_literals::case_6_double_quoted ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_literal_bracket_command::case_3_bracket_command_with_args ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_multi_expands_alternatives::case_2_three_alternatives ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_multi_expands_alternatives::case_3_multi_word_with_subcommand ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_literals::case_2_simple ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_flag_with_value::case_3_named_value ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_multi_expands_alternatives::case_1_two_alternatives ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_multi_no_expansion::case_3_wildcard_command ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_optional::case_2_flag_with_value ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_literals::case_3_multiple ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_multi_no_expansion::case_1_single_word_alternation ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_negation::case_1_literal ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_negation::case_2_alternation ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_multi_no_expansion::case_2_simple_literal ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_optional::case_3_multiple_tokens ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_optional::case_1_single_flag ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_path_ref_command_position_rejected ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_placeholder::case_1_placeholder ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_placeholder::case_2_path_ref ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_placeholder::case_4_var_ref ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_placeholder::case_5_var_ref_after_flag ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_placeholder::case_3_flag_alternation_then_placeholder ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_var_ref_command_position::case_1_with_literal_arg ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_var_ref_command_position::case_2_with_wildcard_arg ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_wildcard::case_1_standalone ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_wildcard::case_2_between_literals ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_wildcard_command::case_1_wildcard_with_flag ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_wildcard_command::case_2_wildcard_with_version ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_wildcard_command::case_3_wildcard_only ... ok
[INFO] [stdout] test rules::pattern_parser::tests::test_parse_flag_group_definition::case_1_value_flag_wildcard ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_wildcard_command::case_4_wildcard_with_wildcard_args ... ok
[INFO] [stdout] test rules::pattern_parser::tests::test_parse_flag_group_definition::case_2_bool_flag ... ok
[INFO] [stdout] test rules::pattern_parser::tests::test_parse_flag_group_definition::case_3_value_restriction ... ok
[INFO] [stdout] test rules::pattern_parser::tests::test_parse_flag_group_definition::case_4_single_flag_with_value ... ok
[INFO] [stdout] test rules::pattern_parser::tests::test_parse_flag_group_definition::case_5_single_bool_flag ... ok
[INFO] [stdout] test rules::pattern_parser::tests::test_parse_flag_group_definition_errors::case_2_not_a_flag ... ok
[INFO] [stdout] test rules::pattern_parser::tests::test_parse_flag_group_definition_errors::case_1_empty ... ok
[INFO] [stdout] test rules::pattern_parser::tests::test_parse_flag_group_definition_errors::case_3_bare_double_dash ... ok
[INFO] [stdout] test rules::rule_engine::tests::ask_response_includes_message ... ok
[INFO] [stdout] test rules::rule_engine::tests::ask_wins_over_allow ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_all_allow::case_2_and_chain ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_all_unmatched_with_defaults_ask ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_ask_not_overwritten_by_escalation ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_all_allow::case_3_or_chain ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_command_guard_splits_and_evaluates_individually::case_5_semicolon_separated ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_ask_wins_over_allow ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_command_guard_splits_and_evaluates_individually::case_2_cd_and_pnpm_build ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_command_guard_splits_and_evaluates_individually::case_1_cd_and_rm ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_command_guard_splits_and_evaluates_individually::case_3_cd_and_unmatched_escalates_to_ask ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_all_allow::case_1_pipeline ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_default_resolved_to_deny_wins_over_allow ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_default_resolved_to_ask_wins_over_allow ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_command_guard_splits_and_evaluates_individually::case_7_or_separated ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_command_guard_splits_and_evaluates_individually::case_6_pipe_separated ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_command_in_wrapper_denies_dangerous_part ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_deny_wins::case_1_pipeline ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_command_in_wrapper_allows_safe_commands ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_deny_wins::case_2_and_chain ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_mixed_operators ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_guard_cd_wildcard_does_not_match_entire_compound ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_deny_rule_still_wins_over_resolved_default ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_default_resolved_to_allow_stays_allow ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_no_defaults_unmatched_wins_over_allow ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_command_guard_splits_and_evaluates_individually::case_4_triple_compound ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_no_matching_rules_returns_default ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_sandbox_writable_roots_intersection ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_deny_wins::case_3_or_chain ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_partial_sandbox_only_some_commands ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_sandbox_network_restricted_by_any ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_sandbox_network_intersection ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_same_sandbox_preset_deduplicates ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_semicolon_separator ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_sandbox_deny_paths_union ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_no_sandbox_presets_returns_none ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_single_command_delegates ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_deny_wins_over_ask_and_allow ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_writable_contradiction_escalates_to_ask ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_single_command_with_sandbox ... ok
[INFO] [stdout] test rules::rule_engine::tests::deny_response_includes_details ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_writable_contradiction_does_not_downgrade_deny ... ok
[INFO] [stdout] test rules::rule_engine::tests::deny_with_path_ref ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_three_presets_progressive_intersection ... ok
[INFO] [stdout] test rules::rule_engine::tests::empty_rules_returns_default ... ok
[INFO] [stdout] test rules::rule_engine::tests::no_rules_returns_default ... ok
[INFO] [stdout] test rules::rule_engine::tests::deny_wins_over_ask ... ok
[INFO] [stdout] test rules::rule_engine::tests::multiple_deny_rules_picks_first_deny ... ok
[INFO] [stdout] test rules::rule_engine::tests::deny_wins_over_allow ... ok
[INFO] [stdout] test rules::rule_engine::tests::no_matching_rule_returns_default ... ok
[INFO] [stdout] test rules::rule_engine::tests::deny_wins_over_allow_and_ask ... ok
[INFO] [stdout] test rules::rule_engine::tests::no_sandbox_when_rule_has_no_sandbox ... ok
[INFO] [stdout] test rules::rule_engine::tests::no_wrappers_defined_skips_unwrap ... ok
[INFO] [stdout] test rules::rule_engine::tests::deny_wins_regardless_of_order ... ok
[INFO] [stdout] test rules::rule_engine::tests::rule_with_no_action_is_skipped ... ok
[INFO] [stdout] test rules::rule_engine::tests::nested_wrappers_sudo_bash_c ... ok
[INFO] [stdout] test rules::rule_engine::tests::single_allow_rule ... ok
[INFO] [stdout] test rules::rule_engine::tests::single_deny_rule ... ok
[INFO] [stdout] test rules::rule_engine::tests::sandbox_from_most_restrictive_matched_rule ... ok
[INFO] [stdout] test rules::rule_engine::tests::single_ask_rule ... ok
[INFO] [stdout] test rules::rule_engine::tests::wildcard_command_matching::case_1_help_matches ... ok
[INFO] [stdout] test rules::rule_engine::tests::wildcard_command_deny_wins_over_wildcard_allow ... ok
[INFO] [stdout] test rules::rule_engine::tests::sandbox_preset_from_matched_rule ... ok
[INFO] [stdout] test rules::rule_engine::tests::wildcard_command_matching::case_2_version_matches ... ok
[INFO] [stdout] test rules::rule_engine::tests::wildcard_deny_matches_all_subcommands ... ok
[INFO] [stdout] test rules::rule_engine::tests::wrapper_compound_unmatched_resolved_via_defaults_action ... ok
[INFO] [stdout] test rules::rule_engine::tests::wrapper_deny_wins_over_allow_from_direct_rule ... ok
[INFO] [stdout] test rules::rule_engine::tests::when_clause_skips_deny_falls_back_to_allow ... ok
[INFO] [stdout] test rules::rule_engine::tests::wrapper_allows_safe_inner_command ... ok
[INFO] [stdout] test rules::rule_engine::tests::wrapper_no_match_returns_default ... ok
[INFO] [stdout] test rules::rule_engine::tests::wrapper_preserves_quoting_in_inner_command ... ok
[INFO] [stdout] test rules::rule_engine::tests::when_clause_satisfied_matches ... ok
[INFO] [stdout] test rules::rule_engine::tests::wrapper_evaluates_inner_deny::case_2_bash_c ... ok
[INFO] [stdout] test rules::rule_engine::tests::wildcard_command_matching::case_3_no_match_without_flag ... ok
[INFO] [stdout] test rules::rule_engine::tests::when_clause_not_satisfied_skips_rule ... ok
[INFO] [stdout] test rules::rule_engine::tests::recursion_depth_exceeded ... ok
[INFO] [stdout] test rules::rule_engine::tests::wrapper_with_optional_evaluates_inner::case_1_optional_present ... ok
[INFO] [stdout] test test::tests::expected_decision_display::case_2_ask ... ok
[INFO] [stdout] test test::tests::expected_decision_display::case_1_allow ... ok
[INFO] [stdout] test test::tests::expected_decision_display::case_3_deny ... ok
[INFO] [stdout] test test::tests::expected_decision_to_action_kind::case_1_allow ... ok
[INFO] [stdout] test test::tests::expected_decision_to_action_kind::case_3_deny ... ok
[INFO] [stdout] test test::tests::expected_decision_to_action_kind::case_2_ask ... ok
[INFO] [stdout] test rules::rule_engine::tests::wrapper_with_optional_evaluates_inner::case_2_optional_absent ... ok
[INFO] [stdout] test rules::rule_engine::tests::wrapper_evaluates_inner_deny::case_1_sudo ... ok
[INFO] [stdout] test rules::rule_engine::tests::wrapper_with_optional_evaluates_inner::case_3_optional_with_value_present ... ok
[INFO] [stdout] test rules::rule_engine::tests::wrapper_with_optional_evaluates_inner::case_4_optional_with_value_absent ... ok
[INFO] [stdout] test test::tests::load_test_config_nonexistent_path ... ok
[INFO] [stdout] test test::tests::load_test_config_from_directory ... ok
[INFO] [stdout] test test::tests::load_test_config_not_found ... ok
[INFO] [stdout] test test::tests::load_test_config_tests_extends_not_found ... ok
[INFO] [stdout] test rules::rule_engine::tests::wrapper_without_placeholder_does_not_recurse ... ok
[INFO] [stdout] test test::tests::load_test_config_from_file ... ok
[INFO] [stdout] test test::tests::parse_test_cases_empty_config ... ok
[INFO] [stdout] test test::tests::report_output::case_2_fail ... ok
[INFO] [stdout] test test::tests::report_output::case_1_pass ... ok
[INFO] [stdout] test test::tests::load_test_config_yaml_extension ... ok
[INFO] [stdout] test test::tests::load_test_config_with_tests_extends ... ok
[INFO] [stdout] test test::tests::run_tests_all_pass ... ok
[INFO] [stdout] test test::tests::report_summary_output ... ok
[INFO] [stdout] test test::tests::run_tests_continues_after_failure ... ok
[INFO] [stdout] test test::tests::parse_test_cases_top_level ... ok
[INFO] [stdout] test test::tests::load_test_config_with_extends ... ok
[INFO] [stdout] test test::tests::run_tests_default_action ... ok
[INFO] [stdout] test test::tests::parse_test_cases_mixed ... ok
[INFO] [stdout] test test::tests::run_tests_with_failure ... ok
[INFO] [stdout] test test::tests::run_tests_eval_error_is_failure_not_false_positive ... ok
[INFO] [stdout] test test::tests::test_action_kind_label::case_2_ask ... ok
[INFO] [stdout] test test::tests::test_action_kind_label::case_1_allow ... ok
[INFO] [stdout] test test::tests::test_action_kind_label::case_3_deny ... ok
[INFO] [stdout] test test::tests::test_action_to_kind::case_1_allow ... ok
[INFO] [stdout] test test::tests::test_action_to_kind::case_2_deny ... ok
[INFO] [stdout] test test::tests::test_action_to_kind::case_3_ask ... ok
[INFO] [stdout] test test::tests::test_error_display::case_2_no_test_cases ... ok
[INFO] [stdout] test test::tests::test_error_display::case_1_config_not_found ... ok
[INFO] [stdout] test test::tests::test_error_from_config ... ok
[INFO] [stdout] test test::tests::test_error_from_io ... ok
[INFO] [stdout] test test::tests::test_parse_inline_entry::case_1_allow_entry ... ok
[INFO] [stdout] test test::tests::parse_test_cases_inline_tests ... ok
[INFO] [stdout] test test::tests::test_results_aggregation::case_3_all_fail ... ok
[INFO] [stdout] test test::tests::test_parse_inline_entry::case_2_ask_entry ... ok
[INFO] [stdout] test test::tests::test_parse_inline_entry::case_3_deny_entry ... ok
[INFO] [stdout] test test::tests::test_results_aggregation::case_4_empty ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::find_latest_upgrade_test::case_03_full_no_newer_version ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::find_latest_upgrade_test::case_01_full_basic_upgrade ... ok
[INFO] [stdout] test test::tests::test_results_aggregation::case_1_all_pass ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::find_latest_upgrade_test::case_04_full_skips_pre_release ... ok
[INFO] [stdout] test test::tests::test_parse_inline_entry::case_5_multiple_set ... ok
[INFO] [stdout] test test::tests::test_results_aggregation::case_2_some_fail ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::find_latest_upgrade_test::case_02_full_respects_major_boundary ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::find_latest_upgrade_test::case_05_full_only_pre_release_available ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::find_latest_upgrade_test::case_06_full_without_v_prefix ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::find_latest_upgrade_test::case_09_major_upgrade_to_v2 ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::find_latest_upgrade_test::case_07_full_v_prefix_mismatch_excluded ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::find_latest_upgrade_test::case_08_full_mixed_major_versions ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::find_latest_upgrade_test::case_10_major_upgrade_to_v3 ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::find_latest_upgrade_test::case_11_major_no_newer ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::find_latest_upgrade_test::case_13_major_v_prefix_mismatch ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::find_latest_upgrade_test::case_12_major_without_v_prefix ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::find_latest_upgrade_test::case_16_minor_upgrade ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::find_latest_upgrade_test::case_17_minor_no_newer ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::find_latest_upgrade_test::case_18_minor_respects_major_boundary ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::find_latest_upgrade_test::case_21_minor_skips_pre_release ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::non_semver_current_returns_none ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::find_latest_upgrade_test::case_19_minor_without_v_prefix ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::parse_semver_tag_test::case_1_with_v_prefix ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::find_latest_upgrade_test::case_14_major_from_partial_tags ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::parse_semver_tag_test::case_3_with_patch ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::find_latest_upgrade_test::case_20_minor_from_partial_tags ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::parse_semver_tag_test::case_4_pre_release ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::parse_semver_tag_test::case_2_without_prefix ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::find_latest_upgrade_test::case_15_major_skips_pre_release ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::parse_semver_tag_test::case_8_partial_version_two ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::parse_semver_tag_test::case_5_branch_name ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::parse_version_spec_test::case_01_major_with_v ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::parse_version_spec_test::case_03_major_zero ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::parse_semver_tag_test::case_6_non_semver_tag ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::parse_semver_tag_test::case_7_partial_version ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::parse_version_spec_test::case_05_major_minor_without_v ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::parse_version_spec_pre_release ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::parse_version_spec_test::case_07_full_without_v ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::parse_version_spec_test::case_02_major_without_v ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::parse_version_spec_test::case_10_four_parts ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::parse_version_spec_test::case_09_non_semver_tag ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::parse_version_spec_test::case_04_major_minor_with_v ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::parse_version_spec_test::case_06_full_with_v ... ok
[INFO] [stdout] test test::tests::test_parse_inline_entry::case_4_none_set ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::parse_version_spec_test::case_11_non_digit ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::parse_version_spec_test::case_12_empty_part ... ok
[INFO] [stdout] test update_presets::tests::build_updated_reference_test::case_1_github ... ok
[INFO] [stdout] test update_presets::tests::collect_remote_references_filters_local::case_2_git_url ... ok
[INFO] [stdout] test update_presets::tests::collect_remote_references_empty_extends ... ok
[INFO] [stdout] test update_presets::tests::collect_references_skips_missing_files ... ok
[INFO] [stdout] test update_presets::tests::collect_remote_references_filters_local::case_1_github_shorthand ... ok
[INFO] [stdout] test update_presets::tests::run_with_scenarios::case_4_skipped_does_not_modify_config ... ok
[INFO] [stdout] test update_presets::semver_utils::tests::parse_version_spec_test::case_08_branch_name ... ok
[INFO] [stdout] test update_presets::tests::collect_references_deduplicates ... ok
[INFO] [stdout] test update_presets::tests::collect_references_tracks_source_file ... ok
[INFO] [stdout] test update_presets::tests::collect_references_allows_same_ref_from_different_dirs ... ok
[INFO] [stdout] test update_presets::tests::build_updated_reference_test::case_2_git_url ... ok
[INFO] [stdout] test update_presets::tests::collect_remote_references_filters_local::case_3_local_path ... ok
[INFO] [stdout] test update_presets::tests::update_single_preset_scenarios::case_01_commit_sha_is_skipped ... ok
[INFO] [stdout] test update_presets::tests::update_config_file_preserves_comments ... ok
[INFO] [stdout] test update_presets::tests::update_config_file_replaces_reference ... ok
[INFO] [stdout] test update_presets::tests::update_handles_fetch_error ... ok
[INFO] [stdout] test update_presets::tests::run_with_scenarios::case_5_error_returns_err ... ok
[INFO] [stdout] test update_presets::tests::run_with_scenarios::case_3_up_to_date_does_not_modify_config ... ok
[INFO] [stdout] test update_presets::tests::run_with_scenarios::case_2_updated_does_not_modify_config ... ok
[INFO] [stdout] test update_presets::tests::try_tag_upgrade_skips_incompatible_newest_and_picks_older ... ok
[INFO] [stdout] test update_presets::tests::try_tag_upgrade_adopts_newest_compatible_candidate ... ok
[INFO] [stdout] test update_presets::tests::update_single_preset_scenarios::case_05_v1_mixed_branches_and_tags ... ok
[INFO] [stdout] test update_presets::tests::update_single_preset_scenarios::case_03_v1_branch_to_v2_branch ... ok
[INFO] [stdout] test update_presets::tests::try_tag_upgrade_reports_up_to_date_when_all_candidates_incompatible ... ok
[INFO] [stdout] test update_presets::tests::update_single_preset_scenarios::case_04_v1_tag_to_v2_tag ... ok
[INFO] [stdout] test update_presets::tests::update_single_preset_scenarios::case_02_branch_refetched ... ok
[INFO] [stdout] test update_presets::tests::run_with_scenarios::case_6_mixed_results_counts_errors ... ok
[INFO] [stdout] test update_presets::tests::run_with_scenarios::case_1_upgraded_updates_config ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::wildcard_dos_terminates ... ok
[INFO] [stdout] test update_presets::tests::update_single_preset_scenarios::case_08_full_semver_respects_major_boundary ... ok
[INFO] [stdout] test update_presets::tests::update_single_preset_scenarios::case_10_full_semver_already_latest ... ok
[INFO] [stdout] test update_presets::tests::update_single_preset_scenarios::case_06_v1_no_newer_major ... ok
[INFO] [stdout] test update_presets::tests::update_single_preset_scenarios::case_09_full_semver_patch_upgrade ... ok
[INFO] [stdout] test update_presets::tests::update_single_preset_scenarios::case_12_major_minor_already_latest ... ok
[INFO] [stdout] test update_presets::tests::update_single_preset_scenarios::case_11_major_minor_upgrade ... ok
[INFO] [stdout] test update_presets::tests::update_single_preset_scenarios::case_07_full_semver_picks_latest_minor ... ok
[INFO] [stdout] test update_presets::tests::update_single_preset_scenarios::case_13_major_minor_respects_major_boundary ... ok
[INFO] [stdout] test update_presets::tests::update_single_preset_scenarios::case_14_pre_release_excluded ... ok
[INFO] [stdout] test update_presets::tests::update_single_preset_scenarios::case_15_v_prefix_mismatch ... ok
[INFO] [stdout] test exec::extension_runner::tests::integration_timeout_falls_back_to_ask ... ok
[INFO] [stdout] test exec::extension_runner::tests::validate_timeout ... ok
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/runok-8378d287518976f8)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1845 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.16s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 113 tests
[INFO] [stdout] test cli::route::tests::route_check_stdin_json_auto_detect::case_1_claude_code_hook ... ok
[INFO] [stdout] test cli::route::tests::route_check_stdin_json_auto_detect::case_2_generic_check ... ok
[INFO] [stdout] test cli::route::tests::route_check_explicit_format_claude_code_hook ... ok
[INFO] [stdout] test cli::route::tests::route_check_unknown_format_returns_error ... ok
[INFO] [stdout] test cli::route::tests::route_check_format_with_non_json_stdin_returns_error ... ok
[INFO] [stdout] test cli::route::tests::route_check_empty_stdin_returns_error ... ok
[INFO] [stdout] test cli::route::tests::route_check_only_empty_lines_returns_error ... ok
[INFO] [stdout] test cli::route::tests::route_check_stdin_unknown_json_format_returns_error ... ok
[INFO] [stdout] test cli::route::tests::route_check_plaintext_unclosed_quote_returns_parse_error ... ok
[INFO] [stdout] test cli::route::tests::route_check_plaintext_multi_line ... ok
[INFO] [stdout] test cli::route::tests::route_check_non_object_json_treated_as_plaintext::case_2_json_number ... ok
[INFO] [stdout] test cli::route::tests::route_check_plaintext_heredoc_kept_as_single_command ... ok
[INFO] [stdout] test cli::route::tests::route_check_plaintext_single_line ... ok
[INFO] [stdout] test cli::route::tests::route_check_non_object_json_treated_as_plaintext::case_1_json_true ... ok
[INFO] [stdout] test cli::route::tests::route_check_plaintext_trims_whitespace ... ok
[INFO] [stdout] test cli::route::tests::route_check_plaintext_skips_empty_lines ... ok
[INFO] [stdout] test cli::route::tests::route_check_plaintext_backslash_line_continuation_is_one_command ... ok
[INFO] [stdout] test cli::route::tests::route_check_non_object_json_treated_as_plaintext::case_3_json_string ... ok
[INFO] [stdout] test cli::route::tests::route_check_command_flag_takes_precedence_over_stdin ... ok
[INFO] [stdout] test cli::route::tests::route_check_with_command_arg::case_3_arg_with_spaces ... ok
[INFO] [stdout] test cli::route::tests::route_check_with_command_arg::case_2_command_with_flags ... ok
[INFO] [stdout] test cli::route::tests::route_check_with_command_arg::case_1_simple_command ... ok
[INFO] [stdout] test cli::tests::cli_global_config_flag::case_5_no_config ... ok
[INFO] [stdout] test cli::tests::cli_global_config_flag::case_4_config_after_migrate ... ok
[INFO] [stdout] test cli::tests::cli_global_config_flag::case_2_config_long_before_subcommand ... ok
[INFO] [stdout] test cli::tests::cli_global_config_flag::case_1_config_before_subcommand ... ok
[INFO] [stdout] test cli::tests::cli_global_config_flag::case_3_config_after_subcommand ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_04_check_with_command ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_10_audit_with_action ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_02_exec_with_sandbox ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_12_audit_with_dir ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_06_check_with_output_format_json ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_05_check_with_input_format ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_01_exec_simple ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_11_audit_with_since ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_08_check_with_verbose ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_15_init_with_scope_user ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_16_init_with_scope_project ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_13_audit_with_all_options ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_07_check_with_both ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_18_init_with_yes_long ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_19_init_all_flags ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_14_init_defaults ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_03_exec_with_verbose ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_20_migrate_default ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_09_audit_default ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_17_init_with_yes ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_23_update_presets ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_21_migrate_with_yes ... ok
[INFO] [stdout] test cli::validate::tests::find_subcommand_cases::case_1_simple_exec ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_22_test_default ... ok
[INFO] [stdout] test cli::validate::tests::invalid_args::case_01_exec_unknown_flag ... ok
[INFO] [stdout] test cli::validate::tests::invalid_args::case_02_check_unknown_short_flag ... ok
[INFO] [stdout] test cli::validate::tests::invalid_args::case_03_exec_unknown_no_double_dash ... ok
[INFO] [stdout] test cli::validate::tests::invalid_args::case_04_exec_unknown_with_leading_global_config ... ok
[INFO] [stdout] test cli::validate::tests::invalid_args::case_05_check_unknown_with_leading_global_config_short ... ok
[INFO] [stdout] test cli::validate::tests::find_subcommand_cases::case_3_global_config_short_before ... ok
[INFO] [stdout] test cli::tests::cli_parsing_errors::case_1_invalid_scope ... ok
[INFO] [stdout] test cli::validate::tests::find_subcommand_cases::case_4_global_config_long_before ... ok
[INFO] [stdout] test cli::validate::tests::find_subcommand_cases::case_5_global_config_eq_before ... ok
[INFO] [stdout] test cli::validate::tests::find_subcommand_cases::case_7_config_value_equals_subcommand ... ok
[INFO] [stdout] test cli::validate::tests::find_subcommand_cases::case_2_simple_check ... ok
[INFO] [stdout] test cli::validate::tests::invalid_args::case_06_check_unknown_with_leading_global_config_long ... ok
[INFO] [stdout] test cli::validate::tests::invalid_args::case_08_check_config_value_equals_subcommand_name ... ok
[INFO] [stdout] test cli::validate::tests::invalid_args::case_11_exec_unknown_with_fused_short_config ... ok
[INFO] [stdout] test cli::validate::tests::find_subcommand_cases::case_8_no_subcommand ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_01_exec_with_double_dash ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_02_exec_known_flag_before_double_dash ... ok
[INFO] [stdout] test cli::validate::tests::find_subcommand_cases::case_9_only_global_flag ... ok
[INFO] [stdout] test cli::validate::tests::find_subcommand_cases::case_6_global_config_fused_short_before ... ok
[INFO] [stdout] test cli::validate::tests::invalid_args::case_10_check_unknown_with_fused_short_config ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_06_exec_command_without_double_dash ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_09_check_known_flags ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_07_exec_command_with_flag_args ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_10_check_output_format ... ok
[INFO] [stdout] test cli::validate::tests::invalid_args::case_09_exec_config_value_equals_subcommand_name ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_11_check_command_without_double_dash ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_13_unknown_after_double_dash ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_08_check_with_double_dash ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_14_check_unknown_after_double_dash ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_04_exec_sandbox_eq_form ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_05_exec_all_flags ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_12_check_no_args ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_15_exec_help ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_03_exec_sandbox_with_value ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_16_exec_help_short ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_21_exec_config_eq ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_22_exec_config_fused_short ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_19_exec_config_long ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_20_exec_config_short ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_18_check_help_short ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_23_check_config_long ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_24_check_config_short ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_27_exec_version_short ... ok
[INFO] [stdout] test tests::raw_args_indicate_claude_code_hook_detects_flag::case_2_equals_separated ... ok
[INFO] [stdout] test tests::raw_args_indicate_claude_code_hook_detects_flag::case_3_other_format ... ok
[INFO] [stdout] test tests::raw_args_indicate_claude_code_hook_detects_flag::case_5_value_only_match ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_26_exec_version ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_25_check_config_fused_short ... ok
[INFO] [stdout] test tests::raw_args_indicate_claude_code_hook_detects_flag::case_7_after_double_dash_eq ... ok
[INFO] [stdout] test tests::raw_args_indicate_claude_code_hook_detects_flag::case_6_after_double_dash ... ok
[INFO] [stdout] test tests::create_executor_returns_executor ... ok
[INFO] [stdout] test tests::raw_args_indicate_claude_code_hook_detects_flag::case_4_no_format ... ok
[INFO] [stdout] test tests::raw_args_indicate_claude_code_hook_detects_flag::case_8_binary_name_collides ... ok
[INFO] [stdout] test tests::raw_args_indicate_claude_code_hook_detects_flag::case_1_space_separated ... ok
[INFO] [stdout] test tests::run_sandbox_exec_rejects_invalid_json ... ok
[INFO] [stdout] test tests::run_command_check::case_2_stdin_empty ... ok
[INFO] [stdout] test tests::run_command_check::case_1_with_command_arg ... ok
[INFO] [stdout] test tests::run_command_check::case_5_stdin_multiline ... ok
[INFO] [stdout] test tests::run_command_check::case_4_stdin_plaintext ... ok
[INFO] [stdout] test tests::run_command_check::case_3_stdin_json ... ok
[INFO] [stdout] test cli::validate::tests::invalid_args::case_07_check_unknown_with_leading_global_config_eq ... ok
[INFO] [stdout] test cli::validate::tests::valid_args::case_17_check_help ... ok
[INFO] [stderr]      Running tests/e2e/main.rs (/opt/rustwide/target/debug/deps/e2e-4dd1c4ffe89d3bb8)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 113 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 93 tests
[INFO] [stdout] test audit::exec_creates_audit_log::case_2_deny ... ok
[INFO] [stdout] test audit::exec_creates_audit_log::case_1_allow ... ok
[INFO] [stdout] test audit::audit_disabled_no_log_created ... ok
[INFO] [stdout] test check_claude_code_hook::hook_bash_allow ... ok
[INFO] [stdout] test audit::audit_rotation_deletes_old_files ... ok
[INFO] [stdout] test check_claude_code_hook::hook_input_schema_mismatch_exits_1 ... ok
[INFO] [stdout] test audit::exec_compound_command_audit_log ... ok
[INFO] [stdout] test check_claude_code_hook::hook_invalid_json_exits_1 ... ok
[INFO] [stdout] test check_claude_code_hook::hook_bash_no_match_returns_ask ... ok
[INFO] [stdout] test audit::non_exec_does_not_create_audit_log::case_1_check ... ok
[INFO] [stdout] test audit::no_audit_config_still_works ... ok
[INFO] [stdout] test audit::audit_subcommand_json_format ... ok
[INFO] [stdout] test check_claude_code_hook::hook_unknown_flag_exits_1 ... ok
[INFO] [stdout] test check_claude_code_hook::hook_yaml_syntax_error_exits_1 ... ok
[INFO] [stdout] test check_claude_code_hook::hook_output_contains_event_name ... ok
[INFO] [stdout] test check_claude_code_hook::hook_non_bash_tool_no_output::case_3_edit ... ok
[INFO] [stdout] test check_claude_code_hook::hook_sandbox_allow_rewrites_command ... ok
[INFO] [stdout] test check_claude_code_hook::hook_non_bash_tool_no_output::case_1_read ... ok
[INFO] [stdout] test check_generic::check_allow_with_sandbox_info ... ok
[INFO] [stdout] test check_claude_code_hook::hook_non_bash_tool_no_output::case_2_write ... ok
[INFO] [stdout] test check_generic::check_cmd_sub_in_quoted_string::case_2_cmd_sub_in_quotes_inner_unmatched_is_ask ... ok
[INFO] [stdout] test audit::audit_filter_by_action::case_1_deny ... ok
[INFO] [stdout] test check_generic::check_cmd_sub_in_quoted_string::case_1_cmd_sub_in_quotes_deny ... ok
[INFO] [stdout] test check_format_auto_detect::auto_detect_unknown_json_exits_2 ... ok
[INFO] [stdout] test audit::audit_filter_by_since ... ok
[INFO] [stdout] test check_generic::check_cmd_sub_in_quoted_string::case_5_docker_env_with_unmatched_cmd_sub ... ok
[INFO] [stdout] test check_format_auto_detect::auto_detect_claude_code_hook_format ... ok
[INFO] [stdout] test check_generic::check_cmd_sub_in_quoted_string::case_4_backtick_in_quotes_deny ... ok
[INFO] [stdout] test audit::audit_filter_by_action::case_2_allow ... ok
[INFO] [stdout] test check_generic::check_deny_includes_reason ... ok
[INFO] [stdout] test check_generic::check_cmd_sub_in_quoted_string::case_3_single_quotes_no_substitution ... ok
[INFO] [stdout] test check_generic::check_command_arg_json::case_2_allow_git_status ... ok
[INFO] [stdout] test check_generic::check_find_exec_wrapper::case_2_find_exec_plus_deny ... ok
[INFO] [stdout] test check_generic::check_command_arg_text::case_2_allow_git_status ... ok
[INFO] [stdout] test check_generic::check_find_exec_wrapper::case_3_find_execdir_allow ... ok
[INFO] [stdout] test check_generic::check_find_exec_wrapper::case_1_find_exec_deny ... ok
[INFO] [stdout] test check_generic::check_find_exec_wrapper::case_5_find_okdir_allow ... ok
[INFO] [stdout] test check_generic::check_no_input_exits_2 ... ok
[INFO] [stdout] test check_generic::check_stdin_comment_before_command ... ok
[INFO] [stdout] test audit::audit_filter_by_limit ... ok
[INFO] [stdout] test check_generic::check_command_arg_json::case_1_deny_rm ... ok
[INFO] [stdout] test check_claude_code_hook::hook_bash_deny ... ok
[INFO] [stdout] test check_generic::check_find_exec_wrapper::case_4_find_ok_deny ... ok
[INFO] [stdout] test error_handling::format_with_non_json_stdin_exits_1 ... ok
[INFO] [stdout] test error_handling::invalid_config_exits_with_error::case_1_check ... ok
[INFO] [stdout] test cli::version_flag_prints_version ... ok
[INFO] [stdout] test check_generic::check_stdin_json_deny ... ok
[INFO] [stdout] test check_generic::check_plaintext_stdin_single_line ... ok
[INFO] [stdout] test check_claude_code_hook::hook_pattern_parse_error_exits_1 ... ok
[INFO] [stdout] test check_format_auto_detect::auto_detect_generic_format ... ok
[INFO] [stdout] test error_handling::validation_error_deny_with_sandbox::case_1_check ... ok
[INFO] [stdout] test error_handling::unknown_format_flag_exits_2 ... ok
[INFO] [stdout] test exec::exec_ask_treated_as_deny ... ok
[INFO] [stdout] test error_handling::validation_error_deny_with_sandbox::case_2_exec ... ok
[INFO] [stdout] test exec::exec_allow_runs_command ... ok
[INFO] [stdout] test audit::audit_subcommand_human_format ... ok
[INFO] [stdout] test exec::exec_deny_prints_reason ... ok
[INFO] [stdout] test exec::exec_no_match_uses_default_deny ... ok
[INFO] [stdout] test init::init_user_scope_creates_config ... ok
[INFO] [stdout] test exec::exec_exit_code::case_1_deny_post ... ok
[INFO] [stdout] test init::init_invalid_scope ... ok
[INFO] [stdout] test init::init_project_scope_overwrites_existing ... ok
[INFO] [stdout] test check_generic::check_command_arg_text::case_1_deny_rm ... ok
[INFO] [stdout] test sandbox_fs_read_deny::config_error_on_undefined_path_ref_in_read_deny ... ok
[INFO] [stdout] test check_generic::check_command_arg_text::case_3_comment_only ... ok
[INFO] [stdout] test error_handling::invalid_config_exits_with_error::case_2_exec ... ok
[INFO] [stdout] test test_command::config_option::case_2_long_flag ... ok
[INFO] [stdout] test test_command::config_option::case_1_short_flag ... ok
[INFO] [stdout] test error_handling::no_config_check_returns_default ... ok
[INFO] [stdout] test init::init_user_scope_with_claude_code_integration ... ok
[INFO] [stdout] test test_command::ask_decision_test ... ok
[INFO] [stdout] test sandbox_fs_read_deny::new_format_does_not_emit_deprecation_warning ... ok
[INFO] [stdout] test sandbox_fs_read_deny::legacy_format_emits_deprecation_warning ... ok
[INFO] [stdout] test test_command::inline_tests::case_2_some_fail ... ok
[INFO] [stdout] test test_command::extends_resolution_error_shows_path ... ok
[INFO] [stdout] test test_command::global_config_does_not_affect_test ... ok
[INFO] [stdout] test init::init_project_scope_creates_config ... ok
[INFO] [stdout] test error_handling::exit_codes::case_2_check_deny ... ok
[INFO] [stdout] test test_command::inline_tests::case_1_all_pass ... ok
[INFO] [stdout] test test_command::output_shows_pass_and_fail_details ... ok
[INFO] [stdout] test test_command::top_level_tests ... ok
[INFO] [stdout] test test_command::tests_extends_merges_additional_rules ... ok
[INFO] [stdout] test test_command::mixed_inline_and_top_level ... ok
[INFO] [stdout] test test_command::tests_extends_does_not_overwrite_main_tests ... ok
[INFO] [stdout] test test_command::exit_code_2_on_no_test_cases ... ok
[INFO] [stdout] test test_command::extends_in_config ... ok
[INFO] [stdout] test error_handling::exit_codes::case_1_exec_deny ... ok
[INFO] [stdout] test check_generic::check_stdin_json_allow ... ok
[INFO] [stdout] test error_handling::exec_nonexistent_command ... ok
[INFO] [stdout] test audit::audit_filter_by_command ... ok
[INFO] [stdout] test test_command::exit_code_2_on_config_not_found ... ok
[INFO] [stdout] test test_command::inline_tests::case_3_all_fail ... ok
[INFO] [stderr]      Running tests/integration/main.rs (/opt/rustwide/target/debug/deps/integration-b4658cbc4634aaf4)
[INFO] [stdout] test audit::audit_json_does_not_panic_on_broken_pipe ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 93 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.74s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 689 tests
[INFO] [stdout] test alias_expansion::recursive_alias_expansion_records_full_chain ... ok
[INFO] [stdout] test alias_expansion::alias_does_not_grant_unlisted_subcommands ... ok
[INFO] [stdout] test alias_expansion::alias_with_multiple_patterns_expands_to_multiple_rules ... ok
[INFO] [stdout] test alias_expansion::kubectl_alias_factors_out_namespace_flag::case_2_short_flag ... ok
[INFO] [stdout] test alias_expansion::cyclic_aliases_are_broken_without_panic ... ok
[INFO] [stdout] test alias_expansion::rule_without_alias_head_is_unaffected ... ok
[INFO] [stdout] test alias_expansion::kubectl_alias_factors_out_namespace_flag::case_3_long_flag ... ok
[INFO] [stdout] test alias_expansion::trailing_positional_wildcard_in_alias_consumes_rule_tail ... ok
[INFO] [stdout] test alias_expansion::alias_pattern_order_decides_first_match ... ok
[INFO] [stdout] test audit_log_integration::audit_disabled_does_not_generate_log ... ok
[INFO] [stdout] test audit_log_integration::check_does_not_generate_audit_log ... ok
[INFO] [stdout] test compound_command_evaluation::any_deny_makes_overall_deny::case_1_one_deny_among_allows ... ok
[INFO] [stdout] test alias_expansion::deny_still_fires_on_compound_branch_after_alias ... ok
[INFO] [stdout] test audit_log_integration::audit_log_records_argv_for_single_command ... ok
[INFO] [stdout] test compound_command_evaluation::command_substitution_extraction::case_2_command_substitution_allowed ... ok
[INFO] [stdout] test audit_log_integration::audit_log_records_matched_rules ... ok
[INFO] [stdout] test compound_command_evaluation::any_deny_makes_overall_deny::case_3_deny_at_end ... ok
[INFO] [stdout] test audit_log_integration::audit_log_records_default_action ... ok
[INFO] [stdout] test audit_log_integration::audit_log_records_argv_per_compound_branch ... ok
[INFO] [stdout] test compound_command_evaluation::command_substitution_extraction::case_1_command_substitution_deny ... ok
[INFO] [stdout] test audit_log_integration::exec_generates_audit_log::case_1_allow ... ok
[INFO] [stdout] test audit_log_integration::compound_command_records_command_evaluations ... ok
[INFO] [stdout] test audit_log_integration::comment_only_input_yields_empty_command_evaluations ... ok
[INFO] [stdout] test compound_command_evaluation::command_substitution_extraction::case_3_backtick_substitution_deny ... ok
[INFO] [stdout] test compound_command_evaluation::action_aggregation_priority::case_1_ask_over_allow ... ok
[INFO] [stdout] test compound_command_evaluation::command_substitution_in_strings::case_3_cmd_sub_in_double_quotes_inner_unmatched_is_ask ... ok
[INFO] [stdout] test compound_command_evaluation::command_substitution_in_strings::case_1_cmd_sub_in_double_quotes_deny ... ok
[INFO] [stdout] test compound_command_evaluation::command_substitution_in_strings::case_5_single_quotes_no_substitution ... ok
[INFO] [stdout] test compound_command_evaluation::any_deny_makes_overall_deny::case_2_deny_at_start ... ok
[INFO] [stdout] test compound_command_evaluation::command_substitution_in_strings::case_7_docker_env_with_secret_cmd_sub ... ok
[INFO] [stdout] test compound_command_evaluation::command_substitution_must_not_bypass_rules::case_2_unmatched_outer_with_allowed_inner_chain ... ok
[INFO] [stdout] test compound_command_evaluation::command_substitution_in_strings::case_4_nested_wrapper_in_cmd_sub_in_quotes ... ok
[INFO] [stdout] test compound_command_evaluation::command_substitution_in_strings::case_6_backtick_in_double_quotes_deny ... ok
[INFO] [stdout] test compound_command_evaluation::compound_command_uses_shell_input::case_1_argv_is_not_compound ... ok
[INFO] [stdout] test compound_command_evaluation::compound_command_uses_shell_input::case_2_shell_is_compound ... ok
[INFO] [stdout] test compound_command_evaluation::command_substitution_must_not_bypass_rules::case_1_gh_pr_edit_with_allowed_cmd_sub ... ok
[INFO] [stdout] test compound_command_evaluation::command_substitution_in_strings::case_8_git_commit_with_date_cmd_sub ... ok
[INFO] [stdout] test compound_command_evaluation::command_substitution_with_redirects_no_stack_overflow::case_3_cmd_sub_simple_with_redirect ... ok
[INFO] [stdout] test compound_command_evaluation::command_substitution_with_redirects_no_stack_overflow::case_2_cmd_sub_with_redirect_deny_inner ... ok
[INFO] [stdout] test compound_command_evaluation::command_substitution_must_not_bypass_rules::case_3_unmatched_outer_with_allowed_inner_defaults_deny ... ok
[INFO] [stdout] test compound_command_evaluation::action_aggregation_priority::case_2_deny_over_ask_and_allow ... ok
[INFO] [stdout] test audit_log_integration::exec_generates_audit_log::case_2_deny ... ok
[INFO] [stdout] test audit_log_integration::no_audit_section_uses_default_behavior ... ok
[INFO] [stdout] test compound_command_evaluation::command_substitution_with_redirects_no_stack_overflow::case_4_nested_cmd_sub_with_pipe ... ok
[INFO] [stdout] test compound_command_evaluation::command_substitution_must_not_bypass_rules::case_4_all_matched_cmd_sub_is_still_allowed ... ok
[INFO] [stdout] test compound_command_evaluation::control_structure_subcommand_extraction::case_1_if_then_with_deny ... ok
[INFO] [stdout] test compound_command_evaluation::command_substitution_with_redirects_no_stack_overflow::case_1_cmd_sub_with_redirect_and_pipe ... ok
[INFO] [stdout] test compound_command_evaluation::control_structure_subcommand_extraction::case_3_if_all_allowed ... ok
[INFO] [stdout] test compound_command_evaluation::control_structure_subcommand_extraction::case_2_if_else_deny_in_else ... ok
[INFO] [stdout] test compound_command_evaluation::defaults_action_absent_compound_unmatched_asks::case_3_no_defaults_all_matched ... ok
[INFO] [stdout] test compound_command_evaluation::control_structure_subcommand_extraction::case_5_case_statement_with_deny ... ok
[INFO] [stdout] test compound_command_evaluation::control_structure_subcommand_extraction::case_8_negated_command_in_if_allowed ... ok
[INFO] [stdout] test compound_command_evaluation::defaults_action_absent_compound_unmatched_asks::case_2_no_defaults_all_unmatched ... ok
[INFO] [stdout] test compound_command_evaluation::defaults_action_absent_compound_unmatched_asks::case_1_no_defaults_unmatched_wins_over_allow ... ok
[INFO] [stdout] test compound_command_evaluation::control_structure_subcommand_extraction::case_6_negated_command_allowed ... ok
[INFO] [stdout] test compound_command_evaluation::control_structure_subcommand_extraction::case_4_while_loop_with_deny ... ok
[INFO] [stdout] test compound_command_evaluation::control_structure_subcommand_extraction::case_7_negated_command_deny ... ok
[INFO] [stdout] test compound_command_evaluation::empty_rules_compound_returns_default ... ok
[INFO] [stdout] test compound_command_evaluation::each_command_in_compound_is_evaluated_individually::case_5_deny_in_or_chain ... ok
[INFO] [stdout] test alias_expansion::kubectl_alias_factors_out_namespace_flag::case_1_no_flag ... ok
[INFO] [stdout] test compound_command_evaluation::evaluate_command_splits_compound_before_matching::case_4_unmatched_sub_command_escalates_to_ask ... ok
[INFO] [stdout] test compound_command_evaluation::evaluate_command_splits_compound_before_matching::case_8_semicolon_separated_deny ... ok
[INFO] [stdout] test compound_command_evaluation::evaluate_command_splits_compound_before_matching::case_6_pipe_separated ... ok
[INFO] [stdout] test compound_command_evaluation::evaluate_command_splits_compound_before_matching::case_2_cd_and_rm_deny_wins ... ok
[INFO] [stdout] test compound_command_evaluation::evaluate_command_splits_compound_before_matching::case_3_all_sub_commands_allowed ... ok
[INFO] [stdout] test compound_command_evaluation::each_command_in_compound_is_evaluated_individually::case_3_pipe_and_chain_mixed ... ok
[INFO] [stdout] test compound_command_evaluation::deny_only_sandbox_presets_no_contradiction ... ok
[INFO] [stdout] test compound_command_evaluation::each_command_in_compound_is_evaluated_individually::case_2_and_chain_all_allowed ... ok
[INFO] [stdout] test compound_command_evaluation::command_substitution_in_strings::case_2_cmd_sub_in_double_quotes_all_allowed ... ok
[INFO] [stdout] test compound_command_evaluation::each_command_in_compound_is_evaluated_individually::case_1_pipe_all_allowed ... ok
[INFO] [stdout] test compound_command_evaluation::flag_negation_empty_tokens_in_compound::case_1_sort_no_args_in_pipeline ... ok
[INFO] [stdout] test compound_command_evaluation::evaluate_command_splits_compound_before_matching::case_7_or_separated_deny ... ok
[INFO] [stdout] test compound_command_evaluation::flag_negation_empty_tokens_in_compound::case_2_sort_with_banned_flag_in_pipeline ... ok
[INFO] [stdout] test compound_command_evaluation::for_loop_subcommand_extraction::case_1_for_loop_all_allowed ... ok
[INFO] [stdout] test compound_command_evaluation::evaluate_command_splits_compound_before_matching::case_1_cd_wildcard_does_not_match_entire_compound ... ok
[INFO] [stdout] test compound_command_evaluation::for_loop_subcommand_extraction::case_2_for_loop_with_deny ... ok
[INFO] [stdout] test compound_command_evaluation::evaluate_command_splits_compound_before_matching::case_5_unmatched_with_defaults_action_deny ... ok
[INFO] [stdout] test compound_command_evaluation::mixed_operators_compound::case_2_mixed_with_deny ... ok
[INFO] [stdout] test compound_command_evaluation::function_definition_subcommand_extraction::case_1_function_def_with_deny ... ok
[INFO] [stdout] test compound_command_evaluation::function_definition_subcommand_extraction::case_2_function_def_all_allowed ... ok
[INFO] [stdout] test compound_command_evaluation::mixed_operators_compound::case_3_pipe_then_semicolon ... ok
[INFO] [stdout] test compound_command_evaluation::redirected_statements_match_rules::case_1_stdout_redirect ... ok
[INFO] [stdout] test compound_command_evaluation::partial_sandbox_compound ... ok
[INFO] [stdout] test compound_command_evaluation::heredoc_in_compound_does_not_shadow_trailing_arm::case_2_pipe_quoted_heredoc ... ok
[INFO] [stdout] test compound_command_evaluation::heredoc_in_compound_does_not_shadow_trailing_arm::case_1_pipe_unquoted_heredoc ... ok
[INFO] [stdout] test compound_command_evaluation::heredoc_in_compound_does_not_shadow_trailing_arm::case_3_pipe_double_quoted_heredoc ... ok
[INFO] [stdout] test compound_command_evaluation::heredoc_in_compound_does_not_shadow_trailing_arm::case_5_and_chain_after_heredoc ... ok
[INFO] [stdout] test compound_command_evaluation::heredoc_in_compound_does_not_shadow_trailing_arm::case_4_pipe_tab_strip_heredoc ... ok
[INFO] [stdout] test compound_command_evaluation::heredoc_in_compound_does_not_shadow_trailing_arm::case_6_or_chain_after_heredoc ... ok
[INFO] [stdout] test compound_command_evaluation::heredoc_in_compound_does_not_shadow_trailing_arm::case_7_heredoc_into_unmatched_command_asks ... ok
[INFO] [stdout] test compound_command_evaluation::heredoc_in_compound_does_not_shadow_trailing_arm::case_9_heredoc_and_then_pipe_with_deny ... ok
[INFO] [stdout] test compound_command_evaluation::heredoc_in_compound_does_not_shadow_trailing_arm::case_8_heredoc_pipe_chain_with_deny_at_end ... ok
[INFO] [stdout] test compound_command_evaluation::each_command_in_compound_is_evaluated_individually::case_4_deny_in_pipe ... ok
[INFO] [stdout] test compound_command_evaluation::for_loop_subcommand_extraction::case_3_for_loop_mixed ... ok
[INFO] [stdout] test compound_command_evaluation::mixed_operators_compound::case_1_semicolon_pipe_and ... ok
[INFO] [stdout] test compound_command_evaluation::redirected_statements_match_rules::case_6_redirect_in_pipeline ... ok
[INFO] [stdout] test compound_command_evaluation::unmatched_sub_command_uses_defaults_action::case_3_allow_plus_unmatched_defaults_allow ... ok
[INFO] [stdout] test compound_command_evaluation::sandbox_contradiction_preserves_existing_ask ... ok
[INFO] [stdout] test compound_command_evaluation::redirected_statements_match_rules::case_2_stderr_redirect ... ok
[INFO] [stdout] test compound_command_evaluation::unmatched_sub_command_uses_defaults_action::case_1_allow_plus_unmatched_defaults_ask ... ok
[INFO] [stdout] test compound_command_evaluation::redirected_statements_match_rules::case_5_deny_still_works_with_redirect ... ok
[INFO] [stdout] test compound_command_evaluation::sandbox_strictest_wins_aggregation::case_2_deny_paths_union ... ok
[INFO] [stdout] test config_to_rule_evaluation::allow_export_wildcard_matches_declaration_command::case_2_export_bare_name ... ok
[INFO] [stdout] test config_to_rule_evaluation::allow_export_wildcard_matches_declaration_command::case_4_export_with_arg ... ok
[INFO] [stdout] test config_to_rule_evaluation::allow_other_declaration_keywords_match::case_1_declare_x ... ok
[INFO] [stdout] test compound_command_evaluation::redirected_statements_match_rules::case_3_devnull_redirect ... ok
[INFO] [stdout] test compound_command_evaluation::redirected_statements_match_rules::case_4_compound_with_redirect ... ok
[INFO] [stdout] test config_to_rule_evaluation::allow_other_declaration_keywords_match::case_2_readonly_assignment ... ok
[INFO] [stdout] test config_to_rule_evaluation::allow_other_declaration_keywords_match::case_3_local_assignment ... ok
[INFO] [stdout] test config_to_rule_evaluation::allow_other_declaration_keywords_match::case_4_typeset_assignment ... ok
[INFO] [stdout] test config_to_rule_evaluation::alternation_glob_wildcard_config::case_1_glob_alt_list_buckets ... ok
[INFO] [stdout] test compound_command_evaluation::shell_construct_subcommand_extraction::case_2_subshell_all_allowed ... ok
[INFO] [stdout] test config_to_rule_evaluation::allow_rule_with_sandbox_propagates_preset ... ok
[INFO] [stdout] test config_to_rule_evaluation::allow_unset_wildcard_matches_unset_command::case_2_unset_multiple ... ok
[INFO] [stdout] test config_to_rule_evaluation::allow_export_wildcard_matches_declaration_command::case_3_export_short_flag ... ok
[INFO] [stdout] test config_to_rule_evaluation::alternation_glob_wildcard_config::case_2_glob_alt_get_object ... ok
[INFO] [stdout] test config_to_rule_evaluation::alternation_glob_wildcard_config::case_3_glob_alt_describe_instances ... ok
[INFO] [stdout] test compound_command_evaluation::shell_construct_subcommand_extraction::case_1_subshell_with_deny ... ok
[INFO] [stdout] test compound_command_evaluation::sandbox_strictest_wins_aggregation::case_1_writable_roots_intersection ... ok
[INFO] [stdout] test compound_command_evaluation::sandbox_strictest_wins_aggregation::case_3_network_denied_by_any ... ok
[INFO] [stdout] test compound_command_evaluation::unmatched_sub_command_uses_defaults_action::case_2_allow_plus_unmatched_defaults_deny ... ok
[INFO] [stdout] test compound_command_evaluation::writable_contradiction_escalates_to_ask ... ok
[INFO] [stdout] test config_to_rule_evaluation::alternation_glob_wildcard_config::case_4_glob_alt_delete_blocked ... ok
[INFO] [stdout] test compound_command_evaluation::single_sandbox_preset_via_compound ... ok
[INFO] [stdout] test compound_command_evaluation::three_preset_progressive_intersection ... ok
[INFO] [stdout] test config_to_rule_evaluation::alternation_order_independent::case_4_non_flag_alt_mismatch ... ok
[INFO] [stdout] test config_to_rule_evaluation::ask_response_preserves_message ... ok
[INFO] [stdout] test config_to_rule_evaluation::alternation_order_independent::case_1_non_flag_alt_skips_flags ... ok
[INFO] [stdout] test config_to_rule_evaluation::allow_unset_wildcard_matches_unset_command::case_1_unset_single ... ok
[INFO] [stdout] test config_to_rule_evaluation::backslash_before_closing_quote ... ok
[INFO] [stdout] test config_to_rule_evaluation::backslash_followed_by_space::case_1_backslash_then_wildcard_matches ... ok
[INFO] [stdout] test config_to_rule_evaluation::ask_without_message_has_none ... ok
[INFO] [stdout] test compound_command_evaluation::unmatched_sub_command_uses_defaults_action::case_4_deny_rule_still_wins_over_resolved_default ... ok
[INFO] [stdout] test config_to_rule_evaluation::allow_export_wildcard_matches_declaration_command::case_1_export_assignment ... ok
[INFO] [stdout] test compound_command_evaluation::writable_contradiction_does_not_downgrade_deny ... ok
[INFO] [stdout] test config_to_rule_evaluation::alternation_order_independent::case_2_non_flag_alt_second_variant ... ok
[INFO] [stdout] test config_to_rule_evaluation::backslash_followed_by_space::case_2_backslash_then_wildcard_no_match ... ok
[INFO] [stdout] test config_to_rule_evaluation::boolean_flag_not_broken_by_equals_splitting::case_1_boolean_flag_space_separated ... ok
[INFO] [stdout] test config_to_rule_evaluation::alternation_order_independent::case_3_non_flag_alt_no_flag ... ok
[INFO] [stdout] test config_to_rule_evaluation::config_validation_rejects_invalid::case_1_no_action_key ... ok
[INFO] [stdout] test config_to_rule_evaluation::command_position_glob_patterns::case_2_deny_absolute_path_no_args ... ok
[INFO] [stdout] test config_to_rule_evaluation::command_position_glob_patterns::case_3_deny_absolute_path_does_not_match_relative ... ok
[INFO] [stdout] test config_to_rule_evaluation::command_position_glob_patterns::case_5_name_prefix_glob_does_not_match_other ... ok
[INFO] [stdout] test config_to_rule_evaluation::command_position_glob_patterns::case_7_escaped_star_in_command_does_not_match_other ... ok
[INFO] [stdout] test config_to_rule_evaluation::config_validation_rejects_invalid::case_2_deny_with_sandbox ... ok
[INFO] [stdout] test config_to_rule_evaluation::boolean_flag_not_broken_by_equals_splitting::case_3_no_flag_allowed ... ok
[INFO] [stdout] test config_to_rule_evaluation::command_position_glob_patterns::case_4_name_prefix_glob_matches ... ok
[INFO] [stdout] test config_to_rule_evaluation::command_position_glob_patterns::case_6_escaped_star_in_command_only_matches_literal_star ... ok
[INFO] [stdout] test config_to_rule_evaluation::boolean_flag_not_broken_by_equals_splitting::case_2_boolean_flag_with_multiple_args ... ok
[INFO] [stdout] test config_to_rule_evaluation::deny_response_preserves_message_and_fix_suggestion ... ok
[INFO] [stdout] test config_to_rule_evaluation::config_validation_collects_multiple_errors ... ok
[INFO] [stdout] test config_to_rule_evaluation::boolean_flag_not_broken_by_equals_splitting::case_4_boolean_flag_equals_not_split ... ok
[INFO] [stdout] test config_to_rule_evaluation::double_dash_positional_matching::case_3_checkout_ref_then_double_dash_rejected ... ok
[INFO] [stdout] test config_to_rule_evaluation::double_dash_positional_matching::case_2_checkout_file_only_with_c ... ok
[INFO] [stdout] test config_to_rule_evaluation::config_validation_rejects_undefined_sandbox ... ok
[INFO] [stdout] test config_to_rule_evaluation::double_dash_remains_positional::case_1_double_dash_correct_position ... ok
[INFO] [stdout] test config_to_rule_evaluation::double_dash_positional_matching::case_4_checkout_ref_then_double_dash_with_c_rejected ... ok
[INFO] [stdout] test config_to_rule_evaluation::double_dash_remains_positional::case_2_double_dash_wrong_position ... ok
[INFO] [stdout] test config_to_rule_evaluation::double_dash_positional_matching::case_1_checkout_file_only ... ok
[INFO] [stdout] test config_to_rule_evaluation::empty_rules_returns_default ... ok
[INFO] [stdout] test config_to_rule_evaluation::defaults_sandbox_does_not_apply_to_rules_without_sandbox ... ok
[INFO] [stdout] test config_to_rule_evaluation::explicit_deny_wins::case_1_deny_over_allow ... ok
[INFO] [stdout] test config_to_rule_evaluation::equals_sign_in_flag_token::case_2_different_value_no_match ... ok
[INFO] [stdout] test config_to_rule_evaluation::equals_sign_in_flag_token::case_1_equals_flag_matches ... ok
[INFO] [stdout] test config_to_rule_evaluation::flag_equals_value_with_wildcard_pattern::case_1_space_separated_flag_matches ... ok
[INFO] [stdout] test config_to_rule_evaluation::explicit_deny_wins::case_2_deny_over_ask ... ok
[INFO] [stdout] test config_to_rule_evaluation::explicit_deny_wins::case_4_deny_wins_over_both ... ok
[INFO] [stdout] test config_to_rule_evaluation::export_in_pipeline_is_evaluated_per_stage ... ok
[INFO] [stdout] test config_to_rule_evaluation::explicit_deny_wins::case_3_ask_over_allow ... ok
[INFO] [stdout] test config_to_rule_evaluation::command_position_glob_patterns::case_1_deny_absolute_path_with_args ... ok
[INFO] [stdout] test config_to_rule_evaluation::duplicate_rules_deny_wins ... ok
[INFO] [stdout] test config_to_rule_evaluation::flag_equals_value_with_wildcard_pattern::case_2_equals_joined_flag_matches ... ok
[INFO] [stdout] test config_to_rule_evaluation::flag_equals_value_with_wildcard_pattern::case_3_short_flag_space_separated ... ok
[INFO] [stdout] test config_to_rule_evaluation::flag_equals_value_with_wildcard_pattern::case_4_short_flag_equals_joined ... ok
[INFO] [stdout] test config_to_rule_evaluation::flag_equals_value_with_wildcard_pattern::case_5_no_output_flag_allowed ... ok
[INFO] [stdout] test config_to_rule_evaluation::flag_negation_empty_tokens::case_5_find_safe_args_allowed ... ok
[INFO] [stdout] test config_to_rule_evaluation::flag_negation_empty_tokens::case_4_find_no_args_allowed ... ok
[INFO] [stdout] test config_to_rule_evaluation::flag_negation_order_independent::case_1_flag_negation_rejects_at_any_position ... ok
[INFO] [stdout] test config_to_rule_evaluation::flag_negation_order_independent::case_3_flag_negation_allows_safe_command ... ok
[INFO] [stdout] test config_to_rule_evaluation::flag_negation_empty_tokens::case_1_sort_no_args_allowed ... ok
[INFO] [stdout] test config_to_rule_evaluation::flag_negation_equals_form::case_5_alt_negation_equals_rejected ... ok
[INFO] [stdout] test config_to_rule_evaluation::flag_negation_equals_form::case_1_equals_form_rejected ... ok
[INFO] [stdout] test config_to_rule_evaluation::flag_negation_empty_tokens::case_2_sort_safe_flag_allowed ... ok
[INFO] [stdout] test config_to_rule_evaluation::full_config_evaluates_correctly::case_1_allowed_command ... ok
[INFO] [stdout] test config_to_rule_evaluation::flag_negation_empty_tokens::case_3_sort_banned_flag_rejected ... ok
[INFO] [stdout] test config_to_rule_evaluation::flag_negation_equals_form::case_2_space_form_rejected ... ok
[INFO] [stdout] test config_to_rule_evaluation::flag_negation_empty_tokens::case_6_find_banned_flag_rejected ... ok
[INFO] [stdout] test config_to_rule_evaluation::full_config_evaluates_correctly::case_2_denied_command ... ok
[INFO] [stdout] test config_to_rule_evaluation::flag_negation_equals_form::case_3_different_flag_equals_allowed ... ok
[INFO] [stdout] test config_to_rule_evaluation::full_config_evaluates_correctly::case_3_asked_command ... ok
[INFO] [stdout] test config_to_rule_evaluation::flag_negation_order_independent::case_2_flag_negation_rejects_alt_at_any_position ... ok
[INFO] [stdout] test config_to_rule_evaluation::fused_short_flag_value::case_2_space_separated_still_works ... ok
[INFO] [stdout] test config_to_rule_evaluation::flag_negation_equals_form::case_4_no_flag_allowed ... ok
[INFO] [stdout] test config_to_rule_evaluation::full_config_evaluates_correctly::case_4_unmatched_command ... ok
[INFO] [stdout] test config_to_rule_evaluation::fused_short_flag_value::case_1_fused_short_flag_matches ... ok
[INFO] [stdout] test config_to_rule_evaluation::literal_glob_wildcard_config::case_1_literal_glob_deny_matches ... ok
[INFO] [stdout] test config_to_rule_evaluation::flag_negation_equals_form::case_6_alt_negation_equals_different_flag_allowed ... ok
[INFO] [stdout] test config_to_rule_evaluation::fused_short_flag_value::case_7_optional_space_separated ... ok
[INFO] [stdout] test config_to_rule_evaluation::literal_glob_wildcard_config::case_3_literal_glob_deny_no_match ... ok
[INFO] [stdout] test config_to_rule_evaluation::fused_short_flag_value::case_3_fused_multichar_value ... ok
[INFO] [stdout] test config_to_rule_evaluation::fused_short_flag_value::case_4_optional_flag_absent_still_matches ... ok
[INFO] [stdout] test config_to_rule_evaluation::fused_short_flag_value::case_6_optional_absent ... ok
[INFO] [stdout] test config_to_rule_evaluation::literal_order_independent::case_3_flag_after_literal ... ok
[INFO] [stdout] test config_to_rule_evaluation::literal_order_independent::case_2_literal_at_normal_position ... ok
[INFO] [stdout] test config_to_rule_evaluation::multi_word_alternation_allow_and_deny::case_1_npx_denied ... ok
[INFO] [stdout] test config_to_rule_evaluation::literal_glob_wildcard_config::case_2_literal_glob_deny_matches_variant ... ok
[INFO] [stdout] test config_to_rule_evaluation::long_flag_negation_with_preceding_literals::case_2_safe_trailing_arg_allowed ... ok
[INFO] [stdout] test config_to_rule_evaluation::multi_word_alternation_allow_and_deny::case_2_bare_denied ... ok
[INFO] [stdout] test config_to_rule_evaluation::negated_literal_glob_wildcard_config::case_2_negated_literal_glob_denies ... ok
[INFO] [stdout] test config_to_rule_evaluation::negation_alternation_glob_wildcard_config::case_1_negated_glob_allows_delete ... ok
[INFO] [stdout] test config_to_rule_evaluation::multi_word_alternation_allow_and_deny::case_4_bare_allowed ... ok
[INFO] [stdout] test config_to_rule_evaluation::literal_order_independent::case_4_literal_mismatch ... ok
[INFO] [stdout] test config_to_rule_evaluation::negation_alternation_glob_wildcard_config::case_3_negated_glob_denies_describe ... ok
[INFO] [stdout] test config_to_rule_evaluation::no_sandbox_rule_returns_none_preset ... ok
[INFO] [stdout] test config_to_rule_evaluation::fused_short_flag_value::case_5_fused_in_optional_group ... ok
[INFO] [stdout] test config_to_rule_evaluation::literal_order_independent::case_1_flag_before_literal ... ok
[INFO] [stdout] test config_to_rule_evaluation::long_flag_negation_with_preceding_literals::case_4_banned_flag_with_arg_rejected ... ok
[INFO] [stdout] test config_to_rule_evaluation::long_flag_negation_with_preceding_literals::case_1_no_trailing_args_allowed ... ok
[INFO] [stdout] test config_to_rule_evaluation::multi_word_alternation_config::case_1_npx_prettier_allowed ... ok
[INFO] [stdout] test config_to_rule_evaluation::multi_word_alternation_config::case_2_bunx_prettier_allowed ... ok
[INFO] [stdout] test config_to_rule_evaluation::multi_word_alternation_config::case_3_bare_prettier_allowed ... ok
[INFO] [stdout] test config_to_rule_evaluation::negated_literal_glob_wildcard_config::case_1_negated_literal_glob_allows ... ok
[INFO] [stdout] test config_to_rule_evaluation::multi_word_alternation_config::case_4_unrelated_command_default ... ok
[INFO] [stdout] test config_to_rule_evaluation::negation_alternation_glob_wildcard_config::case_2_negated_glob_denies_list_pods ... ok
[INFO] [stdout] test config_to_rule_evaluation::multi_word_alternation_allow_and_deny::case_3_npx_allowed ... ok
[INFO] [stdout] test config_to_rule_evaluation::long_flag_negation_with_preceding_literals::case_3_banned_flag_rejected ... ok
[INFO] [stdout] test config_to_rule_evaluation::preset_merge_wrappers_appended ... ok
[INFO] [stdout] test config_to_rule_evaluation::quoted_and_escaped_star_matching::case_1_quoted_star_glob_matches ... ok
[INFO] [stdout] test config_to_rule_evaluation::quoted_and_escaped_star_matching::case_5_escaped_star_no_glob ... ok
[INFO] [stdout] test config_to_rule_evaluation::quoted_glob_with_space::case_1_quoted_glob_with_space_matches ... ok
[INFO] [stdout] test config_to_rule_evaluation::negation_alternation_glob_wildcard_config::case_4_negated_glob_denies_get ... ok
[INFO] [stdout] test config_to_rule_evaluation::preset_merge_paths_are_appended_per_key ... ok
[INFO] [stdout] test config_to_rule_evaluation::quoted_glob_with_space::case_2_quoted_glob_with_space_no_match ... ok
[INFO] [stdout] test config_to_rule_evaluation::quoted_flag_like_value::case_1_quoted_flag_value_different_order ... ok
[INFO] [stdout] test config_to_rule_evaluation::quoted_and_escaped_star_matching::case_4_escaped_star_exact_match ... ok
[INFO] [stdout] test config_to_rule_evaluation::rule_order_independence::case_1_deny_before_allow ... ok
[INFO] [stdout] test config_to_rule_evaluation::preset_merge_appends_rules_and_overrides_defaults ... ok
[INFO] [stdout] test config_to_rule_evaluation::rule_order_independence::case_3_ask_before_deny ... ok
[INFO] [stdout] test config_to_rule_evaluation::unicode_in_commands::case_1_unicode_arg_allowed ... ok
[INFO] [stdout] test config_to_rule_evaluation::rule_order_independence::case_2_allow_before_deny ... ok
[INFO] [stdout] test config_to_rule_evaluation::unicode_in_commands::case_2_unicode_in_path ... ok
[INFO] [stdout] test config_to_rule_evaluation::quoted_flag_like_value::case_2_quoted_flag_value_wrong_value_rejects ... ok
[INFO] [stdout] test config_to_rule_evaluation::wildcard_command_patterns::case_1_star_help_matches_any_command ... ok
[INFO] [stdout] test config_to_rule_evaluation::wildcard_command_patterns::case_2_star_help_matches_curl ... ok
[INFO] [stdout] test config_to_rule_evaluation::wildcard_command_patterns::case_3_deny_rm_star_vs_allow_star_help ... ok
[INFO] [stdout] test config_to_rule_evaluation::wildcard_command_patterns::case_4_allow_star_help_unmatched_without_flag ... ok
[INFO] [stdout] test config_to_rule_evaluation::wildcard_deny_beats_specific_allow::case_1_deny_git_star_overrides_allow_git_status ... ok
[INFO] [stdout] test config_to_rule_evaluation::quoted_and_escaped_star_matching::case_3_quoted_star_glob_no_match ... ok
[INFO] [stdout] test config_to_rule_evaluation::quoted_and_escaped_star_matching::case_2_quoted_star_glob_exact ... ok
[INFO] [stdout] test config_to_rule_evaluation::rule_order_independence::case_4_deny_before_ask ... ok
[INFO] [stdout] test config_to_rule_evaluation::wildcard_deny_beats_specific_allow::case_2_deny_git_star_overrides_allow_git_diff ... ok
[INFO] [stdout] test config_to_rule_evaluation::wildcard_deny_beats_specific_allow::case_3_unrelated_command_not_affected ... ok
[INFO] [stdout] test config_to_rule_evaluation::yaml_config_evaluates_commands::case_2_deny_matches ... ok
[INFO] [stdout] test config_to_rule_evaluation::yaml_config_evaluates_commands::case_1_allow_matches ... ok
[INFO] [stdout] test extends_resolution::extends_resolves_child_rules::case_3_child_rule_no_match_returns_default ... ok
[INFO] [stdout] test config_to_rule_evaluation::yaml_config_evaluates_commands::case_4_no_match_returns_default ... ok
[INFO] [stdout] test extends_resolution::extends_resolves_child_rules::case_1_child_allow_rule_applied ... ok
[INFO] [stdout] test extends_resolution::extends_resolved_relative_to_config_dir_not_cwd ... ok
[INFO] [stdout] test extends_resolution::no_extends_returns_config_unchanged ... ok
[INFO] [stdout] test config_to_rule_evaluation::yaml_config_evaluates_commands::case_3_ask_matches ... ok
[INFO] [stdout] test extends_resolution::parent_rules_override_child_rules::case_3_parent_deny_over_child_ask ... ok
[INFO] [stdout] test extends_resolution::parent_rules_override_child_rules::case_1_parent_ask_over_child_allow ... ok
[INFO] [stdout] test extends_resolution::extends_resolves_child_rules::case_2_child_ask_rule_applied ... ok
[INFO] [stdout] test extends_resolution::multiple_extends_rules_are_merged::case_2_extra_then_base ... ok
[INFO] [stdout] test extends_resolution::nested_extends_resolved_transitively ... ok
[INFO] [stdout] test extends_resolution::multiple_extends_rules_are_merged::case_1_base_then_extra ... ok
[INFO] [stdout] test extends_resolution::parent_rules_override_child_rules::case_2_parent_deny_over_child_allow ... ok
[INFO] [stdout] test flag_group_evaluation::config_without_flag_groups_still_works ... ok
[INFO] [stdout] test flag_group_evaluation::bool_flag_group_not_present_fails_match ... ok
[INFO] [stdout] test flag_group_evaluation::flag_group_inside_optional_group_is_rejected_at_evaluation ... ok
[INFO] [stdout] test flag_group_evaluation::flag_group_validation_errors::case_1_undefined_flag_group_reference ... ok
[INFO] [stdout] test flag_group_evaluation::flag_group_validation_errors::case_2_invalid_flag_name ... ok
[INFO] [stdout] test flag_group_evaluation::flag_group_validation_errors::case_3_empty_definition ... ok
[INFO] [stdout] test flag_group_evaluation::value_restricted_flag_group::case_1_allowed_value ... ok
[INFO] [stdout] test flag_group_evaluation::value_restricted_flag_group::case_2_allowed_value_head ... ok
[INFO] [stdout] test flag_group_evaluation::value_restricted_flag_group::case_3_disallowed_value ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_01_p01_no_settings_user ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_02_p02_no_settings_user_existing_overwrite_yes ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_03_p03_no_settings_user_existing_overwrite_no ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_04_p04_no_settings_project ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_05_p05_no_settings_project_existing_overwrite_yes ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_06_p06_no_settings_project_existing_overwrite_no ... ok
[INFO] [stdout] test flag_group_evaluation::bool_flag_group_captures_presence ... ok
[INFO] [stdout] test flag_group_evaluation::flag_groups_collects_all_occurrences ... ok
[INFO] [stdout] test flag_group_evaluation::field_flag_group_routes_mutation_to_ask::case_06_multi_mixed_aliases_no_mutation ... ok
[INFO] [stdout] test flag_group_evaluation::field_flag_group_routes_mutation_to_ask::case_10_multi_mutation_last ... ok
[INFO] [stdout] test flag_group_evaluation::field_flag_group_routes_mutation_to_ask::case_04_single_long_field ... ok
[INFO] [stdout] test flag_group_evaluation::field_flag_group_routes_mutation_to_ask::case_05_multi_no_mutation ... ok
[INFO] [stdout] test flag_group_evaluation::flag_groups_empty_when_no_flag_in_group_used ... ok
[INFO] [stdout] test flag_group_evaluation::field_flag_group_routes_mutation_to_ask::case_07_single_mutation ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_07_p07_no_bash_no_hook_user_apply_yes ... ok
[INFO] [stdout] test flag_group_evaluation::field_flag_group_routes_mutation_to_ask::case_09_multi_mutation_first ... ok
[INFO] [stdout] test flag_group_evaluation::multiple_flag_groups_independent ... ok
[INFO] [stdout] test flag_group_evaluation::flag_groups_supports_equals_joined_values ... ok
[INFO] [stdout] test flag_group_evaluation::field_flag_group_routes_mutation_to_ask::case_08_single_mutation_long ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_16_p16_no_bash_no_hook_project_existing_overwrite_no ... ok
[INFO] [stdout] test flag_group_evaluation::field_flag_group_routes_mutation_to_ask::case_03_single_short_capital_f ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_17_p17_no_bash_hook_exists_project ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_18_p18_no_bash_hook_exists_project_existing_overwrite_yes ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_10_p10_no_bash_no_hook_user_existing_apply_no ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_09_p09_no_bash_no_hook_user_apply_no ... ok
[INFO] [stdout] test flag_group_evaluation::field_flag_group_routes_mutation_to_ask::case_01_single_short_f ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_11_p11_no_bash_hook_exists_user ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_08_p08_no_bash_no_hook_user_existing_apply_yes ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_14_p14_no_bash_no_hook_project ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_27_p27_bash_no_hook_user_existing_mig_no_app_no ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_20_p20_bash_no_hook_user_mig_yes_app_yes ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_19_p19_no_bash_hook_exists_project_existing_overwrite_no ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_21_p21_bash_no_hook_user_existing_mig_yes_app_yes ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_26_p26_bash_no_hook_user_mig_no_app_no ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_15_p15_no_bash_no_hook_project_existing_overwrite_yes ... ok
[INFO] [stdout] test flag_group_evaluation::field_flag_group_routes_mutation_to_ask::case_02_single_long_raw_field ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_12_p12_no_bash_hook_exists_user_existing_overwrite_yes ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_35_p35_bash_hook_user_existing_mig_no_app_no ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_29_p29_bash_hook_user_existing_mig_yes_app_yes ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_22_p22_bash_no_hook_user_mig_yes_app_no ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_28_p28_bash_hook_user_mig_yes_app_yes ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_23_p23_bash_no_hook_user_existing_mig_yes_app_no ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_37_p37_bash_no_hook_project_existing_mig_yes_app_yes ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_41_p41_bash_no_hook_project_existing_mig_no_app_yes ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_38_p38_bash_no_hook_project_mig_yes_app_no ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_39_p39_bash_no_hook_project_existing_mig_yes_app_no ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_25_p25_bash_no_hook_user_existing_mig_no_app_yes ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_13_p13_no_bash_hook_exists_user_existing_overwrite_no ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_32_p32_bash_hook_user_mig_no_app_yes ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_33_p33_bash_hook_user_existing_mig_no_app_yes ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_31_p31_bash_hook_user_existing_mig_yes_app_no ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_42_p42_bash_no_hook_project_mig_no_app_no ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_30_p30_bash_hook_user_mig_yes_app_no ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_34_p34_bash_hook_user_mig_no_app_no ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_24_p24_bash_no_hook_user_mig_no_app_yes ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_40_p40_bash_no_hook_project_mig_no_app_yes ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_48_p48_bash_hook_project_mig_no_app_yes ... ok
[INFO] [stdout] test migrate_config::migrate_single_file::case_1_rewrites_legacy_sandbox_fs ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_47_p47_bash_hook_project_existing_mig_yes_app_no ... ok
[INFO] [stdout] test migrate_config::migrate_follows_local_extends ... ok
[INFO] [stdout] test migrate_config::migrate_single_file::case_2_no_changes_when_already_new_format ... ok
[INFO] [stdout] test migrate_config::migrate_single_file::case_3_targets_specific_file ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_43_p43_bash_no_hook_project_existing_mig_no_app_no ... ok
[INFO] [stdout] test init_wizard::scope_select_without_explicit_scope::case_2_select_project ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_49_p49_bash_hook_project_existing_mig_no_app_yes ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_45_p45_bash_hook_project_existing_mig_yes_app_yes ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_44_p44_bash_hook_project_mig_yes_app_yes ... ok
[INFO] [stdout] test migrate_config::migrate_single_file::case_4_skips_remote_extends ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_46_p46_bash_hook_project_mig_yes_app_no ... ok
[INFO] [stdout] test optional_notation_and_path_ref::alternation_matches_any_variant::case_1_post ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_51_p51_bash_hook_project_existing_mig_no_app_no ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_50_p50_bash_hook_project_mig_no_app_no ... ok
[INFO] [stdout] test init_wizard::scope_select_without_explicit_scope::case_1_select_user ... ok
[INFO] [stdout] test optional_notation_and_path_ref::alternation_matches_any_variant::case_2_put ... ok
[INFO] [stdout] test optional_notation_and_path_ref::flag_with_value_position_independence::case_1_flag_before_url ... ok
[INFO] [stdout] test optional_notation_and_path_ref::flag_with_value_position_independence::case_4_long_flag_after_url ... ok
[INFO] [stdout] test optional_notation_and_path_ref::multiple_path_groups::case_3_safe_allowed ... ok
[INFO] [stdout] test optional_notation_and_path_ref::flag_with_value_position_independence::case_5_flag_between_args ... ok
[INFO] [stdout] test optional_notation_and_path_ref::negation_matches_everything_except::case_2_delete_denied ... ok
[INFO] [stdout] test optional_notation_and_path_ref::flag_with_value_position_independence::case_3_long_flag_before_url ... ok
[INFO] [stdout] test optional_notation_and_path_ref::multiple_path_groups::case_2_config_read_denied ... ok
[INFO] [stdout] test optional_notation_and_path_ref::flag_with_value_position_independence::case_7_equals_joined_long ... ok
[INFO] [stdout] test optional_notation_and_path_ref::flag_with_value_position_independence::case_6_equals_joined_short ... ok
[INFO] [stdout] test init_wizard::exhaustive_wizard_test::case_36_p36_bash_no_hook_project_mig_yes_app_yes ... ok
[INFO] [stdout] test optional_notation_and_path_ref::flag_with_value_position_independence::case_2_flag_after_url ... ok
[INFO] [stdout] test optional_notation_and_path_ref::alternation_matches_any_variant::case_3_patch ... ok
[INFO] [stdout] test optional_notation_and_path_ref::negation_matches_everything_except::case_1_post_denied ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_boolean_flag::case_2_with_f ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_in_deny_rule::case_2_with_force ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_in_deny_rule::case_1_without_force ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_with_path_ref::case_3_safe_no_flag ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_with_negation::case_3_force_push_develop_default ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_with_negation::case_2_force_push_master_denied ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_boolean_flag::case_1_without_f ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_with_negation::case_4_normal_push_main_default ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_with_negation::case_1_force_push_main_denied ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_in_deny_rule::case_3_with_short_force ... ok
[INFO] [stdout] test optional_notation_and_path_ref::multiple_path_groups::case_1_log_read_denied ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_with_path_ref::case_2_sensitive_with_flag ... ok
[INFO] [stdout] test optional_notation_and_path_ref::alternation_matches_any_variant::case_4_get ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_with_value::case_7_equals_joined_wrong_value ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_with_value::case_3_with_long_flag ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_with_value::case_5_equals_joined_short ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_with_wildcard_value::case_4_equals_joined ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_with_value::case_6_equals_joined_long ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_with_wildcard_value::case_1_without_c ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_with_wildcard_value::case_3_with_c_different_path ... ok
[INFO] [stdout] test optional_notation_and_path_ref::negation_matches_everything_except::case_3_get_not_matched ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_with_value_equals_joined::case_4_sort_only ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_with_wildcard_value::case_2_with_c ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_with_value::case_1_without_flag ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_with_value::case_2_with_short_flag ... ok
[INFO] [stdout] test optional_notation_and_path_ref::path_normalization_resolves_traversal::case_2_dot_resolves_to_match ... ok
[INFO] [stdout] test optional_notation_and_path_ref::path_normalization_resolves_traversal::case_3_multiple_dotdot_resolves ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_with_value::case_4_with_wrong_value ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_with_path_ref::case_4_safe_with_flag ... ok
[INFO] [stdout] test optional_notation_and_path_ref::path_normalization_resolves_traversal::case_1_dotdot_resolves_to_match ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_with_value_equals_joined::case_1_space_separated ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_with_path_ref::case_1_sensitive_no_flag ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_with_value_equals_joined::case_3_without_sort ... ok
[INFO] [stdout] test optional_notation_and_path_ref::path_normalization_resolves_traversal::case_5_unrelated_path_not_matched ... ok
[INFO] [stdout] test optional_notation_and_path_ref::path_ref_matches_defined_paths::case_2_env_local ... ok
[INFO] [stdout] test optional_notation_and_path_ref::path_ref_matches_defined_paths::case_4_etc_shadow ... ok
[INFO] [stdout] test optional_notation_and_path_ref::path_ref_with_alternation_command::case_1_cat_sensitive_denied ... ok
[INFO] [stdout] test optional_notation_and_path_ref::path_ref_matches_defined_paths::case_1_env_file ... ok
[INFO] [stdout] test optional_notation_and_path_ref::path_ref_matches_defined_paths::case_5_safe_file ... ok
[INFO] [stdout] test optional_notation_and_path_ref::path_ref_matches_defined_paths::case_6_readme ... ok
[INFO] [stdout] test optional_notation_and_path_ref::path_ref_with_alternation_command::case_3_head_sensitive_denied ... ok
[INFO] [stdout] test optional_notation_and_path_ref::path_ref_with_alternation_command::case_2_less_sensitive_denied ... ok
[INFO] [stdout] test optional_notation_and_path_ref::path_ref_matches_defined_paths::case_3_etc_passwd ... ok
[INFO] [stdout] test optional_notation_and_path_ref::path_ref_with_alternation_command::case_5_vim_sensitive_default ... ok
[INFO] [stdout] test optional_notation_and_path_ref::path_normalization_resolves_traversal::case_4_clean_path_still_matches ... ok
[INFO] [stdout] test optional_notation_and_path_ref::path_ref_with_alternation_command::case_4_cat_safe_default ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_with_value_equals_joined::case_2_equals_joined ... ok
[INFO] [stdout] test path_resolution::paths_resolved_relative_to_config_file::case_1_from_project_root ... ok
[INFO] [stdout] test path_resolution::sandbox_paths_resolved_relative_to_config_file::case_2_from_src ... ok
[INFO] [stdout] test path_resolution::preset_paths_resolved_relative_to_preset_file ... ok
[INFO] [stdout] test path_resolution::paths_resolved_relative_to_config_file::case_2_from_src ... ok
[INFO] [stdout] test path_resolution::global_and_local_use_different_base_dirs ... ok
[INFO] [stdout] test path_resolution::paths_resolved_relative_to_config_file::case_3_from_nested ... ok
[INFO] [stdout] test path_resolution::sandbox_paths_resolved_relative_to_config_file::case_1_from_project_root ... ok
[INFO] [stdout] test property_based::prop_deny_propagation_compound ... ok
[INFO] [stdout] test property_based::prop_deny_propagation_with_command_substitution ... ok
[INFO] [stdout] test property_based::prop_flag_negation_after_literal_rejects_when_present ... ok
[INFO] [stdout] test property_based::prop_escaped_star_suppresses_glob ... ok
[INFO] [stdout] test property_based::prop_equals_equivalence_optional_flag_with_value ... ok
[INFO] [stdout] test property_based::prop_equals_equivalence_flag_negation ... ok
[INFO] [stdout] test property_based::prop_compound_match_correctness ... ok
[INFO] [stdout] test property_based::prop_flag_negation_after_literal_allows_when_absent ... ok
[INFO] [stdout] test property_based::prop_evaluate_command_compound_guard_all_allowed ... ok
[INFO] [stdout] test property_based::prop_equals_equivalence_flag_with_fixed_value ... ok
[INFO] [stdout] test property_based::prop_flag_negation_rejects_when_present ... ok
[INFO] [stdout] test property_based::prop_evaluate_command_compound_guard_deny ... ok
[INFO] [stdout] test property_based::prop_alternation_matches_member ... ok
[INFO] [stdout] test property_based::prop_equals_equivalence_with_glob_value ... ok
[INFO] [stdout] test property_based::prop_flag_negation_allows_when_absent ... ok
[INFO] [stdout] test property_based::prop_literal_exact_match ... ok
[INFO] [stdout] test property_based::prop_equals_equivalence_flag_with_wildcard_value ... ok
[INFO] [stdout] test property_based::prop_flag_negation_position_independence ... ok
[INFO] [stdout] test property_based::prop_compound_unmatched_subcmd_not_allowed ... ok
[INFO] [stdout] test property_based::prop_literal_rejects_different ... ok
[INFO] [stdout] test property_based::prop_glob_literal_rejects_non_match ... ok
[INFO] [stdout] test property_based::prop_alternation_rejects_non_member ... ok
[INFO] [stdout] test property_based::prop_literal_matches_with_multiple_flags_before ... ok
[INFO] [stdout] test property_based::prop_flag_position_independence ... ok
[INFO] [stdout] test property_based::prop_quoted_literal_exact_match ... ok
[INFO] [stdout] test property_based::prop_optional_matches_with_flag ... ok
[INFO] [stdout] test property_based::prop_optional_matches_without_flag ... ok
[INFO] [stdout] test property_based::prop_glob_literal_matches ... ok
[INFO] [stdout] test property_based::prop_literal_matches_with_flags_before ... ok
[INFO] [stdout] test property_based::prop_rule_order_independence ... ok
[INFO] [stdout] test property_based::prop_quoted_star_acts_as_glob ... ok
[INFO] [stdout] test remote_preset_with_path::base_preset_aggregates_all_via_local_extends::case_1_cat_via_base ... ok
[INFO] [stdout] test remote_preset_with_path::base_preset_aggregates_all_via_local_extends::case_2_git_log_via_base ... ok
[INFO] [stdout] test remote_preset_with_path::base_preset_aggregates_all_via_local_extends::case_3_rm_not_via_base ... ok
[INFO] [stdout] test remote_preset_with_path::definitions_preset_loads_wrappers ... ok
[INFO] [stdout] test remote_preset_with_path::multiple_path_presets_all_rules_merged::case_1_cat_from_unix ... ok
[INFO] [stdout] test remote_preset_with_path::multiple_path_presets_all_rules_merged::case_2_git_status_from_git ... ok
[INFO] [stdout] test remote_preset_with_path::multiple_path_presets_all_rules_merged::case_3_git_diff_from_git ... ok
[INFO] [stdout] test remote_preset_with_path::multiple_path_presets_all_rules_merged::case_4_ls_from_unix ... ok
[INFO] [stdout] test remote_preset_with_path::multiple_path_presets_all_rules_merged::case_5_rm_not_in_any ... ok
[INFO] [stdout] test remote_preset_with_path::nonexistent_path_preset_produces_error ... ok
[INFO] [stdout] test remote_preset_with_path::single_path_preset_readonly_git::case_1_git_status_allowed ... ok
[INFO] [stdout] test remote_preset_with_path::single_path_preset_readonly_git::case_2_git_log_allowed ... ok
[INFO] [stdout] test remote_preset_with_path::single_path_preset_readonly_git::case_3_git_diff_allowed ... ok
[INFO] [stdout] test remote_preset_with_path::single_path_preset_readonly_git::case_4_git_branch_allowed ... ok
[INFO] [stdout] test remote_preset_with_path::single_path_preset_readonly_git::case_5_git_add_not_allowed ... ok
[INFO] [stdout] test remote_preset_with_path::single_path_preset_readonly_git::case_6_git_commit_not_allowed ... ok
[INFO] [stdout] test property_based::prop_flag_with_glob_value_position_independence ... ok
[INFO] [stdout] test remote_preset_with_path::single_path_preset_readonly_git::case_7_git_push_not_allowed ... ok
[INFO] [stdout] test remote_preset_with_path::single_path_preset_readonly_unix::case_2_ls_allowed ... ok
[INFO] [stdout] test remote_preset_with_path::single_path_preset_readonly_unix::case_3_grep_allowed ... ok
[INFO] [stdout] test remote_preset_with_path::single_path_preset_readonly_unix::case_1_cat_allowed ... ok
[INFO] [stdout] test remote_preset_with_path::single_path_preset_readonly_unix::case_4_find_allowed ... ok
[INFO] [stdout] test remote_preset_with_path::single_path_preset_readonly_unix::case_5_sed_readonly_allowed ... ok
[INFO] [stdout] test property_based::prop_value_negation_rejects_matching_head ... ok
[INFO] [stdout] test remote_preset_with_path::single_path_preset_readonly_unix::case_7_find_delete_excluded ... ok
[INFO] [stdout] test remote_preset_with_path::single_path_preset_readonly_unix::case_9_curl_not_allowed ... ok
[INFO] [stdout] test remote_preset_with_path::single_path_preset_readonly_unix::case_8_rm_not_allowed ... ok
[INFO] [stdout] test remote_preset_with_path::single_path_preset_readonly_unix::case_6_sed_inplace_excluded ... ok
[INFO] [stdout] test remote_preset_with_path::wrappers_evaluate_inner_commands::case_2_bash_c_rm_not_allowed ... ok
[INFO] [stdout] test remote_preset_with_path::user_deny_overrides_preset_allow ... ok
[INFO] [stdout] test required_runok_version::direct_check_api::case_1_satisfies ... ok
[INFO] [stdout] test required_runok_version::direct_check_api::case_2_not_satisfies ... ok
[INFO] [stdout] test required_runok_version::direct_check_api::case_3_caret ... ok
[INFO] [stdout] test remote_preset_with_path::wrappers_evaluate_inner_commands::case_1_bash_c_cat_allowed ... ok
[INFO] [stdout] test remote_preset_with_path::wrappers_evaluate_inner_commands::case_3_sudo_cat_allowed ... ok
[INFO] [stdout] test required_runok_version::extends_chain_passes_when_child_constraint_is_loose ... ok
[INFO] [stdout] test required_runok_version::direct_check_api::case_4_upper_exclusive ... ok
[INFO] [stdout] test required_runok_version::invalid_requirement_in_extends_child_is_reported ... ok
[INFO] [stdout] test required_runok_version::load_local_preset_accepts_compatible_version ... ok
[INFO] [stdout] test required_runok_version::invalid_requirement_is_reported_with_source ... ok
[INFO] [stdout] test var_pattern_evaluation::literal_var_inside_optional_is_not_rejected ... ok
[INFO] [stdout] test var_pattern_evaluation::pattern_var_kubectl_allows::case_1_no_flags ... ok
[INFO] [stdout] test var_pattern_evaluation::pattern_var_kubectl_allows::case_2_context_long ... ok
[INFO] [stdout] test var_pattern_evaluation::pattern_var_kubectl_allows::case_3_context_equals ... ok
[INFO] [stdout] test var_pattern_evaluation::pattern_var_kubectl_allows::case_5_short_namespace_then_context ... ok
[INFO] [stdout] test var_pattern_evaluation::pattern_var_kubectl_allows::case_6_top_subcommand ... ok
[INFO] [stdout] test var_pattern_evaluation::pattern_var_kubectl_allows::case_4_multi_flags ... ok
[INFO] [stdout] test var_pattern_evaluation::pattern_var_kubectl_allows::case_7_auth_subcommand ... ok
[INFO] [stdout] test var_pattern_evaluation::pattern_var_kubectl_allows::case_8_logs_subcommand ... ok
[INFO] [stdout] test var_pattern_evaluation::pattern_var_kubectl_does_not_match::case_1_wrong_subcommand ... ok
[INFO] [stdout] test var_pattern_evaluation::pattern_var_kubectl_does_not_match::case_2_wrong_command ... ok
[INFO] [stdout] test var_pattern_evaluation::pattern_var_multiple_values::case_1_first_alternative ... ok
[INFO] [stdout] test var_pattern_evaluation::pattern_var_multiple_values::case_2_second_alternative ... ok
[INFO] [stdout] test var_pattern_evaluation::pattern_var_multiple_values::case_3_neither ... ok
[INFO] [stdout] test var_pattern_evaluation::pattern_var_per_value_pattern_override ... ok
[INFO] [stdout] test var_pattern_evaluation::pattern_var_validation_errors::case_1_nested_var_ref ... ok
[INFO] [stdout] test var_pattern_evaluation::pattern_var_validation_errors::case_2_nested_path_ref ... ok
[INFO] [stdout] test var_pattern_evaluation::pattern_var_validation_errors::case_3_nested_flag_group_ref ... ok
[INFO] [stdout] test var_pattern_evaluation::pattern_var_validation_errors::case_4_nested_cmd_placeholder ... ok
[INFO] [stdout] test var_pattern_evaluation::pattern_var_validation_errors::case_5_nested_opts_placeholder ... ok
[INFO] [stdout] test var_pattern_evaluation::pattern_var_validation_errors::case_6_pattern_value_parse_error ... ok
[INFO] [stdout] test var_ref_evaluation::var_ref_command_position::case_1_command_position_literal_match ... ok
[INFO] [stdout] test var_pattern_evaluation::pattern_var_inside_optional_group_is_rejected ... ok
[INFO] [stdout] test var_ref_evaluation::var_ref_command_position::case_3_command_position_no_match ... ok
[INFO] [stdout] test var_ref_evaluation::var_ref_command_position::case_4_command_position_path_type ... ok
[INFO] [stdout] test var_ref_evaluation::var_ref_command_position::case_5_command_position_with_wildcard_args ... ok
[INFO] [stdout] test var_ref_evaluation::var_ref_command_position::case_6_command_position_shorter_value_listed_first ... ok
[INFO] [stdout] test var_ref_evaluation::var_ref_deny::case_1_deny_matching_var ... ok
[INFO] [stdout] test var_ref_evaluation::var_ref_deny::case_2_deny_non_matching_var_falls_through ... ok
[INFO] [stdout] test var_ref_evaluation::var_ref_literal::case_1_literal_match ... ok
[INFO] [stdout] test var_ref_evaluation::var_ref_and_path_ref_coexist ... ok
[INFO] [stdout] test var_ref_evaluation::var_ref_literal::case_2_literal_second_value ... ok
[INFO] [stdout] test var_ref_evaluation::var_ref_literal::case_4_literal_explicit_type ... ok
[INFO] [stdout] test var_ref_evaluation::var_ref_path::case_1_path_exact ... ok
[INFO] [stdout] test var_ref_evaluation::var_ref_literal::case_3_literal_no_match ... ok
[INFO] [stdout] test var_ref_evaluation::var_ref_path::case_2_path_dot_prefix ... ok
[INFO] [stdout] test var_ref_evaluation::var_ref_command_position::case_2_command_position_multi_word_match ... ok
[INFO] [stdout] test var_ref_evaluation::var_ref_path::case_3_path_no_match ... ok
[INFO] [stdout] test var_ref_evaluation::var_ref_path::case_4_path_dotdot_resolution ... ok
[INFO] [stdout] test var_ref_evaluation::var_ref_per_value_type::case_2_per_value_plain_inherits_definition_type ... ok
[INFO] [stdout] test var_ref_evaluation::var_ref_per_value_type::case_1_per_value_typed_path_in_args ... ok
[INFO] [stdout] test var_ref_evaluation::var_ref_per_value_type::case_3_per_value_type_overrides_definition ... ok
[INFO] [stdout] test var_ref_evaluation::var_ref_when_clause_with_vars::case_2_var_value_does_not_match_when_falls_through ... ok
[INFO] [stdout] test var_ref_evaluation::var_ref_when_clause_with_vars::case_1_var_value_matches_when_condition ... ok
[INFO] [stdout] test var_ref_evaluation::var_ref_when_clause_with_vars::case_4_var_with_has_guard_non_us_region_allowed ... ok
[INFO] [stdout] test when_clause_rules::all_when_false_returns_default ... ok
[INFO] [stdout] test var_ref_evaluation::var_ref_when_clause_with_vars::case_3_var_with_has_guard_and_starts_with ... ok
[INFO] [stdout] test when_clause_rules::argument_condition_controls_rule::case_1_prod_url_denied ... ok
[INFO] [stdout] test when_clause_rules::empty_args_size_guard::case_1_no_args_allowed ... ok
[INFO] [stdout] test when_clause_rules::argument_condition_controls_rule::case_2_dev_url_default ... ok
[INFO] [stdout] test when_clause_rules::env_variable_controls_rule_application::case_1_env_matches_deny ... ok
[INFO] [stdout] test when_clause_rules::env_variable_controls_rule_application::case_2_env_does_not_match_default ... ok
[INFO] [stdout] test when_clause_rules::empty_args_size_guard::case_2_with_args_denied ... ok
[INFO] [stdout] test when_clause_rules::env_variable_missing_returns_error ... ok
[INFO] [stdout] test when_clause_rules::env_variable_with_has_macro_handles_missing_key ... ok
[INFO] [stdout] test when_clause_rules::flag_condition_with_flag_with_value_pattern::case_3_long_flag_post_denied ... ok
[INFO] [stdout] test when_clause_rules::flag_condition_with_flag_with_value_pattern::case_1_short_flag_post_denied ... ok
[INFO] [stdout] test when_clause_rules::flag_condition_with_flag_with_value_pattern::case_2_short_flag_get_default ... ok
[INFO] [stdout] test when_clause_rules::hyphenated_flag_name_in_cel::case_1_with_no_verify ... ok
[INFO] [stdout] test when_clause_rules::hyphenated_flag_name_in_cel::case_2_without_no_verify ... ok
[INFO] [stdout] test when_clause_rules::flag_condition_with_flag_with_value_pattern::case_4_long_flag_get_default ... ok
[INFO] [stdout] test when_clause_rules::os_variable_does_not_match_other_os ... ok
[INFO] [stdout] test when_clause_rules::paths_in_when_clause::case_1_sensitive_path_denied ... ok
[INFO] [stdout] test when_clause_rules::paths_in_when_clause::case_2_safe_path_default ... ok
[INFO] [stdout] test when_clause_rules::os_variable_matches_host_os ... ok
[INFO] [stdout] test when_clause_rules::pipe_stdin_prevents_shell_execution::case_1_curl_pipe_sh_denied ... ok
[INFO] [stdout] test when_clause_rules::pipe_stdin_prevents_shell_execution::case_2_sh_standalone_allowed ... ok
[INFO] [stdout] test when_clause_rules::pipe_stdin_prevents_shell_execution::case_3_echo_pipe_bash_denied ... ok
[INFO] [stdout] test when_clause_rules::multiple_rules_with_different_when_conditions ... ok
[INFO] [stdout] test property_based::prop_value_negation_allows_different_head ... ok
[INFO] [stdout] test when_clause_rules::redirect_descriptor_check::case_2_stdout_redirect_default ... ok
[INFO] [stdout] test when_clause_rules::redirect_descriptor_check::case_1_stderr_redirect_denied ... ok
[INFO] [stdout] test when_clause_rules::redirect_count_check::case_2_no_redirect_denied ... ok
[INFO] [stdout] test when_clause_rules::redirect_output_exists_via_evaluate_command::case_1_output_redirect_denied ... ok
[INFO] [stdout] test when_clause_rules::redirect_output_exists::case_1_output_redirect_denied ... ok
[INFO] [stdout] test when_clause_rules::redirect_output_exists::case_2_no_redirect_default ... ok
[INFO] [stdout] test when_clause_rules::redirect_target_starts_with::case_1_redirect_to_tmp_allowed ... ok
[INFO] [stdout] test when_clause_rules::redirect_output_exists_via_evaluate_command::case_2_no_redirect_default ... ok
[INFO] [stdout] test when_clause_rules::redirect_target_starts_with::case_2_redirect_to_var_default ... ok
[INFO] [stdout] test when_clause_rules::shell_loop_kind_blocks_polling_loops::case_3_sleep_in_while_denied ... ok
[INFO] [stdout] test when_clause_rules::shell_loop_kind_blocks_polling_loops::case_1_sleep_alone_allowed ... ok
[INFO] [stdout] test when_clause_rules::shell_loop_kind_blocks_polling_loops::case_4_sleep_in_for_allowed ... ok
[INFO] [stdout] test when_clause_rules::shell_loop_kind_blocks_polling_loops::case_5_sleep_in_subshell_loop_denied ... ok
[INFO] [stdout] test when_clause_rules::redirect_count_check::case_1_with_redirect_allowed ... ok
[INFO] [stdout] test when_clause_rules::shell_loop_kind_blocks_polling_loops::case_6_sleep_in_nested_until_inside_for_denied ... ok
[INFO] [stdout] test when_clause_rules::shell_loop_kind_blocks_polling_loops::case_2_sleep_in_until_denied ... ok
[INFO] [stdout] test when_clause_rules::shell_loop_kind_reaches_single_command_path::case_2_sleep_outside_loop_allowed ... ok
[INFO] [stdout] test when_clause_rules::shell_loop_kind_reaches_single_command_path::case_1_for_single_body_matches ... ok
[INFO] [stdout] test when_clause_rules::when_clause_compound_different_results_per_subcommand ... ok
[INFO] [stdout] test when_clause_rules::when_clause_with_logical_and ... ok
[INFO] [stdout] test when_clause_rules::when_clause_compound_all_skipped_falls_back ... ok
[INFO] [stdout] test when_clause_rules::when_clause_with_path_ref::case_3_safe_in_prod_default ... ok
[INFO] [stdout] test when_clause_rules::when_clause_with_path_ref::case_1_sensitive_in_prod_denied ... ok
[INFO] [stdout] test when_clause_rules::when_clause_with_path_ref::case_2_sensitive_in_dev_default ... ok
[INFO] [stdout] test when_clause_rules::when_satisfied_deny_wins_over_allow ... ok
[INFO] [stdout] test when_clause_rules::when_clause_with_logical_or ... ok
[INFO] [stdout] test property_based::prop_no_panic_evaluate_command ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::bare_env_prefix_evaluates_stripped_command::case_1_bare_env_prefix_allowed ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::bash_c_double_vs_single_quotes::case_1_single_quoted ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::bash_c_wrapper_evaluates_inner::case_2_bash_c_curl_get_allowed ... ok
[INFO] [stdout] test when_clause_rules::when_skipped_deny_falls_back_to_allow ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::bash_c_double_vs_single_quotes::case_2_double_quoted ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::bash_c_wrapper_evaluates_inner::case_1_bash_c_curl_post_denied ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::bare_env_prefix_evaluates_stripped_command::case_2_bare_env_prefix_denied ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::cmd_placeholder_skips_flag_starting_tokens::case_3_command_ls_wrapper_applies ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::cmd_placeholder_skips_flag_starting_tokens::case_2_command_uppercase_v_allow ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::compound_commands_inside_wrapper::case_2_compound_all_safe ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::cmd_placeholder_skips_flag_starting_tokens::case_1_command_v_allow ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::compound_commands_inside_wrapper::case_1_compound_with_deny ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::compound_in_wrapper_unmatched_uses_defaults_action ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::deny_from_inner_wins_over_direct_allow ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::docker_exec_wrapper_with_optional_flags::case_1_docker_exec_no_flags ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::docker_exec_wrapper_with_optional_flags::case_2_docker_exec_it_flag ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::docker_exec_wrapper_with_optional_flags::case_4_docker_exec_both_flags ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::env_wrapper_evaluates_inner::case_1_env_var_echo_allowed ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::env_wrapper_evaluates_inner::case_2_env_var_rm_denied ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::env_wrapper_evaluates_inner::case_3_env_multiple_vars ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::docker_exec_wrapper_with_optional_flags::case_3_docker_exec_u_value_flag ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::env_wrapper_evaluates_inner::case_4_env_var_unmatched_default ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::deeply_nested_wrappers_hit_recursion_limit ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::find_exec_wrapper_evaluates_inner::case_3_find_execdir_echo_allowed ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::find_exec_wrapper_evaluates_inner::case_2_find_exec_rm_denied_plus ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::find_exec_wrapper_evaluates_inner::case_5_find_okdir_ls_allowed ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::find_exec_wrapper_evaluates_inner::case_1_find_exec_rm_denied_semicolon ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::find_exec_wrapper_evaluates_inner::case_4_find_ok_rm_denied ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::find_exec_wrapper_evaluates_inner::case_6_find_exec_unmatched_default ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::merge_results_all_branches::case_1_direct_allow_wrapper_ask ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::merge_results_all_branches::case_3_direct_ask_wrapper_deny ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::merge_results_all_branches::case_2_direct_allow_wrapper_deny ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::merge_results_all_branches::case_4_direct_default_wrapper_allow ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::merge_results_all_branches::case_5_direct_default_wrapper_deny ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::nested_wrappers_evaluate_recursively::case_3_sudo_bash_c_safe ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::opts_wrapper_consumes_flags::case_3_opts_no_flags ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::nested_wrappers_evaluate_recursively::case_1_sudo_bash_c_rm ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::opts_wrapper_consumes_flags::case_2_opts_flag_rm_denied ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::opts_wrapper_consumes_flags::case_4_opts_multiple_flags ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::nested_wrappers_evaluate_recursively::case_2_sudo_sh_c_rm ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::opts_wrapper_consumes_flags::case_1_opts_single_flag ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::opts_wrapper_consumes_flags::case_7_opts_digit_flag_self_contained ... ok
[INFO] [stdout] test property_based::prop_flag_with_value_position_independence ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::opts_wrapper_consumes_flags::case_5_opts_flag_with_separate_arg ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::opts_wrapper_consumes_flags::case_8_opts_end_of_options ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::opts_wrapper_consumes_flags::case_6_opts_mixed_flags_and_args ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::opts_wrapper_consumes_flags::case_9_opts_flags_then_end_of_options ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::opts_wrapper_with_defaults_action_deny ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::sudo_subshell_wrapper_evaluates_inner::case_1_sudo_subshell_single ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::sudo_wrapper_evaluates_inner::case_1_sudo_rm_denied ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::sudo_wrapper_evaluates_inner::case_2_sudo_safe_allowed ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::time_subshell_wrapper_evaluates_inner::case_3_time_subshell_single_multi_arg ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::sudo_wrapper_evaluates_inner::case_3_sudo_unmatched_default ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::time_subshell_wrapper_evaluates_inner::case_2_time_subshell_single ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::sudo_subshell_wrapper_evaluates_inner::case_3_sudo_subshell_inner_deny ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::time_subshell_wrapper_evaluates_inner::case_1_time_plain ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::time_subshell_wrapper_evaluates_inner::case_4_time_subshell_pipeline ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::time_subshell_wrapper_evaluates_inner::case_7_time_subshell_and_list ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::time_subshell_wrapper_evaluates_inner::case_6_time_subshell_redirect_pipeline ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::sudo_subshell_wrapper_evaluates_inner::case_2_sudo_subshell_pipeline ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::time_subshell_wrapper_evaluates_inner::case_9_time_subshell_inner_deny_mixed ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::vars_wrapper_consumes_assignments::case_1_vars_single ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::time_subshell_wrapper_evaluates_inner::case_8_time_subshell_inner_deny ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::vars_wrapper_consumes_assignments::case_3_vars_none ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::time_subshell_wrapper_evaluates_inner::case_5_time_subshell_pipeline_multi_arg ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::vars_wrapper_consumes_assignments::case_5_vars_with_opts_rm_denied ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::vars_wrapper_consumes_assignments::case_4_vars_with_opts ... ok
[INFO] [stdout] test property_based::prop_wrapper_bash_c_unwraps ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::without_wrappers_sudo_is_not_unwrapped ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wildcard_wrapper_greedy_consumes_flags::case_4_xargs_multiple_flags_echo_allowed ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wildcard_wrapper_greedy_consumes_flags::case_3_xargs_no_flags_echo_allowed ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wildcard_wrapper_greedy_consumes_flags::case_1_xargs_flags_echo_allowed ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::when_clause_with_wrapper ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wildcard_wrapper_greedy_consumes_flags::case_2_xargs_flags_rm_denied ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_inner_compound_with_sub_wrappers ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_depth_exactly_at_limit_succeeds ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_direct_rule_overrides_inner_sandbox ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_preserves_quoted_arguments ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_preserves_inner_sandbox_preset ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_with_optional_evaluates_inner::case_2_sudo_with_optional_flag_absent ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_with_optional_evaluates_inner::case_1_sudo_with_optional_flag_present ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_compound_with_sandbox ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_with_path_ref_evaluates_inner::case_1_path_ref_match_inner_deny ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_with_optional_evaluates_inner::case_3_sudo_with_optional_value_flag_present ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_with_optional_evaluates_inner::case_4_sudo_with_optional_value_flag_absent ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_with_optional_evaluates_inner::case_5_sudo_with_optional_present_inner_safe ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_with_path_ref_evaluates_inner::case_2_path_ref_match_inner_allow ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_with_path_ref_evaluates_inner::case_3_path_ref_no_match ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_with_var_ref_evaluates_inner::case_2_var_ref_inner_allow ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_with_var_ref_evaluates_inner::case_1_var_ref_inner_deny ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_without_cmd_placeholder_no_recurse ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_with_var_ref_evaluates_inner::case_3_var_ref_unknown_user_no_match ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_depth_one_over_limit_fails ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::vars_wrapper_consumes_assignments::case_2_vars_multiple ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_inner_compound_all_sub_wrappers_allowed ... ok
[INFO] [stdout] test property_based::prop_wildcard_does_not_match_different_command ... ok
[INFO] [stdout] test property_based::prop_wildcard_subsumes_any_args ... ok
[INFO] [stdout] test property_based::prop_no_panic_wrapper_evaluation ... ok
[INFO] [stdout] test property_based::prop_wrapper_sudo_unwraps ... ok
[INFO] [stdout] test property_based::prop_wrapper_compound_inner_deny_propagates ... ok
[INFO] [stdout] test property_based::prop_wrapper_nested_unwraps ... ok
[INFO] [stdout] test property_based::prop_no_panic_evaluate_compound ... ok
[INFO] [stdout] test property_based::prop_no_panic_evaluate_command_with_compound ... ok
[INFO] [stdout] test property_based::prop_wrapper_deep_nesting_hits_depth_guard ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 689 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.21s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/sandbox_verification_linux.rs (/opt/rustwide/target/debug/deps/sandbox_verification_linux-87d7b83ec1da2bf3)
[INFO] [stdout] 
[INFO] [stdout] running 10 tests
[INFO] [stdout] test sandbox_denies_network_when_not_allowed ... ok
[INFO] [stdout] test sandbox_denies_write_to_read_only_subpath ... ok
[INFO] [stdout] test sandbox_preserves_nonzero_exit_code ... ok
[INFO] [stdout] test sandbox_denies_write_outside_writable_roots ... ok
[INFO] [stdout] test sandbox_allows_read_when_writes_denied ... FAILED
[INFO] [stdout] test sandbox_allows_write_outside_read_only_subpath ... FAILED
[INFO] [stdout] test sandbox_runs_command_successfully ... FAILED
[INFO] [stdout] test sandbox_allows_write_to_writable_root ... FAILED
[INFO] [stdout] test sandbox_read_deny_blocks_file_access::case_2_ssh_dir ... FAILED
[INFO] [stdout] test sandbox_read_deny_blocks_file_access::case_1_file_in_denied_dir ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- sandbox_allows_read_when_writes_denied stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'sandbox_allows_read_when_writes_denied' (3162) panicked at tests/sandbox_verification_linux.rs:227:5:
[INFO] [stdout] assertion `left == right` failed: reading files should succeed even when writes are denied
[INFO] [stdout]   left: 1
[INFO] [stdout]  right: 0
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5b4997876cd8 - std[929523f510218772]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5b4997876cd8 - std[929523f510218772]::backtrace_rs::backtrace::trace_unsynchronized::<std[929523f510218772]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5b4997876cd8 - std[929523f510218772]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5b4997876cd8 - <<std[929523f510218772]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[28b146924c2f19c6]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5b499788abfa - <core[28b146924c2f19c6]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5b499788abfa - core[28b146924c2f19c6]::fmt::write
[INFO] [stdout]    6:     0x5b499787b5f2 - std[929523f510218772]::io::default_write_fmt::<alloc[95e62e727ddf147d]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/io/mod.rs:622:11
[INFO] [stdout]    7:     0x5b499787b5f2 - <alloc[95e62e727ddf147d]::vec::Vec<u8> as std[929523f510218772]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/io/mod.rs:1977:13
[INFO] [stdout]    8:     0x5b4997854626 - <std[929523f510218772]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5b4997854626 - std[929523f510218772]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5b499786e989 - std[929523f510218772]::panicking::default_hook
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5b49977eebbc - <alloc[95e62e727ddf147d]::boxed::Box<dyn for<'a, 'b> core[28b146924c2f19c6]::ops::function::Fn<(&'a std[929523f510218772]::panic::PanicHookInfo<'b>,), Output = ()> + core[28b146924c2f19c6]::marker::Sync + core[28b146924c2f19c6]::marker::Send> as core[28b146924c2f19c6]::ops::function::Fn<(&std[929523f510218772]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   12:     0x5b49977eebbc - test[6ec0502068880816]::test_main_inner::<test[6ec0502068880816]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x5b499786eb42 - <alloc[95e62e727ddf147d]::boxed::Box<dyn for<'a, 'b> core[28b146924c2f19c6]::ops::function::Fn<(&'a std[929523f510218772]::panic::PanicHookInfo<'b>,), Output = ()> + core[28b146924c2f19c6]::marker::Sync + core[28b146924c2f19c6]::marker::Send> as core[28b146924c2f19c6]::ops::function::Fn<(&std[929523f510218772]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   14:     0x5b499786eb42 - std[929523f510218772]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5b49978546e2 - std[929523f510218772]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x5b4997849809 - std[929523f510218772]::sys::backtrace::__rust_end_short_backtrace::<std[929523f510218772]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5b49978553fd - __rustc[acf6043c977865fb]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5b499788b38c - core[28b146924c2f19c6]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5b499788b2a3 - core[28b146924c2f19c6]::panicking::assert_failed_inner
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panicking.rs:434:23
[INFO] [stdout]   20:     0x5b499782d8b9 - core[28b146924c2f19c6]::panicking::assert_failed::<i32, i32>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x5b49977de997 - sandbox_verification_linux[6fc616930bdf4b64]::sandbox_allows_read_when_writes_denied::sandbox_allows_read_when_writes_denied
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification_linux.rs:227:5
[INFO] [stdout]   22:     0x5b49977dcfb6 - sandbox_verification_linux[6fc616930bdf4b64]::sandbox_allows_read_when_writes_denied
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification_linux.rs:212:1
[INFO] [stdout]   23:     0x5b49977db557 - sandbox_verification_linux[6fc616930bdf4b64]::sandbox_allows_read_when_writes_denied::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification_linux.rs:212:10
[INFO] [stdout]   24:     0x5b49977e1a76 - <sandbox_verification_linux[6fc616930bdf4b64]::sandbox_allows_read_when_writes_denied::{closure#0} as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x5b49977e1c9b - <fn() -> core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   26:     0x5b49977e1c9b - test[6ec0502068880816]::__rust_begin_short_backtrace::<core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>, fn() -> core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:724:18
[INFO] [stdout]   27:     0x5b49977ef515 - test[6ec0502068880816]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:747:74
[INFO] [stdout]   28:     0x5b49977ef515 - <core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   29:     0x5b49977ef515 - std[929523f510218772]::panicking::catch_unwind::do_call::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}>, core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:581:40
[INFO] [stdout]   30:     0x5b49977ef515 - std[929523f510218772]::panicking::catch_unwind::<core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>, core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:544:19
[INFO] [stdout]   31:     0x5b49977ef515 - std[929523f510218772]::panic::catch_unwind::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}>, core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panic.rs:359:14
[INFO] [stdout]   32:     0x5b49977ef515 - test[6ec0502068880816]::run_test_in_process
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:747:27
[INFO] [stdout]   33:     0x5b49977ef515 - test[6ec0502068880816]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:668:43
[INFO] [stdout]   34:     0x5b49977ea074 - test[6ec0502068880816]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:698:41
[INFO] [stdout]   35:     0x5b49977ea074 - std[929523f510218772]::sys::backtrace::__rust_begin_short_backtrace::<test[6ec0502068880816]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   36:     0x5b49977f2592 - std[929523f510218772]::thread::lifecycle::spawn_unchecked::<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   37:     0x5b49977f2592 - <core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   38:     0x5b49977f2592 - std[929523f510218772]::panicking::catch_unwind::do_call::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:581:40
[INFO] [stdout]   39:     0x5b49977f2592 - std[929523f510218772]::panicking::catch_unwind::<(), core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:544:19
[INFO] [stdout]   40:     0x5b49977f2592 - std[929523f510218772]::panic::catch_unwind::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panic.rs:359:14
[INFO] [stdout]   41:     0x5b49977f2592 - std[929523f510218772]::thread::lifecycle::spawn_unchecked::<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   42:     0x5b49977f2592 - <std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1} as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   43:     0x5b499787646f - <alloc[95e62e727ddf147d]::boxed::Box<dyn core[28b146924c2f19c6]::ops::function::FnOnce<(), Output = ()> + core[28b146924c2f19c6]::marker::Send> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/alloc/src/boxed.rs:2277:9
[INFO] [stdout]   44:     0x5b499787646f - <std[929523f510218772]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   45:     0x7a9379031aa4 - <unknown>
[INFO] [stdout]   46:     0x7a93790bea64 - clone
[INFO] [stdout]   47:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- sandbox_allows_write_outside_read_only_subpath stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'sandbox_allows_write_outside_read_only_subpath' (3163) panicked at tests/sandbox_verification_linux.rs:166:5:
[INFO] [stdout] assertion `left == right` failed: write outside read_only_subpath should succeed
[INFO] [stdout]   left: 1
[INFO] [stdout]  right: 0
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5b4997876cd8 - std[929523f510218772]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5b4997876cd8 - std[929523f510218772]::backtrace_rs::backtrace::trace_unsynchronized::<std[929523f510218772]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5b4997876cd8 - std[929523f510218772]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5b4997876cd8 - <<std[929523f510218772]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[28b146924c2f19c6]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5b499788abfa - <core[28b146924c2f19c6]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5b499788abfa - core[28b146924c2f19c6]::fmt::write
[INFO] [stdout]    6:     0x5b499787b5f2 - std[929523f510218772]::io::default_write_fmt::<alloc[95e62e727ddf147d]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/io/mod.rs:622:11
[INFO] [stdout]    7:     0x5b499787b5f2 - <alloc[95e62e727ddf147d]::vec::Vec<u8> as std[929523f510218772]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/io/mod.rs:1977:13
[INFO] [stdout]    8:     0x5b4997854626 - <std[929523f510218772]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5b4997854626 - std[929523f510218772]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5b499786e989 - std[929523f510218772]::panicking::default_hook
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5b49977eebbc - <alloc[95e62e727ddf147d]::boxed::Box<dyn for<'a, 'b> core[28b146924c2f19c6]::ops::function::Fn<(&'a std[929523f510218772]::panic::PanicHookInfo<'b>,), Output = ()> + core[28b146924c2f19c6]::marker::Sync + core[28b146924c2f19c6]::marker::Send> as core[28b146924c2f19c6]::ops::function::Fn<(&std[929523f510218772]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   12:     0x5b49977eebbc - test[6ec0502068880816]::test_main_inner::<test[6ec0502068880816]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x5b499786eb42 - <alloc[95e62e727ddf147d]::boxed::Box<dyn for<'a, 'b> core[28b146924c2f19c6]::ops::function::Fn<(&'a std[929523f510218772]::panic::PanicHookInfo<'b>,), Output = ()> + core[28b146924c2f19c6]::marker::Sync + core[28b146924c2f19c6]::marker::Send> as core[28b146924c2f19c6]::ops::function::Fn<(&std[929523f510218772]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   14:     0x5b499786eb42 - std[929523f510218772]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5b49978546e2 - std[929523f510218772]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x5b4997849809 - std[929523f510218772]::sys::backtrace::__rust_end_short_backtrace::<std[929523f510218772]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5b49978553fd - __rustc[acf6043c977865fb]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5b499788b38c - core[28b146924c2f19c6]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5b499788b2a3 - core[28b146924c2f19c6]::panicking::assert_failed_inner
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panicking.rs:434:23
[INFO] [stdout]   20:     0x5b499782d8b9 - core[28b146924c2f19c6]::panicking::assert_failed::<i32, i32>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x5b49977e130b - sandbox_verification_linux[6fc616930bdf4b64]::sandbox_allows_write_outside_read_only_subpath::sandbox_allows_write_outside_read_only_subpath
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification_linux.rs:166:5
[INFO] [stdout]   22:     0x5b49977dcff6 - sandbox_verification_linux[6fc616930bdf4b64]::sandbox_allows_write_outside_read_only_subpath
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification_linux.rs:143:1
[INFO] [stdout]   23:     0x5b49977db617 - sandbox_verification_linux[6fc616930bdf4b64]::sandbox_allows_write_outside_read_only_subpath::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification_linux.rs:143:10
[INFO] [stdout]   24:     0x5b49977e1b76 - <sandbox_verification_linux[6fc616930bdf4b64]::sandbox_allows_write_outside_read_only_subpath::{closure#0} as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x5b49977e1c9b - <fn() -> core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   26:     0x5b49977e1c9b - test[6ec0502068880816]::__rust_begin_short_backtrace::<core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>, fn() -> core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:724:18
[INFO] [stdout]   27:     0x5b49977ef515 - test[6ec0502068880816]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:747:74
[INFO] [stdout]   28:     0x5b49977ef515 - <core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   29:     0x5b49977ef515 - std[929523f510218772]::panicking::catch_unwind::do_call::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}>, core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:581:40
[INFO] [stdout]   30:     0x5b49977ef515 - std[929523f510218772]::panicking::catch_unwind::<core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>, core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:544:19
[INFO] [stdout]   31:     0x5b49977ef515 - std[929523f510218772]::panic::catch_unwind::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}>, core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panic.rs:359:14
[INFO] [stdout]   32:     0x5b49977ef515 - test[6ec0502068880816]::run_test_in_process
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:747:27
[INFO] [stdout]   33:     0x5b49977ef515 - test[6ec0502068880816]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:668:43
[INFO] [stdout]   34:     0x5b49977ea074 - test[6ec0502068880816]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:698:41
[INFO] [stdout]   35:     0x5b49977ea074 - std[929523f510218772]::sys::backtrace::__rust_begin_short_backtrace::<test[6ec0502068880816]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   36:     0x5b49977f2592 - std[929523f510218772]::thread::lifecycle::spawn_unchecked::<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   37:     0x5b49977f2592 - <core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   38:     0x5b49977f2592 - std[929523f510218772]::panicking::catch_unwind::do_call::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:581:40
[INFO] [stdout]   39:     0x5b49977f2592 - std[929523f510218772]::panicking::catch_unwind::<(), core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:544:19
[INFO] [stdout]   40:     0x5b49977f2592 - std[929523f510218772]::panic::catch_unwind::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panic.rs:359:14
[INFO] [stdout]   41:     0x5b49977f2592 - std[929523f510218772]::thread::lifecycle::spawn_unchecked::<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   42:     0x5b49977f2592 - <std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1} as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   43:     0x5b499787646f - <alloc[95e62e727ddf147d]::boxed::Box<dyn core[28b146924c2f19c6]::ops::function::FnOnce<(), Output = ()> + core[28b146924c2f19c6]::marker::Send> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/alloc/src/boxed.rs:2277:9
[INFO] [stdout]   44:     0x5b499787646f - <std[929523f510218772]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   45:     0x7a9379031aa4 - <unknown>
[INFO] [stdout]   46:     0x7a93790bea64 - clone
[INFO] [stdout]   47:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- sandbox_runs_command_successfully stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'sandbox_runs_command_successfully' (3172) panicked at tests/sandbox_verification_linux.rs:296:5:
[INFO] [stdout] assertion `left == right` failed: simple command should succeed in sandbox
[INFO] [stdout]   left: 1
[INFO] [stdout]  right: 0
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5b4997876cd8 - std[929523f510218772]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5b4997876cd8 - std[929523f510218772]::backtrace_rs::backtrace::trace_unsynchronized::<std[929523f510218772]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5b4997876cd8 - std[929523f510218772]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5b4997876cd8 - <<std[929523f510218772]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[28b146924c2f19c6]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5b499788abfa - <core[28b146924c2f19c6]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5b499788abfa - core[28b146924c2f19c6]::fmt::write
[INFO] [stdout]    6:     0x5b499787b5f2 - std[929523f510218772]::io::default_write_fmt::<alloc[95e62e727ddf147d]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/io/mod.rs:622:11
[INFO] [stdout]    7:     0x5b499787b5f2 - <alloc[95e62e727ddf147d]::vec::Vec<u8> as std[929523f510218772]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/io/mod.rs:1977:13
[INFO] [stdout]    8:     0x5b4997854626 - <std[929523f510218772]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5b4997854626 - std[929523f510218772]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5b499786e989 - std[929523f510218772]::panicking::default_hook
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5b49977eebbc - <alloc[95e62e727ddf147d]::boxed::Box<dyn for<'a, 'b> core[28b146924c2f19c6]::ops::function::Fn<(&'a std[929523f510218772]::panic::PanicHookInfo<'b>,), Output = ()> + core[28b146924c2f19c6]::marker::Sync + core[28b146924c2f19c6]::marker::Send> as core[28b146924c2f19c6]::ops::function::Fn<(&std[929523f510218772]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   12:     0x5b49977eebbc - test[6ec0502068880816]::test_main_inner::<test[6ec0502068880816]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x5b499786eb42 - <alloc[95e62e727ddf147d]::boxed::Box<dyn for<'a, 'b> core[28b146924c2f19c6]::ops::function::Fn<(&'a std[929523f510218772]::panic::PanicHookInfo<'b>,), Output = ()> + core[28b146924c2f19c6]::marker::Sync + core[28b146924c2f19c6]::marker::Send> as core[28b146924c2f19c6]::ops::function::Fn<(&std[929523f510218772]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   14:     0x5b499786eb42 - std[929523f510218772]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5b49978546e2 - std[929523f510218772]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x5b4997849809 - std[929523f510218772]::sys::backtrace::__rust_end_short_backtrace::<std[929523f510218772]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5b49978553fd - __rustc[acf6043c977865fb]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5b499788b38c - core[28b146924c2f19c6]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5b499788b2a3 - core[28b146924c2f19c6]::panicking::assert_failed_inner
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panicking.rs:434:23
[INFO] [stdout]   20:     0x5b499782d8b9 - core[28b146924c2f19c6]::panicking::assert_failed::<i32, i32>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x5b49977ddcb5 - sandbox_verification_linux[6fc616930bdf4b64]::sandbox_runs_command_successfully::sandbox_runs_command_successfully
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification_linux.rs:296:5
[INFO] [stdout]   22:     0x5b49977dcf86 - sandbox_verification_linux[6fc616930bdf4b64]::sandbox_runs_command_successfully
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification_linux.rs:283:1
[INFO] [stdout]   23:     0x5b49977db4c7 - sandbox_verification_linux[6fc616930bdf4b64]::sandbox_runs_command_successfully::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification_linux.rs:283:10
[INFO] [stdout]   24:     0x5b49977e19b6 - <sandbox_verification_linux[6fc616930bdf4b64]::sandbox_runs_command_successfully::{closure#0} as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x5b49977e1c9b - <fn() -> core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   26:     0x5b49977e1c9b - test[6ec0502068880816]::__rust_begin_short_backtrace::<core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>, fn() -> core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:724:18
[INFO] [stdout]   27:     0x5b49977ef515 - test[6ec0502068880816]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:747:74
[INFO] [stdout]   28:     0x5b49977ef515 - <core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   29:     0x5b49977ef515 - std[929523f510218772]::panicking::catch_unwind::do_call::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}>, core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:581:40
[INFO] [stdout]   30:     0x5b49977ef515 - std[929523f510218772]::panicking::catch_unwind::<core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>, core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:544:19
[INFO] [stdout]   31:     0x5b49977ef515 - std[929523f510218772]::panic::catch_unwind::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}>, core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panic.rs:359:14
[INFO] [stdout]   32:     0x5b49977ef515 - test[6ec0502068880816]::run_test_in_process
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:747:27
[INFO] [stdout]   33:     0x5b49977ef515 - test[6ec0502068880816]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:668:43
[INFO] [stdout]   34:     0x5b49977ea074 - test[6ec0502068880816]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:698:41
[INFO] [stdout]   35:     0x5b49977ea074 - std[929523f510218772]::sys::backtrace::__rust_begin_short_backtrace::<test[6ec0502068880816]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   36:     0x5b49977f2592 - std[929523f510218772]::thread::lifecycle::spawn_unchecked::<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   37:     0x5b49977f2592 - <core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   38:     0x5b49977f2592 - std[929523f510218772]::panicking::catch_unwind::do_call::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:581:40
[INFO] [stdout]   39:     0x5b49977f2592 - std[929523f510218772]::panicking::catch_unwind::<(), core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:544:19
[INFO] [stdout]   40:     0x5b49977f2592 - std[929523f510218772]::panic::catch_unwind::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panic.rs:359:14
[INFO] [stdout]   41:     0x5b49977f2592 - std[929523f510218772]::thread::lifecycle::spawn_unchecked::<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   42:     0x5b49977f2592 - <std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1} as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   43:     0x5b499787646f - <alloc[95e62e727ddf147d]::boxed::Box<dyn core[28b146924c2f19c6]::ops::function::FnOnce<(), Output = ()> + core[28b146924c2f19c6]::marker::Send> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/alloc/src/boxed.rs:2277:9
[INFO] [stdout]   44:     0x5b499787646f - <std[929523f510218772]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   45:     0x7a9379031aa4 - <unknown>
[INFO] [stdout]   46:     0x7a93790bea64 - clone
[INFO] [stdout]   47:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- sandbox_allows_write_to_writable_root stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'sandbox_allows_write_to_writable_root' (3164) panicked at tests/sandbox_verification_linux.rs:105:5:
[INFO] [stdout] assertion `left == right` failed: write should succeed in writable_root
[INFO] [stdout]   left: 1
[INFO] [stdout]  right: 0
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5b4997876cd8 - std[929523f510218772]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5b4997876cd8 - std[929523f510218772]::backtrace_rs::backtrace::trace_unsynchronized::<std[929523f510218772]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5b4997876cd8 - std[929523f510218772]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5b4997876cd8 - <<std[929523f510218772]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[28b146924c2f19c6]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5b499788abfa - <core[28b146924c2f19c6]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5b499788abfa - core[28b146924c2f19c6]::fmt::write
[INFO] [stdout]    6:     0x5b499787b5f2 - std[929523f510218772]::io::default_write_fmt::<alloc[95e62e727ddf147d]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/io/mod.rs:622:11
[INFO] [stdout]    7:     0x5b499787b5f2 - <alloc[95e62e727ddf147d]::vec::Vec<u8> as std[929523f510218772]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/io/mod.rs:1977:13
[INFO] [stdout]    8:     0x5b4997854626 - <std[929523f510218772]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5b4997854626 - std[929523f510218772]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5b499786e989 - std[929523f510218772]::panicking::default_hook
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5b49977eebbc - <alloc[95e62e727ddf147d]::boxed::Box<dyn for<'a, 'b> core[28b146924c2f19c6]::ops::function::Fn<(&'a std[929523f510218772]::panic::PanicHookInfo<'b>,), Output = ()> + core[28b146924c2f19c6]::marker::Sync + core[28b146924c2f19c6]::marker::Send> as core[28b146924c2f19c6]::ops::function::Fn<(&std[929523f510218772]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   12:     0x5b49977eebbc - test[6ec0502068880816]::test_main_inner::<test[6ec0502068880816]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x5b499786eb42 - <alloc[95e62e727ddf147d]::boxed::Box<dyn for<'a, 'b> core[28b146924c2f19c6]::ops::function::Fn<(&'a std[929523f510218772]::panic::PanicHookInfo<'b>,), Output = ()> + core[28b146924c2f19c6]::marker::Sync + core[28b146924c2f19c6]::marker::Send> as core[28b146924c2f19c6]::ops::function::Fn<(&std[929523f510218772]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   14:     0x5b499786eb42 - std[929523f510218772]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5b49978546e2 - std[929523f510218772]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x5b4997849809 - std[929523f510218772]::sys::backtrace::__rust_end_short_backtrace::<std[929523f510218772]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5b49978553fd - __rustc[acf6043c977865fb]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5b499788b38c - core[28b146924c2f19c6]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5b499788b2a3 - core[28b146924c2f19c6]::panicking::assert_failed_inner
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panicking.rs:434:23
[INFO] [stdout]   20:     0x5b499782d8b9 - core[28b146924c2f19c6]::panicking::assert_failed::<i32, i32>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x5b49977de6d7 - sandbox_verification_linux[6fc616930bdf4b64]::sandbox_allows_write_to_writable_root::sandbox_allows_write_to_writable_root
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification_linux.rs:105:5
[INFO] [stdout]   22:     0x5b49977dcfa6 - sandbox_verification_linux[6fc616930bdf4b64]::sandbox_allows_write_to_writable_root
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification_linux.rs:89:1
[INFO] [stdout]   23:     0x5b49977db527 - sandbox_verification_linux[6fc616930bdf4b64]::sandbox_allows_write_to_writable_root::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification_linux.rs:89:10
[INFO] [stdout]   24:     0x5b49977e1a36 - <sandbox_verification_linux[6fc616930bdf4b64]::sandbox_allows_write_to_writable_root::{closure#0} as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x5b49977e1c9b - <fn() -> core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   26:     0x5b49977e1c9b - test[6ec0502068880816]::__rust_begin_short_backtrace::<core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>, fn() -> core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:724:18
[INFO] [stdout]   27:     0x5b49977ef515 - test[6ec0502068880816]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:747:74
[INFO] [stdout]   28:     0x5b49977ef515 - <core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   29:     0x5b49977ef515 - std[929523f510218772]::panicking::catch_unwind::do_call::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}>, core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:581:40
[INFO] [stdout]   30:     0x5b49977ef515 - std[929523f510218772]::panicking::catch_unwind::<core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>, core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:544:19
[INFO] [stdout]   31:     0x5b49977ef515 - std[929523f510218772]::panic::catch_unwind::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}>, core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panic.rs:359:14
[INFO] [stdout]   32:     0x5b49977ef515 - test[6ec0502068880816]::run_test_in_process
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:747:27
[INFO] [stdout]   33:     0x5b49977ef515 - test[6ec0502068880816]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:668:43
[INFO] [stdout]   34:     0x5b49977ea074 - test[6ec0502068880816]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:698:41
[INFO] [stdout]   35:     0x5b49977ea074 - std[929523f510218772]::sys::backtrace::__rust_begin_short_backtrace::<test[6ec0502068880816]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   36:     0x5b49977f2592 - std[929523f510218772]::thread::lifecycle::spawn_unchecked::<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   37:     0x5b49977f2592 - <core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   38:     0x5b49977f2592 - std[929523f510218772]::panicking::catch_unwind::do_call::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:581:40
[INFO] [stdout]   39:     0x5b49977f2592 - std[929523f510218772]::panicking::catch_unwind::<(), core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:544:19
[INFO] [stdout]   40:     0x5b49977f2592 - std[929523f510218772]::panic::catch_unwind::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panic.rs:359:14
[INFO] [stdout]   41:     0x5b49977f2592 - std[929523f510218772]::thread::lifecycle::spawn_unchecked::<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   42:     0x5b49977f2592 - <std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1} as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   43:     0x5b499787646f - <alloc[95e62e727ddf147d]::boxed::Box<dyn core[28b146924c2f19c6]::ops::function::FnOnce<(), Output = ()> + core[28b146924c2f19c6]::marker::Send> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/alloc/src/boxed.rs:2277:9
[INFO] [stdout]   44:     0x5b499787646f - <std[929523f510218772]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   45:     0x7a9379031aa4 - <unknown>
[INFO] [stdout]   46:     0x7a93790bea64 - clone
[INFO] [stdout]   47:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- sandbox_read_deny_blocks_file_access::case_2_ssh_dir stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'sandbox_read_deny_blocks_file_access::case_2_ssh_dir' (3170) panicked at tests/sandbox_verification_linux.rs:275:5:
[INFO] [stdout] assertion `left == right` failed: reading file outside denied dir should succeed
[INFO] [stdout]   left: 1
[INFO] [stdout]  right: 0
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5b4997876cd8 - std[929523f510218772]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5b4997876cd8 - std[929523f510218772]::backtrace_rs::backtrace::trace_unsynchronized::<std[929523f510218772]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5b4997876cd8 - std[929523f510218772]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5b4997876cd8 - <<std[929523f510218772]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[28b146924c2f19c6]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5b499788abfa - <core[28b146924c2f19c6]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5b499788abfa - core[28b146924c2f19c6]::fmt::write
[INFO] [stdout]    6:     0x5b499787b5f2 - std[929523f510218772]::io::default_write_fmt::<alloc[95e62e727ddf147d]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/io/mod.rs:622:11
[INFO] [stdout]    7:     0x5b499787b5f2 - <alloc[95e62e727ddf147d]::vec::Vec<u8> as std[929523f510218772]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/io/mod.rs:1977:13
[INFO] [stdout]    8:     0x5b4997854626 - <std[929523f510218772]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5b4997854626 - std[929523f510218772]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5b499786e989 - std[929523f510218772]::panicking::default_hook
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5b49977eebbc - <alloc[95e62e727ddf147d]::boxed::Box<dyn for<'a, 'b> core[28b146924c2f19c6]::ops::function::Fn<(&'a std[929523f510218772]::panic::PanicHookInfo<'b>,), Output = ()> + core[28b146924c2f19c6]::marker::Sync + core[28b146924c2f19c6]::marker::Send> as core[28b146924c2f19c6]::ops::function::Fn<(&std[929523f510218772]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   12:     0x5b49977eebbc - test[6ec0502068880816]::test_main_inner::<test[6ec0502068880816]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x5b499786eb42 - <alloc[95e62e727ddf147d]::boxed::Box<dyn for<'a, 'b> core[28b146924c2f19c6]::ops::function::Fn<(&'a std[929523f510218772]::panic::PanicHookInfo<'b>,), Output = ()> + core[28b146924c2f19c6]::marker::Sync + core[28b146924c2f19c6]::marker::Send> as core[28b146924c2f19c6]::ops::function::Fn<(&std[929523f510218772]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   14:     0x5b499786eb42 - std[929523f510218772]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5b49978546e2 - std[929523f510218772]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x5b4997849809 - std[929523f510218772]::sys::backtrace::__rust_end_short_backtrace::<std[929523f510218772]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5b49978553fd - __rustc[acf6043c977865fb]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5b499788b38c - core[28b146924c2f19c6]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5b499788b2a3 - core[28b146924c2f19c6]::panicking::assert_failed_inner
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panicking.rs:434:23
[INFO] [stdout]   20:     0x5b499782d8b9 - core[28b146924c2f19c6]::panicking::assert_failed::<i32, i32>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x5b49977dce81 - sandbox_verification_linux[6fc616930bdf4b64]::sandbox_read_deny_blocks_file_access
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification_linux.rs:275:5
[INFO] [stdout]   22:     0x5b49977dd53e - sandbox_verification_linux[6fc616930bdf4b64]::sandbox_read_deny_blocks_file_access::case_2_ssh_dir
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification_linux.rs:238:1
[INFO] [stdout]   23:     0x5b49977db647 - sandbox_verification_linux[6fc616930bdf4b64]::sandbox_read_deny_blocks_file_access::case_2_ssh_dir::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification_linux.rs:238:10
[INFO] [stdout]   24:     0x5b49977e1bb6 - <sandbox_verification_linux[6fc616930bdf4b64]::sandbox_read_deny_blocks_file_access::case_2_ssh_dir::{closure#0} as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x5b49977e1c9b - <fn() -> core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   26:     0x5b49977e1c9b - test[6ec0502068880816]::__rust_begin_short_backtrace::<core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>, fn() -> core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:724:18
[INFO] [stdout]   27:     0x5b49977ef515 - test[6ec0502068880816]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:747:74
[INFO] [stdout]   28:     0x5b49977ef515 - <core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   29:     0x5b49977ef515 - std[929523f510218772]::panicking::catch_unwind::do_call::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}>, core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:581:40
[INFO] [stdout]   30:     0x5b49977ef515 - std[929523f510218772]::panicking::catch_unwind::<core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>, core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:544:19
[INFO] [stdout]   31:     0x5b49977ef515 - std[929523f510218772]::panic::catch_unwind::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}>, core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panic.rs:359:14
[INFO] [stdout]   32:     0x5b49977ef515 - test[6ec0502068880816]::run_test_in_process
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:747:27
[INFO] [stdout]   33:     0x5b49977ef515 - test[6ec0502068880816]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:668:43
[INFO] [stdout]   34:     0x5b49977ea074 - test[6ec0502068880816]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:698:41
[INFO] [stdout]   35:     0x5b49977ea074 - std[929523f510218772]::sys::backtrace::__rust_begin_short_backtrace::<test[6ec0502068880816]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   36:     0x5b49977f2592 - std[929523f510218772]::thread::lifecycle::spawn_unchecked::<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   37:     0x5b49977f2592 - <core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   38:     0x5b49977f2592 - std[929523f510218772]::panicking::catch_unwind::do_call::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:581:40
[INFO] [stdout]   39:     0x5b49977f2592 - std[929523f510218772]::panicking::catch_unwind::<(), core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:544:19
[INFO] [stdout]   40:     0x5b49977f2592 - std[929523f510218772]::panic::catch_unwind::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panic.rs:359:14
[INFO] [stdout]   41:     0x5b49977f2592 - std[929523f510218772]::thread::lifecycle::spawn_unchecked::<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   42:     0x5b49977f2592 - <std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1} as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   43:     0x5b499787646f - <alloc[95e62e727ddf147d]::boxed::Box<dyn core[28b146924c2f19c6]::ops::function::FnOnce<(), Output = ()> + core[28b146924c2f19c6]::marker::Send> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/alloc/src/boxed.rs:2277:9
[INFO] [stdout]   44:     0x5b499787646f - <std[929523f510218772]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   45:     0x7a9379031aa4 - <unknown>
[INFO] [stdout]   46:     0x7a93790bea64 - clone
[INFO] [stdout]   47:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- sandbox_read_deny_blocks_file_access::case_1_file_in_denied_dir stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'sandbox_read_deny_blocks_file_access::case_1_file_in_denied_dir' (3169) panicked at tests/sandbox_verification_linux.rs:275:5:
[INFO] [stdout] assertion `left == right` failed: reading file outside denied dir should succeed
[INFO] [stdout]   left: 1
[INFO] [stdout]  right: 0
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5b4997876cd8 - std[929523f510218772]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5b4997876cd8 - std[929523f510218772]::backtrace_rs::backtrace::trace_unsynchronized::<std[929523f510218772]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5b4997876cd8 - std[929523f510218772]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5b4997876cd8 - <<std[929523f510218772]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[28b146924c2f19c6]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5b499788abfa - <core[28b146924c2f19c6]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5b499788abfa - core[28b146924c2f19c6]::fmt::write
[INFO] [stdout]    6:     0x5b499787b5f2 - std[929523f510218772]::io::default_write_fmt::<alloc[95e62e727ddf147d]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/io/mod.rs:622:11
[INFO] [stdout]    7:     0x5b499787b5f2 - <alloc[95e62e727ddf147d]::vec::Vec<u8> as std[929523f510218772]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/io/mod.rs:1977:13
[INFO] [stdout]    8:     0x5b4997854626 - <std[929523f510218772]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5b4997854626 - std[929523f510218772]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5b499786e989 - std[929523f510218772]::panicking::default_hook
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5b49977eebbc - <alloc[95e62e727ddf147d]::boxed::Box<dyn for<'a, 'b> core[28b146924c2f19c6]::ops::function::Fn<(&'a std[929523f510218772]::panic::PanicHookInfo<'b>,), Output = ()> + core[28b146924c2f19c6]::marker::Sync + core[28b146924c2f19c6]::marker::Send> as core[28b146924c2f19c6]::ops::function::Fn<(&std[929523f510218772]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   12:     0x5b49977eebbc - test[6ec0502068880816]::test_main_inner::<test[6ec0502068880816]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x5b499786eb42 - <alloc[95e62e727ddf147d]::boxed::Box<dyn for<'a, 'b> core[28b146924c2f19c6]::ops::function::Fn<(&'a std[929523f510218772]::panic::PanicHookInfo<'b>,), Output = ()> + core[28b146924c2f19c6]::marker::Sync + core[28b146924c2f19c6]::marker::Send> as core[28b146924c2f19c6]::ops::function::Fn<(&std[929523f510218772]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   14:     0x5b499786eb42 - std[929523f510218772]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5b49978546e2 - std[929523f510218772]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x5b4997849809 - std[929523f510218772]::sys::backtrace::__rust_end_short_backtrace::<std[929523f510218772]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5b49978553fd - __rustc[acf6043c977865fb]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5b499788b38c - core[28b146924c2f19c6]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5b499788b2a3 - core[28b146924c2f19c6]::panicking::assert_failed_inner
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panicking.rs:434:23
[INFO] [stdout]   20:     0x5b499782d8b9 - core[28b146924c2f19c6]::panicking::assert_failed::<i32, i32>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x5b49977dce81 - sandbox_verification_linux[6fc616930bdf4b64]::sandbox_read_deny_blocks_file_access
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification_linux.rs:275:5
[INFO] [stdout]   22:     0x5b49977dd5be - sandbox_verification_linux[6fc616930bdf4b64]::sandbox_read_deny_blocks_file_access::case_1_file_in_denied_dir
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification_linux.rs:238:1
[INFO] [stdout]   23:     0x5b49977db677 - sandbox_verification_linux[6fc616930bdf4b64]::sandbox_read_deny_blocks_file_access::case_1_file_in_denied_dir::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification_linux.rs:238:10
[INFO] [stdout]   24:     0x5b49977e1bf6 - <sandbox_verification_linux[6fc616930bdf4b64]::sandbox_read_deny_blocks_file_access::case_1_file_in_denied_dir::{closure#0} as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x5b49977e1c9b - <fn() -> core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   26:     0x5b49977e1c9b - test[6ec0502068880816]::__rust_begin_short_backtrace::<core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>, fn() -> core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:724:18
[INFO] [stdout]   27:     0x5b49977ef515 - test[6ec0502068880816]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:747:74
[INFO] [stdout]   28:     0x5b49977ef515 - <core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   29:     0x5b49977ef515 - std[929523f510218772]::panicking::catch_unwind::do_call::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}>, core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:581:40
[INFO] [stdout]   30:     0x5b49977ef515 - std[929523f510218772]::panicking::catch_unwind::<core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>, core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:544:19
[INFO] [stdout]   31:     0x5b49977ef515 - std[929523f510218772]::panic::catch_unwind::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}>, core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panic.rs:359:14
[INFO] [stdout]   32:     0x5b49977ef515 - test[6ec0502068880816]::run_test_in_process
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:747:27
[INFO] [stdout]   33:     0x5b49977ef515 - test[6ec0502068880816]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:668:43
[INFO] [stdout]   34:     0x5b49977ea074 - test[6ec0502068880816]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:698:41
[INFO] [stdout]   35:     0x5b49977ea074 - std[929523f510218772]::sys::backtrace::__rust_begin_short_backtrace::<test[6ec0502068880816]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   36:     0x5b49977f2592 - std[929523f510218772]::thread::lifecycle::spawn_unchecked::<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   37:     0x5b49977f2592 - <core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   38:     0x5b49977f2592 - std[929523f510218772]::panicking::catch_unwind::do_call::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:581:40
[INFO] [stdout]   39:     0x5b49977f2592 - std[929523f510218772]::panicking::catch_unwind::<(), core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:544:19
[INFO] [stdout]   40:     0x5b49977f2592 - std[929523f510218772]::panic::catch_unwind::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panic.rs:359:14
[INFO] [stdout]   41:     0x5b49977f2592 - std[929523f510218772]::thread::lifecycle::spawn_unchecked::<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   42:     0x5b49977f2592 - <std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1} as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   43:     0x5b499787646f - <alloc[95e62e727ddf147d]::boxed::Box<dyn core[28b146924c2f19c6]::ops::function::FnOnce<(), Output = ()> + core[28b146924c2f19c6]::marker::Send> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/alloc/src/boxed.rs:2277:9
[INFO] [stdout]   44:     0x5b499787646f - <std[929523f510218772]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   45:     0x7a9379031aa4 - <unknown>
[INFO] [stdout]   46:     0x7a93790bea64 - clone
[INFO] [stdout]   47:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     sandbox_allows_read_when_writes_denied
[INFO] [stdout]     sandbox_allows_write_outside_read_only_subpath
[INFO] [stdout]     sandbox_allows_write_to_writable_root
[INFO] [stdout]     sandbox_read_deny_blocks_file_access::case_1_file_in_denied_dir
[INFO] [stdout]     sandbox_read_deny_blocks_file_access::case_2_ssh_dir
[INFO] [stdout]     sandbox_runs_command_successfully
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 4 passed; 6 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.30s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--test sandbox_verification_linux`
[INFO] running `Command { std: "docker" "inspect" "2da57a94892ab2914c93718877a607b0ae3fb9cdee510c067e00367402233cfa", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2da57a94892ab2914c93718877a607b0ae3fb9cdee510c067e00367402233cfa", kill_on_drop: false }`
[INFO] [stdout] 2da57a94892ab2914c93718877a607b0ae3fb9cdee510c067e00367402233cfa
