[INFO] fetching crate runok 0.1.1...
[INFO] testing runok-0.1.1 against 1.94.0 for beta-1.95-1
[INFO] extracting crate runok 0.1.1 into /workspace/builds/worker-4-tc1/source
[INFO] removed /workspace/builds/worker-4-tc1/source/rust-toolchain.toml
[INFO] started tweaking crates.io crate runok 0.1.1
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate runok 0.1.1
[INFO] tweaked toml for crates.io crate runok 0.1.1 written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate runok 0.1.1 on toolchain 1.94.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.94.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate runok 0.1.1 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.94.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded tree-sitter-language v0.1.7
[INFO] [stderr]   Downloaded arraydeque v0.5.1
[INFO] [stderr]   Downloaded streaming-iterator v0.1.9
[INFO] [stderr]   Downloaded predicates-core v1.0.10
[INFO] [stderr]   Downloaded wait-timeout v0.2.1
[INFO] [stderr]   Downloaded nohash-hasher v0.2.0
[INFO] [stderr]   Downloaded murmur3 v0.4.1
[INFO] [stderr]   Downloaded termtree v0.5.1
[INFO] [stderr]   Downloaded better_any v0.2.1
[INFO] [stderr]   Downloaded anstyle-wincon v3.0.11
[INFO] [stderr]   Downloaded difflib v0.4.0
[INFO] [stderr]   Downloaded anstyle-query v1.1.5
[INFO] [stderr]   Downloaded bit-vec v0.8.0
[INFO] [stderr]   Downloaded assert_cmd v2.1.2
[INFO] [stderr]   Downloaded clap_derive v4.5.55
[INFO] [stderr]   Downloaded cel-parser v0.10.1
[INFO] [stderr]   Downloaded tempfile v3.25.0
[INFO] [stderr]   Downloaded saphyr-parser-bw v0.0.608
[INFO] [stderr]   Downloaded landlock v0.4.4
[INFO] [stderr]   Downloaded antlr4rust v0.3.0-rc2
[INFO] [stderr]   Downloaded tree-sitter v0.26.5
[INFO] [stderr]   Downloaded seccompiler v0.5.0
[INFO] [stderr]   Downloaded annotate-snippets v0.12.12
[INFO] [stderr]   Downloaded getrandom v0.4.1
[INFO] [stderr]   Downloaded cel-interpreter v0.10.0
[INFO] [stderr]   Downloaded indoc v2.0.7
[INFO] [stderr]   Downloaded bit-set v0.8.0
[INFO] [stderr]   Downloaded anstyle-parse v0.2.7
[INFO] [stderr]   Downloaded is_terminal_polyfill v1.70.2
[INFO] [stderr]   Downloaded anstream v0.6.21
[INFO] [stderr]   Downloaded enumflags2 v0.7.12
[INFO] [stderr]   Downloaded predicates v3.1.4
[INFO] [stderr]   Downloaded bstr v1.12.1
[INFO] [stderr]   Downloaded tree-sitter-bash v0.25.1
[INFO] [stderr]   Downloaded serde-saphyr v0.0.20
[INFO] [stderr]   Downloaded serde_derive_internals v0.29.1
[INFO] [stderr]   Downloaded schemars_derive v1.2.1
[INFO] [stderr]   Downloaded encoding_rs_io v0.1.7
[INFO] [stderr]   Downloaded colorchoice v1.0.4
[INFO] [stderr]   Downloaded enumflags2_derive v0.7.12
[INFO] [stderr]   Downloaded predicates-tree v1.0.13
[INFO] [stderr]   Downloaded once_cell_polyfill v1.70.2
[INFO] [stderr]   Downloaded float-cmp v0.10.0
[INFO] [stderr]   Downloaded normalize-line-endings v0.3.0
[INFO] [stderr]   Downloaded proc-macro-crate v3.4.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 19b486748abeed165b4f147e48e64f6550e847bce34495039d12755a2163affe
[INFO] running `Command { std: "docker" "start" "-a" "19b486748abeed165b4f147e48e64f6550e847bce34495039d12755a2163affe", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "19b486748abeed165b4f147e48e64f6550e847bce34495039d12755a2163affe", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "19b486748abeed165b4f147e48e64f6550e847bce34495039d12755a2163affe", kill_on_drop: false }`
[INFO] [stdout] 19b486748abeed165b4f147e48e64f6550e847bce34495039d12755a2163affe
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 5f2514a49e3a87136e24b2e6857b0fbfd82c07d2ea08365ac55d074db498735c
[INFO] running `Command { std: "docker" "start" "-a" "5f2514a49e3a87136e24b2e6857b0fbfd82c07d2ea08365ac55d074db498735c", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling libc v0.2.182
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling version_check v0.9.5
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling shlex v1.3.0
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]    Compiling cc v1.2.56
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling tree-sitter-language v0.1.7
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling itoa v1.0.17
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling anstyle v1.0.13
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling zerocopy v0.8.40
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling murmur3 v0.4.1
[INFO] [stderr]    Compiling anstyle-parse v0.2.7
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling better_any v0.2.1
[INFO] [stderr]    Compiling colorchoice v1.0.4
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling uuid v1.21.0
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling typed-arena v2.0.2
[INFO] [stderr]    Compiling paste v1.0.15
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling anstream v0.6.21
[INFO] [stderr]    Compiling antlr4rust v0.3.0-rc2
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling tree-sitter-bash v0.25.1
[INFO] [stderr]    Compiling encoding_rs v0.8.35
[INFO] [stderr]    Compiling clap_lex v1.0.0
[INFO] [stderr]    Compiling unicode-width v0.2.2
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling arraydeque v0.5.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 regex v1.12.3
[INFO] [stderr]    Compiling tree-sitter v0.26.5
[INFO] [stderr]    Compiling enumflags2 v0.7.12
[INFO] [stderr]    Compiling encoding_rs_io v0.1.7
[INFO] [stderr]    Compiling saphyr-parser-bw v0.0.608
[INFO] [stderr]    Compiling cel-parser v0.10.1
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling clap_builder v4.5.60
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling annotate-snippets v0.12.12
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling streaming-iterator v0.1.9
[INFO] [stderr]    Compiling nohash-hasher v0.2.0
[INFO] [stderr]    Compiling cpufeatures v0.2.17
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling clap v4.5.60
[INFO] [stderr]    Compiling serde-saphyr v0.0.20
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling landlock v0.4.4
[INFO] [stderr]    Compiling cel-interpreter v0.10.0
[INFO] [stderr]    Compiling seccompiler v0.5.0
[INFO] [stderr]    Compiling glob v0.3.3
[INFO] [stderr]    Compiling runok v0.1.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 35s
[INFO] running `Command { std: "docker" "inspect" "5f2514a49e3a87136e24b2e6857b0fbfd82c07d2ea08365ac55d074db498735c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5f2514a49e3a87136e24b2e6857b0fbfd82c07d2ea08365ac55d074db498735c", kill_on_drop: false }`
[INFO] [stdout] 5f2514a49e3a87136e24b2e6857b0fbfd82c07d2ea08365ac55d074db498735c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] fe363f98cfe97da990d783a86413f9f1a925a86b85fc98fda2d444bf8fdf6a7a
[INFO] running `Command { std: "docker" "start" "-a" "fe363f98cfe97da990d783a86413f9f1a925a86b85fc98fda2d444bf8fdf6a7a", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling winnow v0.7.14
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling semver v1.0.27
[INFO] [stderr]    Compiling toml_datetime v0.7.5+spec-1.1.0
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling getrandom v0.4.1
[INFO] [stderr]    Compiling ref-cast v1.0.25
[INFO] [stderr]    Compiling rstest_macros v0.26.1
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling assert_cmd v2.1.2
[INFO] [stderr]    Compiling difflib v0.4.0
[INFO] [stderr]    Compiling normalize-line-endings v0.3.0
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling relative-path v1.9.3
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]    Compiling futures-timer v3.0.3
[INFO] [stderr]    Compiling dyn-clone v1.0.20
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling toml_parser v1.0.9+spec-1.1.0
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling toml_edit v0.23.10+spec-1.0.0
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling tree-sitter v0.26.5
[INFO] [stderr]    Compiling proc-macro-crate v3.4.0
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling tempfile v3.25.0
[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.5.55
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling ref-cast-impl v1.0.25
[INFO] [stderr]    Compiling enumflags2 v0.7.12
[INFO] [stderr]    Compiling schemars_derive v1.2.1
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling saphyr-parser-bw v0.0.608
[INFO] [stderr]    Compiling landlock v0.4.4
[INFO] [stderr]    Compiling clap v4.5.60
[INFO] [stderr]    Compiling rstest v0.26.1
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling serde-saphyr v0.0.20
[INFO] [stderr]    Compiling schemars v1.2.1
[INFO] [stderr]    Compiling cel-interpreter v0.10.0
[INFO] [stderr]    Compiling runok v0.1.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 26s
[INFO] running `Command { std: "docker" "inspect" "fe363f98cfe97da990d783a86413f9f1a925a86b85fc98fda2d444bf8fdf6a7a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fe363f98cfe97da990d783a86413f9f1a925a86b85fc98fda2d444bf8fdf6a7a", kill_on_drop: false }`
[INFO] [stdout] fe363f98cfe97da990d783a86413f9f1a925a86b85fc98fda2d444bf8fdf6a7a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] eead7679987f667925b1ba26376c77f860fa5b58494ccd30f90965004089ff10
[INFO] running `Command { std: "docker" "start" "-a" "eead7679987f667925b1ba26376c77f860fa5b58494ccd30f90965004089ff10", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.26s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/runok-50be560ae4ec04c3)
[INFO] [stdout] 
[INFO] [stdout] running 1102 tests
[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_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_no_match_output_maps_defaults::case_3_explicit_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_4_explicit_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_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_1_no_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::from_command_extracts_command ... ok
[INFO] [stdout] test adapter::check_adapter::tests::from_stdin_extracts_command ... 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_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_no_match_returns_exit_0 ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::extract_command_returns_expected::case_1_empty_args ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::extract_command_returns_expected::case_3_single_compound_arg ... 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_2_single_arg ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::extract_command_returns_expected::case_4_multiple_args ... 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_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::handle_action_allow_with_merged_policy ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_action_ask_returns_exit_3::case_1_with_message ... 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::handle_action_ask_returns_exit_3::case_2_without_message ... 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_default_returns_exit_0 ... 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_action_deny_returns_exit_3::case_1_with_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_dry_run_always_returns_exit_0::case_4_default_action ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_dry_run_always_returns_exit_0::case_1_allow ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_no_match_empty_args_returns_0 ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_no_match_follows_defaults::case_1_allow_default ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_dry_run_does_not_execute_command ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_error_returns_exit_1 ... 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_2_none_default ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::build_action_output_maps_action_to_hook_output::case_1_allow ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_no_match_follows_defaults::case_4_ask_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_3_deny_with_message ... 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_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_7_ask_without_message ... ok
[INFO] [stdout] test adapter::exec_adapter::tests::handle_dry_run_always_returns_exit_0::case_2_deny ... 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_dry_run_always_returns_exit_0::case_3_ask ... 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_8_ask_with_sandbox ... 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_4_explicit_deny ... 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_non_bash_returns_none ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::build_no_match_output_with_default_sandbox::case_1_ask ... ok
[INFO] [stdout] test adapter::check_adapter::tests::build_check_output_maps_action_to_output::case_4_ask_without_message ... {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::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_action_returns_exit_0 ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::extract_command_invalid_bash_input_returns_error ... ok
[INFO] [stdout] {"hookSpecificOutput":{"hookEventName":"PreToolUse","test adapter::hook_adapter::tests::hook_input_deserializes_from_snake_case_json ... ok
[INFO] [stdout] permissionDecision":"ask"}}test adapter::hook_adapter::tests::hook_output_serializes_to_camel_case_json ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::handle_error_returns_exit_2 ... 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::extract_command_filters_by_tool_name::case_1_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::sandbox_updated_input_resolves_preset::case_2_preset_none ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::handle_no_match_returns_exit_0 ... 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_preset::case_1_preset_with_spaces ... 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_2_command_with_spaces ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::wrap_with_sandbox_quotes_preset::case_2_preset_with_special_chars ... ok
[INFO] [stdout] test adapter::tests::allow_with_sandbox_preset_passes_to_handle_action ... ok
[INFO] [stdout] test adapter::tests::apply_sandbox_fallback_works::case_1_preset_none_with_default ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::wrap_with_sandbox_rejects_nul_byte ... 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_2_preset_some_with_default ... ok
[INFO] [stdout] test adapter::tests::compound_all_default_calls_handle_no_match ... ok
[INFO] [stdout] test adapter::tests::apply_sandbox_fallback_works::case_4_merged_none_with_default ... ok
[INFO] [stdout] test adapter::tests::compound_deny_wins_over_allow ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::wrap_with_sandbox_quotes_command::case_3_compound_and ... 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::wrap_with_sandbox_quotes_command::case_5_compound_semicolon ... ok
[INFO] [stdout] test adapter::tests::dry_run_with_no_match_calls_handle_dry_run ... ok
[INFO] [stdout] test adapter::tests::dry_run_with_no_match_resolves_defaults_action::case_1_deny ... ok
[INFO] [stdout] test adapter::hook_adapter::tests::wrap_with_sandbox_quotes_command::case_4_compound_pipe ... ok
[INFO] [stdout] test adapter::tests::dry_run_with_no_match_resolves_defaults_action::case_3_ask ... ok
[INFO] [stdout] test adapter::tests::dry_run_with_no_match_resolves_defaults_action::case_2_allow ... ok
[INFO] [stdout] test adapter::tests::extract_error_calls_handle_error ... ok
[INFO] [stdout] test adapter::tests::dry_run_calls_handle_dry_run_instead_of_handle_action ... ok
[INFO] [stdout] test adapter::tests::extract_none_calls_handle_no_match ... ok
[INFO] [stdout] test adapter::tests::handle_action_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::handle_action_exit_code_propagated::case_3_exit_42 ... ok
[INFO] [stdout] test adapter::tests::handle_no_match_error_delegates_to_handle_error::case_1_extract_none ... ok
[INFO] [stdout] test adapter::tests::handle_no_match_error_delegates_to_handle_error::case_2_no_matching_rule ... ok
[INFO] [stdout] test adapter::tests::handle_no_match_exit_code_propagated::case_1_exit_0 ... ok
[INFO] [stdout] test adapter::tests::handle_no_match_exit_code_propagated::case_2_exit_5 ... ok
[INFO] [stdout] test adapter::tests::handle_action_error_delegates_to_handle_error ... ok
[INFO] [stdout] test adapter::tests::matched_rule_with_sandbox_overrides_defaults_sandbox ... 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_no_match::case_1_no_matching_rule ... ok
[INFO] [stdout] test adapter::tests::handle_action_exit_code_propagated::case_2_exit_1 ... ok
[INFO] [stdout] test adapter::tests::handle_error_exit_code_propagated::case_1_exit_2 ... ok
[INFO] [stdout] test adapter::tests::dry_run_with_deny_calls_handle_dry_run ... ok
[INFO] [stdout] test adapter::tests::rule_match_calls_handle_action::case_1_allow ... ok
[INFO] [stdout] test adapter::tests::no_match_calls_handle_no_match::case_2_empty_config ... ok
[INFO] [stdout] test adapter::tests::extract_none_passes_defaults_to_handle_no_match ... ok
[INFO] [stdout] test adapter::tests::no_match_uses_config_defaults ... ok
[INFO] [stdout] test adapter::tests::rule_match_calls_handle_action::case_3_ask ... ok
[INFO] [stdout] test adapter::tests::no_match_with_defaults_sandbox_falls_back_in_dry_run ... ok
[INFO] [stdout] test adapter::tests::run_with_default_options_behaves_like_run ... ok
[INFO] [stdout] test config::cache::tests::cache_key_differs_for_different_refs::case_1_different_versions ... ok
[INFO] [stdout] test adapter::tests::single_extracted_subcommand_verbose_logs_extraction ... ok
[INFO] [stdout] test adapter::tests::single_extracted_subcommand_evaluates_simplified_form::case_1_for_loop_with_echo ... ok
[INFO] [stdout] test config::cache::tests::cache_key_differs_for_different_refs::case_2_different_repos ... ok
[INFO] [stdout] test adapter::tests::single_extracted_subcommand_evaluates_simplified_form::case_2_for_loop_no_matching_rule ... ok
[INFO] [stdout] test adapter::tests::for_loop_with_deny_rule_on_subcommand ... ok
[INFO] [stdout] test config::cache::tests::cache_key_is_deterministic::case_1_same_input ... ok
[INFO] [stdout] test config::cache::tests::cache_key_is_hex_sha256 ... ok
[INFO] [stdout] test config::dirs::tests::cache_dir::case_1_xdg_set ... ok
[INFO] [stdout] test config::dirs::tests::cache_dir::case_2_xdg_empty_falls_back ... ok
[INFO] [stdout] test config::cache::tests::miss_when_no_cache_dir ... ok
[INFO] [stdout] test config::cache::tests::hit_when_fresh_cache ... ok
[INFO] [stdout] test config::dirs::tests::cache_dir::case_3_xdg_unset_falls_back ... ok
[INFO] [stdout] test config::cache::tests::metadata_roundtrip ... ok
[INFO] [stdout] test config::cache::tests::immutable_never_stale ... ok
[INFO] [stdout] test config::cache::tests::stale_when_no_metadata ... ok
[INFO] [stdout] test config::cache::tests::stale_when_ttl_exceeded ... ok
[INFO] [stdout] test config::dirs::tests::cache_dir::case_4_both_unset ... ok
[INFO] [stdout] test config::dirs::tests::config_dir::case_1_xdg_set ... ok
[INFO] [stdout] test adapter::tests::rule_match_calls_handle_action::case_2_deny ... 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_3_xdg_unset_falls_back ... ok
[INFO] [stdout] test config::dirs::tests::home_dir::case_1_set ... ok
[INFO] [stdout] test config::dirs::tests::config_dir::case_4_both_unset ... ok
[INFO] [stdout] test config::error::tests::anyhow_error_chain_config_to_preset ... ok
[INFO] [stdout] test config::error::tests::config_error_from_io_error ... ok
[INFO] [stdout] test config::error::tests::config_error_into_anyhow ... ok
[INFO] [stdout] test config::error::tests::config_error_from_preset_error ... ok
[INFO] [stdout] test config::error::tests::config_error_io_has_source ... ok
[INFO] [stdout] test config::error::tests::config_error_validation_multiple ... 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_preset_has_source ... ok
[INFO] [stdout] test config::error::tests::preset_error_display::case_1 ... ok
[INFO] [stdout] test config::error::tests::preset_error_display::case_2 ... 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_implements_std_error ... ok
[INFO] [stdout] test config::error::tests::preset_error_display::case_5 ... ok
[INFO] [stdout] test config::error::tests::preset_error_local_not_found ... ok
[INFO] [stdout] test config::error::tests::preset_error_into_anyhow ... 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_1_global_local_yml ... ok
[INFO] [stdout] test config::error::tests::config_error_yaml_has_source ... ok
[INFO] [stdout] test config::loader::tests::load_global_local_override::case_2_global_local_yaml_fallback ... ok
[INFO] [stdout] test config::dirs::tests::home_dir::case_2_empty ... ok
[INFO] [stdout] test config::dirs::tests::home_dir::case_3_unset ... 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_global_local_override_parse_error ... ok
[INFO] [stdout] test config::loader::tests::load_local_only::case_1_yml ... ok
[INFO] [stdout] test config::loader::tests::load_local_override::case_1_local_yml ... ok
[INFO] [stdout] test config::loader::tests::load_global_only::case_1_yml ... 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_2_yaml_fallback ... 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_only_without_project_config ... ok
[INFO] [stdout] test config::loader::tests::load_local_override_parse_error ... ok
[INFO] [stdout] test config::loader::tests::load_no_config_files_returns_default ... ok
[INFO] [stdout] test config::loader::tests::load_merges_definitions ... ok
[INFO] [stdout] test config::loader::tests::load_merges_all_three_layers ... ok
[INFO] [stdout] test config::loader::tests::load_project_overrides_global_local_override ... 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_global_and_local ... ok
[INFO] [stdout] test config::loader::tests::load_merges_all_four_layers ... ok
[INFO] [stdout] test config::loader::tests::load_project_yml_takes_priority_over_yaml::case_2_project_local_override ... ok
[INFO] [stdout] test config::model::tests::action_and_pattern_returns_correct_action::case_2_allow ... ok
[INFO] [stdout] test config::loader::tests::load_yaml_parse_error::case_2_local_parse_error ... ok
[INFO] [stdout] test config::model::tests::action_and_pattern_returns_correct_action::case_1_deny ... 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_3_ask ... ok
[INFO] [stdout] test config::model::tests::action_and_pattern_returns_none_when_all_three_set ... ok
[INFO] [stdout] test config::loader::tests::load_yaml_parse_error::case_1_global_parse_error ... ok
[INFO] [stdout] test config::model::tests::action_and_pattern_returns_none_when_none_set ... ok
[INFO] [stdout] test config::model::tests::action_kind_ordering ... ok
[INFO] [stdout] test config::model::tests::action_kind_default_is_ask ... ok
[INFO] [stdout] test config::model::tests::expand_sandbox_path_refs_errors::case_2_no_paths_defined ... ok
[INFO] [stdout] test config::model::tests::expand_sandbox_path_refs_errors::case_1_undefined_name ... ok
[INFO] [stdout] test config::model::tests::action_and_pattern_returns_none_when_multiple_set ... ok
[INFO] [stdout] test config::model::tests::merge_defaults_sandbox_overridden ... ok
[INFO] [stdout] test config::model::tests::merge_both_default ... 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_base_only ... ok
[INFO] [stdout] test config::model::tests::merge_definitions_paths_deduplicates ... ok
[INFO] [stdout] test config::model::tests::merge_defaults_partial_override ... ok
[INFO] [stdout] test config::model::tests::merge_definitions_commands_appended ... 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_extends_appended ... ok
[INFO] [stdout] test config::model::tests::merge_override_only ... ok
[INFO] [stdout] test config::model::tests::merge_rules_appended ... ok
[INFO] [stdout] test config::model::tests::merge_definitions_paths_appended_per_key ... 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_2_one_denied ... ok
[INFO] [stdout] test config::model::tests::merge_strictest_network::case_3_both_denied ... ok
[INFO] [stdout] test config::model::tests::merge_strictest_no_fs_preserves_other ... 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_4_none_defaults_to_allowed ... ok
[INFO] [stdout] test config::model::tests::merge_strictest_single_preset ... 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_writable_intersection::case_2_empty_intersection ... 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_defaults_action::case_3 ... ok
[INFO] [stdout] test config::model::tests::parse_defaults_with_sandbox ... ok
[INFO] [stdout] test config::model::tests::parse_definitions_string_lists::case_1_wrappers ... ok
[INFO] [stdout] test config::model::tests::parse_definitions_sandbox ... ok
[INFO] [stdout] test config::model::tests::parse_definitions_paths ... ok
[INFO] [stdout] test config::model::tests::expand_sandbox_path_refs_success::case_1_single_path_ref ... ok
[INFO] [stdout] test config::model::tests::merge_defaults_action_overridden ... ok
[INFO] [stdout] test config::model::tests::parse_empty_string_returns_empty_config ... ok
[INFO] [stdout] test config::model::tests::parse_definitions_string_lists::case_2_commands ... ok
[INFO] [stdout] test config::model::tests::parse_error::case_3_invalid_action ... 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_error::case_1_invalid_yaml ... ok
[INFO] [stdout] test config::model::tests::parse_full_config ... ok
[INFO] [stdout] test config::model::tests::parse_rule_attributes::case_2_message ... ok
[INFO] [stdout] test config::model::tests::parse_extends ... ok
[INFO] [stdout] test config::model::tests::parse_rule_attributes::case_3_fix_suggestion ... ok
[INFO] [stdout] test config::model::tests::parse_rule_attributes::case_4_sandbox ... ok
[INFO] [stdout] test config::model::tests::parse_multiple_rules ... ok
[INFO] [stdout] test config::model::tests::parse_rule_attributes::case_5_message_and_fix ... ok
[INFO] [stdout] test config::model::tests::parse_single_rule::case_1_deny ... ok
[INFO] [stdout] test config::model::tests::parse_rule_all_optional_fields_none_by_default ... ok
[INFO] [stdout] test config::model::tests::parse_rule_attributes::case_6_when_and_message ... ok
[INFO] [stdout] test config::model::tests::parse_single_rule::case_2_allow ... ok
[INFO] [stdout] test config::model::tests::parse_rule_attributes::case_1_when ... ok
[INFO] [stdout] test config::model::tests::parse_single_rule::case_3_ask ... ok
[INFO] [stdout] test config::model::tests::validate_allow_with_valid_sandbox ... ok
[INFO] [stdout] test config::model::tests::validate_config_without_rules ... ok
[INFO] [stdout] test config::model::tests::validate_collects_all_errors ... ok
[INFO] [stdout] test config::model::tests::validate_ask_with_valid_sandbox ... ok
[INFO] [stdout] test config::model::tests::validate_errors_on_undefined_sandbox_name ... ok
[INFO] [stdout] test config::model::tests::validate_errors_on_rule_with_multiple_actions ... ok
[INFO] [stdout] test config::model::tests::validate_errors_on_rule_with_no_action ... ok
[INFO] [stdout] test config::model::tests::validate_errors_on_deny_with_sandbox ... ok
[INFO] [stdout] test config::model::tests::schema_is_up_to_date ... ok
[INFO] [stdout] test config::model::tests::validate_errors_on_undefined_sandbox_name_with_empty_definitions ... ok
[INFO] [stdout] test config::model::tests::validate_includes_rule_index_in_error ... ok
[INFO] [stdout] test config::preset::tests::circular_reference_back_to_root ... ok
[INFO] [stdout] test config::model::tests::validate_rejects_path_ref_in_definitions_paths ... ok
[INFO] [stdout] test config::preset::tests::circular_reference_three_level ... ok
[INFO] [stdout] test config::preset::tests::error_on_invalid_yaml_in_preset ... ok
[INFO] [stdout] test config::preset::tests::diamond_extends_resolved ... ok
[INFO] [stdout] test config::preset::tests::circular_reference_direct ... ok
[INFO] [stdout] test config::model::tests::validate_valid_config ... ok
[INFO] [stdout] test config::preset::tests::error_on_home_not_set ... ok
[INFO] [stdout] test config::preset::tests::error_message_contains_cycle_chain ... ok
[INFO] [stdout] test config::preset::tests::circular_reference_self ... ok
[INFO] [stdout] test config::preset::tests::error_on_nonexistent_absolute_path ... ok
[INFO] [stdout] test config::preset::tests::error_on_nonexistent_file ... ok
[INFO] [stdout] test config::preset::tests::error_on_path_traversal_relative::case_1_dot_dot_relative ... ok
[INFO] [stdout] test config::preset::tests::error_on_path_traversal_relative::case_2_dot_dot_nested ... ok
[INFO] [stdout] test config::preset::tests::error_on_path_traversal_home ... ok
[INFO] [stdout] test config::preset::tests::extends_stripped_from_resolved_config ... ok
[INFO] [stdout] test config::preset::tests::no_extends_returns_config_as_is ... ok
[INFO] [stdout] test config::preset::tests::loaded_preset_config_is_valid ... ok
[INFO] [stdout] test config::preset::tests::resolve_home_directory_path ... ok
[INFO] [stdout] test config::preset::tests::nested_extends_resolved ... ok
[INFO] [stdout] test config::preset::tests::resolve_absolute_path ... ok
[INFO] [stdout] test config::preset_remote::tests::commit_sha_detection::case_1_valid_sha ... ok
[INFO] [stdout] test config::preset_remote::tests::clone_miss_calls_clone_with_branch ... ok
[INFO] [stdout] test config::preset::tests::resolve_relative_path::case_1_relative_dot_slash ... ok
[INFO] [stdout] test config::preset::tests::resolve_relative_path::case_2_relative_no_dot ... ok
[INFO] [stdout] test config::preset_remote::tests::cache_hit_skips_clone ... 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_6_tag ... ok
[INFO] [stdout] test config::preset_remote::tests::commit_sha_detection::case_2_all_digits ... ok
[INFO] [stdout] test config::preset_remote::tests::commit_sha_detection::case_7_empty ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_01_github_latest ... ok
[INFO] [stdout] test config::preset_remote::tests::commit_sha_triggers_fetch_and_checkout_after_clone ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_03_github_sha ... ok
[INFO] [stdout] test config::preset_remote::tests::missing_runok_yml_returns_error ... ok
[INFO] [stdout] test config::preset_remote::tests::git_url_commit_sha_fetches_then_checkouts ... ok
[INFO] [stdout] test config::preset_remote::tests::github_to_url::case_1_basic ... 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_06_https_url_with_ref ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_07_ssh_url_no_ref ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_09_ssh_url_no_git_suffix_with_ref ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_10_https_url_with_userinfo ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_11_https_url_with_userinfo_and_ref ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_12_local_relative ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_13_local_absolute ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_14_local_home ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference_errors::case_1_no_slash ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference_errors::case_2_empty_owner ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference_errors::case_3_empty_repo ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference_errors::case_4_empty_version ... 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_https_url_no_ref ... ok
[INFO] [stdout] test config::preset_remote::tests::parse_reference::case_08_ssh_url_with_ref ... ok
[INFO] [stdout] test config::preset_remote::tests::github_to_url::case_2_with_dash ... ok
[INFO] [stdout] test config::preset_remote::tests::read_preset_from_dir_reads_yaml ... ok
[INFO] [stdout] test config::preset_remote::tests::stale_cache_fetch_failure_uses_old_cache ... ok
[INFO] [stdout] test config::preset_remote::tests::read_preset_from_dir_reads_yml ... ok
[INFO] [stdout] test config::preset_remote::tests::version_mutability::case_1_sha_immutable ... ok
[INFO] [stdout] test config::preset_remote::tests::version_mutability::case_3_latest_mutable ... ok
[INFO] [stdout] test config::preset_remote::tests::version_mutability::case_2_tag_mutable ... 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_4_nonexistent_path ... ok
[INFO] [stdout] test exec::command_executor::tests::build_duplicate_writable_deduped ... ok
[INFO] [stdout] test exec::command_executor::tests::build_deny_paths::case_5_duplicate_deduped ... ok
[INFO] [stdout] test exec::command_executor::tests::build_deny_paths::case_3_recursive_glob ... ok
[INFO] [stdout] test exec::command_executor::tests::build_multiple_writable ... ok
[INFO] [stdout] test config::preset_remote::tests::stale_cache_latest_checkouts_fetch_head ... ok
[INFO] [stdout] test exec::command_executor::tests::build_deny_paths::case_6_multiple_deny ... ok
[INFO] [stdout] test exec::command_executor::tests::build_single_writable ... ok
[INFO] [stdout] test config::preset_remote::tests::stale_cache_fetch_success ... ok
[INFO] [stdout] test exec::command_executor::tests::build_tilde_deny ... ok
[INFO] [stdout] test exec::command_executor::tests::build_tilde_writable ... 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_is_compound::case_2_shell ... ok
[INFO] [stdout] test exec::command_executor::tests::determine_exec_mode::case_1_single_no_sandbox ... 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::command_input_program::case_2_shell ... ok
[INFO] [stdout] test exec::command_executor::tests::determine_exec_mode::case_2_single_with_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::dry_run::case_4_argv_empty ... ok
[INFO] [stdout] test config::preset_remote::tests::clone_failure_no_cache_returns_error ... ok
[INFO] [stdout] test exec::command_executor::tests::dry_run_error_from_exec_error::case_1_not_found ... ok
[INFO] [stdout] test exec::command_executor::tests::dry_run_error_from_exec_error::case_2_permission_denied ... ok
[INFO] [stdout] test exec::command_executor::tests::exec_argv_with_mock_sandbox_returns_exit_code ... ok
[INFO] [stdout] test exec::command_executor::tests::build_rejects_nonexistent_writable_path ... ok
[INFO] [stdout] test exec::command_executor::tests::dry_run::case_3_shell_compound ... ok
[INFO] [stdout] test exec::command_executor::tests::dry_run::case_5_argv_with_sandbox ... ok
[INFO] [stdout] test exec::command_executor::tests::exec_argv_with_sandbox_calls_sandbox_executor ... ok
[INFO] [stdout] test exec::command_executor::tests::exec_empty_argv_returns_not_found ... 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::exec_argv_with_mock_sandbox_nonzero ... ok
[INFO] [stdout] test exec::command_executor::tests::exec_shell_with_mock_sandbox_passes_sh_c ... ok
[INFO] [stdout] test exec::command_executor::tests::dry_run::case_1_argv_existing ... ok
[INFO] [stdout] test exec::command_executor::tests::dry_run_error_from_exec_error::case_3_io_error ... ok
[INFO] [stdout] test exec::command_executor::tests::exit_code_from_signal ... ok
[INFO] [stdout] test exec::command_executor::tests::exec_shell_with_sandbox_calls_sandbox_executor ... 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_shell_returns_correct_exit_code::case_2_failure ... ok
[INFO] [stdout] test exec::command_executor::tests::exit_code_from_status_cases::case_1_success ... ok
[INFO] [stdout] test exec::command_executor::tests::exec_signal_termination_returns_128_plus_signal ... ok
[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_2_tilde_only ... ok
[INFO] [stdout] test exec::command_executor::tests::expand_tilde_cases::case_3_no_tilde ... ok
[INFO] [stderr] sh: 1: __nonexistent_command_12345__: not found
[INFO] [stdout] test exec::command_executor::tests::expand_tilde_cases::case_4_tilde_in_middle ... ok
[INFO] [stdout] test exec::command_executor::tests::from_merged_all_empty ... ok
[INFO] [stdout] test exec::command_executor::tests::from_merged_basic ... ok
[INFO] [stdout] hello
[INFO] [stdout] test exec::command_executor::tests::exec_not_found_returns_error ... 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::from_merged_glob_and_tilde_deny ... ok
[INFO] [stdout] test exec::command_executor::tests::dry_run::case_2_argv_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::command_executor::tests::merge_empty_returns_error ... 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_3_second_false ... ok
[INFO] [stdout] test exec::command_executor::tests::linux_sandbox_executor_new_succeeds ... ok
[INFO] [stdout] test exec::command_executor::tests::merge_network_allowed::case_4_both_false ... 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_3_one_empty ... 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_1_partial_overlap ... 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_network_allowed::case_1_both_true ... 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_network_allowed::case_2_first_false ... ok
[INFO] [stdout] test exec::command_executor::tests::merge_writable_roots::case_6_three_way_success ... 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_7_three_way_one_empty ... ok
[INFO] [stdout] test exec::command_executor::tests::sandbox_policy_deserialize_from_json ... 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_4_both_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::exit_code_from_status_cases::case_2_failure ... ok
[INFO] [stdout] test exec::command_executor::tests::sandbox_policy_round_trip_serialization ... ok
[INFO] [stdout] test exec::command_executor::tests::validate_command::case_3_empty ... ok
[INFO] [stdout] test exec::error::tests::exec_error_display::case_1 ... ok
[INFO] [stdout] test exec::error::tests::extension_error_display::case_2 ... ok
[INFO] [stdout] test exec::error::tests::extension_error_display::case_1 ... ok
[INFO] [stdout] test exec::error::tests::exec_error_from_io_error ... ok
[INFO] [stdout] test exec::error::tests::extension_error_from_io_error ... ok
[INFO] [stdout] test exec::error::tests::exec_error_io_has_source ... ok
[INFO] [stdout] test exec::error::tests::exec_error_display::case_2 ... ok
[INFO] [stdout] test exec::error::tests::extension_error_into_anyhow ... ok
[INFO] [stdout] test exec::error::tests::extension_error_implements_std_error ... ok
[INFO] [stdout] test exec::error::tests::sandbox_error_display::case_2 ... ok
[INFO] [stdout] test exec::error::tests::sandbox_error_display::case_1 ... ok
[INFO] [stdout] test exec::error::tests::exec_error_into_anyhow ... ok
[INFO] [stdout] test exec::error::tests::sandbox_error_display::case_3 ... ok
[INFO] [stdout] test exec::error::tests::sandbox_error_display::case_4 ... ok
[INFO] [stdout] test exec::error::tests::sandbox_error_display::case_5 ... ok
[INFO] [stdout] test exec::error::tests::sandbox_error_from_io_error ... ok
[INFO] [stdout] test exec::error::tests::sandbox_error_into_anyhow ... ok
[INFO] [stdout] test exec::extension_runner::tests::error_falls_back_to_ask::case_1_timeout ... ok
[INFO] [stdout] test exec::extension_runner::tests::error_falls_back_to_ask::case_2_spawn ... ok
[INFO] [stdout] test exec::command_executor::tests::validate_command::case_2_nonexistent ... ok
[INFO] [stdout] test exec::command_executor::tests::validate_command::case_1_exists ... 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::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_3_missing_status ... 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_4_jsonrpc_error ... ok
[INFO] [stdout] test exec::extension_runner::tests::parse_valid_response::case_1_deny ... 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::parse_valid_response::case_2_allow ... 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_1_plain_text ... ok
[INFO] [stdout] test exec::extension_runner::tests::sanitize_for_terminal_cases::case_6_strips_bell ... ok
[INFO] [stdout] test exec::extension_runner::tests::success_maps_to_correct_action::case_2_deny ... 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::serialize_request_with_empty_fields ... ok
[INFO] [stdout] test exec::extension_runner::tests::unknown_status_falls_back_to_ask ... ok
[INFO] [stdout] test exec::extension_runner::tests::sanitize_for_terminal_cases::case_3_preserves_newline ... ok
[INFO] [stdout] test exec::extension_runner::tests::validate_spawn_error_for_nonexistent_command ... ok
[INFO] [stdout] test exec::extension_runner::tests::success_maps_to_correct_action::case_3_ask ... 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::verbose_mode_logs_error::case_3_invalid_response_verbose ... ok
[INFO] [stdout] test exec::glob_utils::tests::expand_braces_cases::case_01_simple ... 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_07_no_braces ... 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_10_empty_alternative ... ok
[INFO] [stdout] test exec::glob_utils::tests::expand_braces_cases::case_11_leading_empty_alternative ... 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_command ... ok
[INFO] [stdout] test exec::extension_runner::tests::integration_invalid_response_falls_back_to_ask ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::bwrap_args_contain_ro_bind_root ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::bwrap_args_contain_stage2_subcommand_and_flag ... 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_contain_writable_bind ... 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_expand_absolute_glob ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::bwrap_args_expand_relative_glob ... ok
[INFO] [stdout] test exec::linux_sandbox::bwrap::tests::bwrap_args_expand_brace_glob ... 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_glob_no_matches_produces_no_ro_bind ... 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_proc_and_dev ... 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_share_net::case_1_network_blocked ... ok
[INFO] [stdout] test exec::extension_runner::tests::integration_success_does_not_fallback ... 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_tmpfs_when_tmp_not_writable ... ok
[INFO] [stdout] test exec::extension_runner::tests::validate_invalid_json_from_process ... ok
[INFO] [stdout] test exec::extension_runner::tests::validate_with_real_process::case_1_deny ... ok
[INFO] [stdout] test exec::extension_runner::tests::validate_with_real_process::case_2_allow ... 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::is_glob_pattern_cases::case_5_brace ... 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::linux_sandbox::bwrap::tests::is_glob_pattern_cases::case_6_literal ... ok
[INFO] [stdout] test exec::linux_sandbox::seccomp_sandbox::tests::apply_seccomp_skips_filter_when_network_allowed ... 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::landlock_sandbox::tests::build_rules_from_policy::case_2_no_writable ... 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_count::case_1_network_blocked ... ok
[INFO] [stdout] test exec::linux_sandbox::seccomp_sandbox::tests::describe_rules_network_blocked_has_socket_rule ... 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::build_filter_can_convert_to_bpf ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::classify_deny_path_cases::case_01_absolute_path ... 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_03_relative_dotfile ... 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_02_absolute_dir ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::classify_deny_path_cases::case_05_relative_dotenv ... 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_07_glob_absolute ... 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_08_glob_deep ... 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::linux_sandbox::tests::exit_code_from_status_returns_code::case_1_success ... 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::classify_deny_path_cases::case_12_glob_brace ... ok
[INFO] [stdout] test exec::linux_sandbox::tests::exit_code_from_status_returns_code::case_2_failure ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_01_single_star ... 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_05_double_star_with_suffix ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_03_double_star ... 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_04_double_star_nested ... 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_13_multiple_question_marks ... 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_10_no_glob ... 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::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_12_question_mark ... 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_16_char_class_multiple ... 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_17_brace_expansion ... 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::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_18_brace_with_path ... 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_22_brace_with_glob ... 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::tests::build_command_basic ... ok
[INFO] [stdout] test exec::macos_sandbox::tests::generate_sbpl::case_01_minimal ... 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::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_04_network_denied ... ok
[INFO] [stdout] test exec::macos_sandbox::tests::generate_sbpl::case_03_with_read_only_subpaths ... 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_07_relative_deny_no_writable_roots ... 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_10_multiple_roots_with_relative_deny ... ok
[INFO] [stdout] test exec::macos_sandbox::tests::sbpl_escape::case_1_simple ... ok
[INFO] [stdout] test exec::macos_sandbox::tests::sbpl_escape::case_2_with_spaces ... 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::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_3_with_backslash ... ok
[INFO] [stdout] test exec::macos_sandbox::tests::is_supported_returns_bool ... ok
[INFO] [stdout] test exec::macos_sandbox::tests::sbpl_escape::case_4_with_quotes ... ok
[INFO] [stdout] test exec::macos_sandbox::glob_pattern::tests::glob_to_sbpl_regex_cases::case_23_dots_escaped ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_errors::case_1_empty ... 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_errors::case_2_syntax_error ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_bare_variable_assignment_returns_empty ... 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_1_comment_before_command ... 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_1_single ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_commands_whitespace::case_2_with_subshell ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_comments::case_2_comment_before_pipeline ... 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_5_semicolon ... 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_6_mixed_operators ... 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_7_logical_chain ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_structures::case_01_for_simple ... 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_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_compound_commands::case_8_quotes_preserved ... 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_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_11_compound_statement ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_control_structures::case_10_case_statement ... 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_12_function_def ... 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_4_backtick_in_command ... 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_3_cmd_sub_in_command ... 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_env_prefix_commands::case_5_env_prefix_with_cmd_substitution ... 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_nested_control_structures::case_2_if_in_for ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_heredoc ... 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_env_prefix_commands::case_4_env_prefix_with_pipeline ... 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_02_append_to_file ... 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_05_stdout_and_stderr ... 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_redirected_statements::case_04_stderr_to_devnull ... 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_08_herestring ... 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_redirected_statements::case_11_redirect_in_compound ... 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_redirected_statements::case_13_command_substitution_in_redirect ... 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_14_command_substitution_in_herestring ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_subshell::case_3_deeply_nested ... ok
[INFO] [stdout] test rules::command_parser::tests::extract_special_constructs::case_1_process_substitution ... 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_variable_assignments::case_1_assignment_then_command ... 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_6_quoted_cmd_substitution ... 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_2_assignment_with_cmd_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_1_no_flags ... 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_3_short_combined ... 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_6_eq_long ... 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_raw_tokens_preserved ... 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_1_short ... ok
[INFO] [stdout] test rules::command_parser::tests::parse_command_empty_input ... 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_3_at_end ... ok
[INFO] [stdout] test rules::command_parser::tests::shell_quote_join_cases::case_1_simple ... 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_4_separate_bool_and_value ... 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_2_space_in_token ... ok
[INFO] [stdout] test rules::command_parser::tests::shell_quote_join_cases::case_3_empty_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::shell_quote_join_cases::case_5_flags_and_paths ... ok
[INFO] [stdout] test rules::command_parser::tests::shell_quote_join_cases::case_6_single_token ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_concatenated_quotes ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_double_quotes::case_1 ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_double_quotes::case_2 ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_double_quote_known_escapes_preserved ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_double_quote_unknown_escape_preserves_backslash ... ok
[INFO] [stdout] test rules::command_parser::tests::parse_command_default_schema::case_5_eq_short ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_empty_single_quotes ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_equals_flags::case_1 ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_equals_flags::case_2 ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_errors::case_1 ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_errors::case_3 ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_errors::case_4 ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_errors::case_5 ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_double_quotes::case_3 ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_empty_double_quotes ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_extra_whitespace::case_1 ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_extra_whitespace::case_2 ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_mixed_quoting::case_1 ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_mixed_quoting::case_2 ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_errors::case_2 ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_simple_commands::case_1 ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_simple_commands::case_2 ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_errors::case_6_unclosed_double_quote ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_simple_commands::case_3 ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_single_command ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_single_quotes::case_1 ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_single_quotes::case_3 ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_escapes::case_1 ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_trailing_backslash_ignored ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_escapes::case_2 ... ok
[INFO] [stdout] test rules::error::tests::command_parse_error_display::case_2 ... ok
[INFO] [stdout] test rules::error::tests::anyhow_error_chain_preserves_source ... ok
[INFO] [stdout] test rules::error::tests::command_parse_error_implements_std_error ... ok
[INFO] [stdout] test rules::error::tests::command_parse_error_display::case_1 ... ok
[INFO] [stdout] test rules::command_parser::tests::tokenize_single_quotes::case_2 ... ok
[INFO] [stdout] test rules::error::tests::expr_error_display::case_3 ... 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_3 ... ok
[INFO] [stdout] test rules::error::tests::expr_error_display::case_2 ... ok
[INFO] [stdout] test rules::error::tests::expr_error_display::case_1 ... ok
[INFO] [stdout] test rules::error::tests::expr_error_implements_std_error ... 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_4 ... ok
[INFO] [stdout] test rules::error::tests::pattern_parse_error_implements_std_error ... ok
[INFO] [stdout] test rules::error::tests::pattern_parse_error_display::case_5 ... ok
[INFO] [stdout] test rules::error::tests::pattern_parse_error_is_debug ... ok
[INFO] [stdout] test rules::error::tests::rule_error_expr_eval_has_source ... 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_from_pattern_parse_error ... ok
[INFO] [stdout] test rules::error::tests::rule_error_pattern_parse_has_source ... ok
[INFO] [stdout] test rules::error::tests::rule_error_into_anyhow ... ok
[INFO] [stdout] test rules::error::tests::rule_error_recursion_depth_exceeded ... ok
[INFO] [stdout] test rules::error::tests::pattern_parse_error_into_anyhow ... ok
[INFO] [stdout] test rules::error::tests::rule_error_from_expr_error ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::args_index_access::case_1 ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::args_index_access::case_3 ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::args_index_access::case_2 ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::env_variable_access::case_3 ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::env_variable_access::case_1 ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::env_variable_access::case_2 ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::flag_access::case_1 ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::args_starts_with ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::flag_access::case_3 ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::eval_error_on_undeclared_reference ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::combined_conditions ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::flag_access::case_2 ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::parse_error_on_invalid_expression ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::type_error_on_non_bool_result ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_alternation::case_1 ... 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::pattern_lexer::tests::tokenize_backslash_escaped_semicolon ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_brackets::case_1 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_brackets::case_2 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_brackets::case_3 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_complex::case_1 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_complex::case_2 ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::paths_access ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_complex::case_3 ... 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_2 ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::paths_contains_check ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::logical_not ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::logical_or ... ok
[INFO] [stdout] test rules::expr_evaluator::tests::logical_and ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_empty_alternation::case_3 ... 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_negation_alternation::case_1 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_empty_negation_alternation::case_2 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_joined_token_with_equals ... 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_leading_trailing_spaces ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_empty_negation_alternation::case_3 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_flag_alternation_with_force ... 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_multi_word_alternation::case_01_quoted_then_bare ... 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_1 ... 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_literals::case_2 ... 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_03_three_alternatives ... 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_09_three_bare_and_quoted_single_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::case_11_bare_pipe_bare_pipe_quoted ... 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_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_multi_word_alternation_errors::case_2_trailing_pipe_after_quoted ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_multiple_optional_groups ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_multiple_spaces ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_negation::case_2 ... 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_negation::case_1 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_nested_square_brackets ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_negation::case_3 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_placeholder_directly_after_bracket ... 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_placeholders::case_1 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_placeholders::case_2 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_placeholders::case_3 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_quoted::case_1 ... 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_unclosed_square_bracket ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_whitespace_only ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_wildcard::case_1 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_quoted::case_2 ... 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_2_glob_alt_exact_still_works ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::alternation_glob_matching::case_4_glob_alt_list_instances ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_single_literal ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_wildcard::case_2 ... ok
[INFO] [stdout] test rules::pattern_lexer::tests::tokenize_single_word_alternation_unchanged ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::alternation_matching::case_1_first_alt ... 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_matching::case_2_second_alt ... 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_4_subcommand_alt ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::alternation_matching::case_3_no_alt_match ... 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::bracket_command_matching::case_4_bracket_command_mismatch ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::bracket_command_matching::case_5_bracket_wrong_args ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::equals_joined_token ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::combined_optional_and_wildcard ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_cases::case_1_simple_placeholder ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_cases::case_4_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_cases::case_2_literal_before_cmd ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_cases::case_3_wildcard_before_cmd ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_cases::case_6_negation_before_cmd ... 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 ... 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_non_cmd_trailing ... 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_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_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_07_bare_flag_before_arg ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::flag_with_value_matching::case_06_wildcard_value ... 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_09_bare_flag_wrong_value ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::extract_placeholder_cases::case_5_opts_before_cmd ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::flag_with_value_matching::case_05_missing_flag ... 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_10_bare_flag_missing ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::bracket_command_matching::case_2_bracket_exact_args ... 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_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_7_literal_glob_middle_no_match ... 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::literal_glob_matching::case_9_negated_literal_glob_allows ... 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_5_literal_glob_suffix_no_match ... 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_6_no_match ... 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_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_2_single_wildcard ... 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::matches_with_captures_returns_expected::case_8_wildcard_command_captures ... 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::matches_with_captures_returns_expected::case_9_wildcard_command_no_args ... 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::multi_word_alternation_matching::case_01_npx_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_02_bare_variant ... 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_09_python_pytest_bare ... 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_05_three_alternatives_first ... 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_1_negated_glob_blocks_match ... 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::negation_matching::case_1_negation_matches ... 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_3_negated_glob_blocks_exact ... 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::negation_alternation_glob_matching::case_4_negated_glob_blocks_exact_get ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_matching::case_2_negation_rejects ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::no_match::case_3_missing_args ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_matching::case_3_negation_alternation ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::no_match::case_1_different_command ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::normalize_path_cases::case_2_dot ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::normalize_path_cases::case_4_multiple_dots ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::normalize_path_cases::case_3_dotdot ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::normalize_path_cases::case_1_identity ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::normalize_path_cases::case_6_relative ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::normalize_path_cases::case_5_dotdot_at_root ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::normalize_path_cases::case_7_relative_dotdot ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::normalize_path_cases::case_8_leading_dotdot ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::normalize_path_cases::case_9_leading_double_dotdot ... 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_01_with_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::no_match::case_2_extra_args ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::optional_matching::case_11_optional_bare_flags_interleaved ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::negation_matching::case_4_negation_alternation_reject ... 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_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_15_optional_bare_flags_only_x ... 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_16_optional_bare_flags_wrong_value_reversed ... 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_1_opts_consumes_flags ... 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::opts_non_wrapper_matching::case_2_opts_no_flags ... 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::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::optional_matching::case_12_optional_bare_flags_in_order ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::path_ref_definition_normalized ... 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::path_ref_normalized::case_1_dot_segment ... 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_normalized::case_2_dotdot_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_3_multiple_dots ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::path_ref_normalized::case_4_complex_traversal ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::quoted_literal_matching::case_3_quoted_star_only ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::path_ref_undefined_name_never_matches ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::quoted_literal_matching::case_4_quoted_star_only_no_glob ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::quoted_literal_matching::case_1_quoted_star_exact_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::quoted_literal_matching::case_2_quoted_star_no_glob ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::simple_matching::case_4_too_few_args ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::simple_matching::case_5_too_many_args ... 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_6_command_only ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::simple_matching::case_2_exact_multi ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::simple_matching::case_3_command_mismatch ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::test_glob_match::case_03_prefix_glob_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::simple_matching::case_7_command_only_mismatch ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::test_glob_match::case_01_prefix_glob ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::test_glob_match::case_04_prefix_glob_no_match_partial ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::test_glob_match::case_02_prefix_glob_short ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::test_glob_match::case_08_middle_glob_exact ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::test_glob_match::case_05_suffix_glob ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::test_glob_match::case_06_suffix_glob_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::test_glob_match::case_07_middle_glob ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::test_glob_match::case_10_exact_no_glob ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::test_glob_match::case_11_exact_no_glob_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::test_glob_match::case_12_star_only ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::test_glob_match::case_09_middle_glob_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::test_glob_match::case_13_star_only_empty ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::test_glob_match::case_15_multiple_stars_no_match ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::test_glob_match::case_14_multiple_stars ... 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_01_help_flag ... 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::wildcard_command_matching::case_03_any_command_any_args ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::wildcard_command_matching::case_04_wildcard_only ... 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_07_wildcard_command_missing_flag ... 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_08_wildcard_help_multi_word ... 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_11_wildcard_with_args_multi_word ... 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_3_wildcard_many ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::wildcard_matching::case_5_middle_wildcard ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::wildcard_matching::case_6_middle_wildcard_multi ... ok
[INFO] [stdout] test rules::pattern_parser::tests::command_alternation_matches::case_1_matches_first ... ok
[INFO] [stdout] test rules::pattern_parser::tests::command_alternation_matches::case_2_matches_second ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::wildcard_dos_terminates ... 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::command_alternation_matches::case_3_no_match ... 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_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_5_flag_at_end ... 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_6_combined_short_flag_with_value ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_command_alternation::case_3_aliases_no_args ... ok
[INFO] [stdout] test rules::pattern_matcher::tests::path_ref_matches_listed_path ... 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_01_empty_string ... 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_03_unclosed_angle_bracket ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_command_alternation::case_2_three_aliases ... 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_08_angle_bracket_value_alternation ... 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_09_empty_alternation ... 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_12_unclosed_double_quote ... 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_with_value::case_4_trailing_wildcard_not_consumed ... 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_5_boolean_flag ... 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_flag_with_value::case_7_path_ref_value ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_flag_with_value::case_6_placeholder_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_3_named_value ... 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_literal_bracket_command::case_2_bracket_command_boolean_flag ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_literals::case_3_multiple ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_literals::case_6_double_quoted ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_literals::case_4_joined_equals ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_literals::case_5_single_quoted ... 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_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_multi_no_expansion::case_2_simple_literal ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_negation::case_1_literal ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_literals::case_1_command_only ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_negation::case_2_alternation ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_literals::case_2_simple ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_optional::case_1_single_flag ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_optional::case_3_multiple_tokens ... 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_optional::case_2_flag_with_value ... 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_wildcard::case_1_standalone ... 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_4_wildcard_with_wildcard_args ... 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_1_pipeline ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_all_allow::case_3_or_chain ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_all_allow::case_2_and_chain ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_wildcard::case_2_between_literals ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_all_unmatched_with_defaults_ask ... 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_wildcard_command::case_2_wildcard_with_version ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_ask_not_overwritten_by_escalation ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_ask_wins_over_allow ... ok
[INFO] [stdout] test rules::pattern_parser::tests::parse_wildcard_command::case_3_wildcard_only ... 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_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_4_triple_compound ... 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_guard_splits_and_evaluates_individually::case_5_semicolon_separated ... 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_in_wrapper_allows_safe_commands ... 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_deny_rule_still_wins_over_resolved_default ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_command_in_wrapper_denies_dangerous_part ... 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_deny_wins::case_1_pipeline ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_default_resolved_to_allow_stays_allow ... 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_no_defaults_preserves_default_action ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_no_matching_rules_returns_default ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_mixed_operators ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_no_sandbox_presets_returns_none ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_deny_wins_over_ask_and_allow ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_deny_wins::case_3_or_chain ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_deny_wins::case_2_and_chain ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_partial_sandbox_only_some_commands ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_same_sandbox_preset_deduplicates ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_sandbox_network_intersection ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_sandbox_network_restricted_by_any ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_sandbox_writable_roots_intersection ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_sandbox_deny_paths_union ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_single_command_delegates ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_single_command_with_sandbox ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_writable_contradiction_escalates_to_ask ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_semicolon_separator ... ok
[INFO] [stdout] test rules::rule_engine::tests::deny_response_includes_details ... ok
[INFO] [stdout] test rules::rule_engine::tests::deny_wins_over_allow ... ok
[INFO] [stdout] test rules::rule_engine::tests::deny_wins_over_allow_and_ask ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_three_presets_progressive_intersection ... ok
[INFO] [stdout] test rules::rule_engine::tests::compound_writable_contradiction_does_not_downgrade_deny ... ok
[INFO] [stdout] test rules::rule_engine::tests::deny_wins_over_ask ... ok
[INFO] [stdout] test rules::rule_engine::tests::deny_wins_regardless_of_order ... ok
[INFO] [stdout] test rules::rule_engine::tests::empty_rules_returns_default ... ok
[INFO] [stdout] test rules::rule_engine::tests::no_matching_rule_returns_default ... ok
[INFO] [stdout] test rules::rule_engine::tests::multiple_deny_rules_picks_first_deny ... ok
[INFO] [stdout] test rules::rule_engine::tests::no_rules_returns_default ... ok
[INFO] [stdout] test rules::rule_engine::tests::no_wrappers_defined_skips_unwrap ... ok
[INFO] [stdout] test rules::rule_engine::tests::nested_wrappers_sudo_bash_c ... ok
[INFO] [stdout] test rules::rule_engine::tests::rule_with_no_action_is_skipped ... ok
[INFO] [stdout] test rules::rule_engine::tests::single_allow_rule ... ok
[INFO] [stdout] test rules::rule_engine::tests::deny_with_path_ref ... 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::single_deny_rule ... ok
[INFO] [stdout] test rules::rule_engine::tests::when_clause_not_satisfied_skips_rule ... ok
[INFO] [stdout] test rules::rule_engine::tests::no_sandbox_when_rule_has_no_sandbox ... 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_1_help_matches ... ok
[INFO] [stdout] test rules::rule_engine::tests::wildcard_command_matching::case_2_version_matches ... 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_satisfied_matches ... ok
[INFO] [stdout] test rules::rule_engine::tests::wildcard_deny_matches_all_subcommands ... ok
[INFO] [stdout] test rules::rule_engine::tests::wrapper_allows_safe_inner_command ... 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::wildcard_command_deny_wins_over_wildcard_allow ... ok
[INFO] [stdout] test rules::rule_engine::tests::wrapper_compound_unmatched_resolved_via_defaults_action ... ok
[INFO] [stdout] test rules::rule_engine::tests::wrapper_evaluates_inner_deny::case_1_sudo ... ok
[INFO] [stdout] test rules::rule_engine::tests::wrapper_evaluates_inner_deny::case_2_bash_c ... ok
[INFO] [stdout] test rules::rule_engine::tests::wrapper_no_match_returns_default ... ok
[INFO] [stdout] test rules::rule_engine::tests::wrapper_with_unsupported_token_returns_error::case_2_path_ref ... ok
[INFO] [stdout] test rules::rule_engine::tests::wrapper_without_placeholder_does_not_recurse ... ok
[INFO] [stdout] test rules::rule_engine::tests::recursion_depth_exceeded ... ok
[INFO] [stdout] test rules::rule_engine::tests::wrapper_preserves_quoting_in_inner_command ... ok
[INFO] [stdout] test rules::rule_engine::tests::wrapper_with_unsupported_token_returns_error::case_1_optional ... ok
[INFO] [stdout] test exec::extension_runner::tests::validate_timeout ... ok
[INFO] [stdout] test exec::extension_runner::tests::integration_timeout_falls_back_to_ask ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1102 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.11s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/runok-4816a5c2fb35d665)
[INFO] [stdout] 
[INFO] [stdout] running 37 tests
[INFO] [stdout] test cli::route::tests::route_check_command_flag_takes_precedence_over_stdin ... 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_non_object_json_treated_as_plaintext::case_2_json_number ... ok
[INFO] [stdout] test cli::route::tests::route_check_only_empty_lines_returns_error ... 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_multi_line ... ok
[INFO] [stdout] test cli::route::tests::route_check_explicit_format_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_plaintext_single_line ... ok
[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_unknown_json_format_returns_error ... ok
[INFO] [stdout] test cli::route::tests::route_check_unknown_format_returns_error ... ok
[INFO] [stdout] test cli::route::tests::route_check_with_command_arg::case_1_simple_command ... 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_3_arg_with_spaces ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_03_exec_with_dry_run ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_01_exec_simple ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_04_exec_with_verbose ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_02_exec_with_sandbox ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_05_exec_with_dry_run_and_verbose ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_07_check_with_input_format ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_06_check_with_command ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_09_check_with_both ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_08_check_with_output_format_json ... ok
[INFO] [stdout] test cli::tests::cli_parsing::case_10_check_with_verbose ... ok
[INFO] [stdout] test tests::run_command_check_with_plaintext_stdin_returns_zero ... ok
[INFO] [stdout] test tests::run_command_check_with_multiline_plaintext_stdin_returns_zero ... ok
[INFO] [stdout] test tests::run_command_check_with_stdin_json_returns_zero ... ok
[INFO] [stdout] test tests::run_sandbox_exec_rejects_invalid_json ... ok
[INFO] [stdout] test tests::run_command_check_with_command_returns_zero ... ok
[INFO] [stdout] test tests::run_command_exec_with_dry_run ... ok
[INFO] [stdout] test tests::run_command_check_with_empty_stdin_returns_two ... ok
[INFO] [stdout] test tests::create_executor_returns_executor ... 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_plaintext_skips_empty_lines ... ok
[INFO] [stdout] test cli::route::tests::route_check_plaintext_trims_whitespace ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 37 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/e2e/main.rs (/opt/rustwide/target/debug/deps/e2e-115c8314ed889fdf)
[INFO] [stdout] 
[INFO] [stdout] running 44 tests
[INFO] [stdout] test check_claude_code_hook::hook_non_bash_tool_no_output::case_1_read ... ok
[INFO] [stdout] test check_claude_code_hook::hook_invalid_json_exits_2 ... ok
[INFO] [stdout] test check_claude_code_hook::hook_bash_no_match_returns_ask ... ok
[INFO] [stdout] test check_claude_code_hook::hook_bash_allow ... ok
[INFO] [stdout] test check_claude_code_hook::hook_bash_deny ... 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_non_bash_tool_no_output::case_2_write ... ok
[INFO] [stdout] test check_claude_code_hook::hook_output_contains_event_name ... ok
[INFO] [stdout] test check_format_auto_detect::auto_detect_generic_format ... ok
[INFO] [stdout] test check_format_auto_detect::auto_detect_unknown_json_exits_2 ... ok
[INFO] [stdout] test check_generic::check_command_arg_json::case_1_deny_rm ... ok
[INFO] [stdout] test check_format_auto_detect::auto_detect_claude_code_hook_format ... ok
[INFO] [stdout] test check_claude_code_hook::hook_sandbox_allow_rewrites_command ... ok
[INFO] [stdout] test check_generic::check_allow_with_sandbox_info ... ok
[INFO] [stdout] test check_generic::check_command_arg_text::case_2_allow_git_status ... ok
[INFO] [stdout] test check_generic::check_command_arg_json::case_2_allow_git_status ... ok
[INFO] [stdout] test check_generic::check_command_arg_text::case_1_deny_rm ... ok
[INFO] [stdout] test check_generic::check_stdin_json_allow ... ok
[INFO] [stdout] test check_generic::check_deny_includes_reason ... ok
[INFO] [stdout] test check_generic::check_stdin_comment_before_command ... ok
[INFO] [stdout] test check_generic::check_plaintext_stdin_single_line ... ok
[INFO] [stdout] test check_generic::check_command_arg_text::case_3_comment_only ... ok
[INFO] [stdout] test check_generic::check_no_input_exits_2 ... ok
[INFO] [stdout] test check_generic::check_stdin_json_deny ... ok
[INFO] [stdout] test error_handling::invalid_config_exits_with_error::case_1_check ... ok
[INFO] [stdout] test error_handling::invalid_config_exits_with_error::case_2_exec ... ok
[INFO] [stdout] test cli::version_flag_prints_version ... ok
[INFO] [stdout] test error_handling::format_with_non_json_stdin_exits_2 ... ok
[INFO] [stdout] test error_handling::exit_codes::case_2_check_deny ... ok
[INFO] [stdout] test error_handling::no_config_check_returns_default ... ok
[INFO] [stdout] test error_handling::validation_error_deny_with_sandbox::case_1_check ... ok
[INFO] [stdout] test error_handling::validation_error_deny_with_sandbox::case_2_exec ... ok
[INFO] [stdout] test exec::exec_deny_prints_reason ... ok
[INFO] [stdout] test error_handling::unknown_format_flag_exits_2 ... ok
[INFO] [stdout] test exec::exec_exit_code::case_1_deny_post ... ok
[INFO] [stdout] test exec::exec_exit_code::case_4_allow_curl_get_dry_run ... ok
[INFO] [stdout] test exec::exec_exit_code::case_3_allow_curl_without_method_dry_run ... ok
[INFO] [stdout] test error_handling::exit_codes::case_1_exec_deny ... ok
[INFO] [stdout] test exec::exec_ask_treated_as_deny ... ok
[INFO] [stdout] test exec::exec_no_match_uses_default_deny ... ok
[INFO] [stdout] test exec::exec_sandbox_allow_with_dry_run ... ok
[INFO] [stdout] test exec::exec_exit_code::case_2_allow_git_status_dry_run ... ok
[INFO] [stdout] test error_handling::exec_nonexistent_command ... ok
[INFO] [stderr]      Running tests/integration/main.rs (/opt/rustwide/target/debug/deps/integration-2d38862d8d28b9b4)
[INFO] [stdout] test exec::exec_allow_runs_command ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 44 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.10s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 262 tests
[INFO] [stdout] test compound_command_evaluation::action_aggregation_priority::case_1_ask_over_allow ... ok
[INFO] [stdout] test compound_command_evaluation::any_deny_makes_overall_deny::case_1_one_deny_among_allows ... 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_extraction::case_1_command_substitution_deny ... ok
[INFO] [stdout] test compound_command_evaluation::any_deny_makes_overall_deny::case_3_deny_at_end ... ok
[INFO] [stdout] test compound_command_evaluation::command_substitution_extraction::case_3_backtick_substitution_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::command_substitution_extraction::case_2_command_substitution_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_2_if_else_deny_in_else ... ok
[INFO] [stdout] test compound_command_evaluation::compound_command_uses_shell_input::case_2_shell_is_compound ... ok
[INFO] [stdout] test compound_command_evaluation::defaults_action_absent_compound_backward_compat::case_1_no_defaults_unmatched_merged_with_allow ... ok
[INFO] [stdout] test compound_command_evaluation::control_structure_subcommand_extraction::case_3_if_all_allowed ... ok
[INFO] [stdout] test compound_command_evaluation::defaults_action_absent_compound_backward_compat::case_3_no_defaults_all_matched ... ok
[INFO] [stdout] test compound_command_evaluation::control_structure_subcommand_extraction::case_1_if_then_with_deny ... 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::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::each_command_in_compound_is_evaluated_individually::case_4_deny_in_pipe ... ok
[INFO] [stdout] test compound_command_evaluation::each_command_in_compound_is_evaluated_individually::case_5_deny_in_or_chain ... 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::empty_rules_compound_returns_default ... 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::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_3_all_sub_commands_allowed ... 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::evaluate_command_splits_compound_before_matching::case_6_pipe_separated ... 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::evaluate_command_splits_compound_before_matching::case_2_cd_and_rm_deny_wins ... 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_8_semicolon_separated_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_1_semicolon_pipe_and ... ok
[INFO] [stdout] test compound_command_evaluation::mixed_operators_compound::case_2_mixed_with_deny ... ok
[INFO] [stdout] test compound_command_evaluation::for_loop_subcommand_extraction::case_2_for_loop_with_deny ... ok
[INFO] [stdout] test compound_command_evaluation::redirected_statements_match_rules::case_1_stdout_redirect ... ok
[INFO] [stdout] test compound_command_evaluation::for_loop_subcommand_extraction::case_3_for_loop_mixed ... ok
[INFO] [stdout] test compound_command_evaluation::partial_sandbox_compound ... ok
[INFO] [stdout] test compound_command_evaluation::function_definition_subcommand_extraction::case_1_function_def_with_deny ... 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_2_stderr_redirect ... ok
[INFO] [stdout] test compound_command_evaluation::redirected_statements_match_rules::case_4_compound_with_redirect ... ok
[INFO] [stdout] test compound_command_evaluation::redirected_statements_match_rules::case_3_devnull_redirect ... ok
[INFO] [stdout] test compound_command_evaluation::control_structure_subcommand_extraction::case_5_case_statement_with_deny ... 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_1_writable_roots_intersection ... ok
[INFO] [stdout] test compound_command_evaluation::sandbox_strictest_wins_aggregation::case_2_deny_paths_union ... ok
[INFO] [stdout] test compound_command_evaluation::shell_construct_subcommand_extraction::case_1_subshell_with_deny ... ok
[INFO] [stdout] test compound_command_evaluation::redirected_statements_match_rules::case_6_redirect_in_pipeline ... ok
[INFO] [stdout] test compound_command_evaluation::sandbox_contradiction_preserves_existing_ask ... ok
[INFO] [stdout] test compound_command_evaluation::sandbox_strictest_wins_aggregation::case_3_network_denied_by_any ... ok
[INFO] [stdout] test compound_command_evaluation::action_aggregation_priority::case_2_deny_over_ask_and_allow ... ok
[INFO] [stdout] test compound_command_evaluation::defaults_action_absent_compound_backward_compat::case_2_no_defaults_all_unmatched ... ok
[INFO] [stdout] test compound_command_evaluation::shell_construct_subcommand_extraction::case_2_subshell_all_allowed ... ok
[INFO] [stdout] test compound_command_evaluation::writable_contradiction_does_not_downgrade_deny ... 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::unmatched_sub_command_uses_defaults_action::case_3_allow_plus_unmatched_defaults_allow ... ok
[INFO] [stdout] test config_to_rule_evaluation::alternation_glob_wildcard_config::case_1_glob_alt_list_buckets ... ok
[INFO] [stdout] test config_to_rule_evaluation::alternation_glob_wildcard_config::case_2_glob_alt_get_object ... ok
[INFO] [stdout] test compound_command_evaluation::writable_contradiction_escalates_to_ask ... ok
[INFO] [stdout] test config_to_rule_evaluation::allow_rule_with_sandbox_propagates_preset ... ok
[INFO] [stdout] test config_to_rule_evaluation::alternation_glob_wildcard_config::case_3_glob_alt_describe_instances ... 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::unmatched_sub_command_uses_defaults_action::case_4_deny_rule_still_wins_over_resolved_default ... 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 compound_command_evaluation::unmatched_sub_command_uses_defaults_action::case_2_allow_plus_unmatched_defaults_deny ... ok
[INFO] [stdout] test config_to_rule_evaluation::ask_response_preserves_message ... ok
[INFO] [stdout] test config_to_rule_evaluation::config_validation_collects_multiple_errors ... ok
[INFO] [stdout] test config_to_rule_evaluation::config_validation_rejects_undefined_sandbox ... 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::duplicate_rules_deny_wins ... ok
[INFO] [stdout] test config_to_rule_evaluation::empty_rules_returns_default ... ok
[INFO] [stdout] test config_to_rule_evaluation::ask_without_message_has_none ... 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::config_validation_rejects_invalid::case_2_deny_with_sandbox ... 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::equals_sign_in_flag_token::case_2_different_value_no_match ... ok
[INFO] [stdout] test config_to_rule_evaluation::explicit_deny_wins::case_1_deny_over_allow ... 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_3_ask_over_allow ... ok
[INFO] [stdout] test config_to_rule_evaluation::full_config_evaluates_correctly::case_3_asked_command ... ok
[INFO] [stdout] test config_to_rule_evaluation::full_config_evaluates_correctly::case_4_unmatched_command ... ok
[INFO] [stdout] test config_to_rule_evaluation::full_config_evaluates_correctly::case_2_denied_command ... ok
[INFO] [stdout] test config_to_rule_evaluation::full_config_evaluates_correctly::case_1_allowed_command ... 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::literal_glob_wildcard_config::case_2_literal_glob_deny_matches_variant ... 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::literal_glob_wildcard_config::case_1_literal_glob_deny_matches ... 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::multi_word_alternation_config::case_1_npx_prettier_allowed ... 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::multi_word_alternation_allow_and_deny::case_2_bare_denied ... 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::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_2_negated_glob_denies_list_pods ... 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::negation_alternation_glob_wildcard_config::case_3_negated_glob_denies_describe ... 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::negation_alternation_glob_wildcard_config::case_4_negated_glob_denies_get ... 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::preset_merge_paths_are_appended_per_key ... ok
[INFO] [stdout] test config_to_rule_evaluation::preset_merge_wrappers_appended ... ok
[INFO] [stdout] test config_to_rule_evaluation::preset_merge_appends_rules_and_overrides_defaults ... 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::literal_glob_wildcard_config::case_3_literal_glob_deny_no_match ... ok
[INFO] [stdout] test config_to_rule_evaluation::quoted_literal_suppresses_glob::case_1_exact_literal_star_matches ... ok
[INFO] [stdout] test config_to_rule_evaluation::quoted_literal_suppresses_glob::case_2_glob_like_prefix_does_not_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::quoted_literal_suppresses_glob::case_3_unrelated_does_not_match ... ok
[INFO] [stdout] test config_to_rule_evaluation::rule_order_independence::case_3_ask_before_deny ... ok
[INFO] [stdout] test config_to_rule_evaluation::rule_order_independence::case_2_allow_before_deny ... 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_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::unicode_in_commands::case_1_unicode_arg_allowed ... ok
[INFO] [stdout] test config_to_rule_evaluation::unicode_in_commands::case_2_unicode_in_path ... 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_4_allow_star_help_unmatched_without_flag ... ok
[INFO] [stdout] test config_to_rule_evaluation::yaml_config_evaluates_commands::case_1_allow_matches ... 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::wildcard_deny_beats_specific_allow::case_1_deny_git_star_overrides_allow_git_status ... ok
[INFO] [stdout] test config_to_rule_evaluation::yaml_config_evaluates_commands::case_2_deny_matches ... 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::deny_response_preserves_message_and_fix_suggestion ... ok
[INFO] [stdout] test config_to_rule_evaluation::yaml_config_evaluates_commands::case_4_no_match_returns_default ... ok
[INFO] [stdout] test config_to_rule_evaluation::yaml_config_evaluates_commands::case_3_ask_matches ... 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::alternation_matches_any_variant::case_2_put ... ok
[INFO] [stdout] test optional_notation_and_path_ref::alternation_matches_any_variant::case_1_post ... 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::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_2_flag_after_url ... 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::multiple_path_groups::case_3_safe_allowed ... 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_4_long_flag_after_url ... 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::negation_matches_everything_except::case_2_delete_denied ... 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_3_get_not_matched ... 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_1_without_force ... 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_with_negation::case_2_force_push_master_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::optional_boolean_flag::case_1_without_f ... 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_path_ref::case_3_safe_no_flag ... 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_path_ref::case_2_sensitive_with_flag ... 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::optional_flag_with_value::case_2_with_short_flag ... 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_wildcard_value::case_2_with_c ... 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_wildcard_value::case_1_without_c ... 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::optional_flag_with_negation::case_3_force_push_develop_default ... 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::path_normalization_resolves_traversal::case_4_clean_path_still_matches ... ok
[INFO] [stdout] test config_to_rule_evaluation::no_sandbox_rule_returns_none_preset ... 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_negation::case_1_force_push_main_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_normalization_resolves_traversal::case_5_unrelated_path_not_matched ... 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_1_cat_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_with_alternation_command::case_3_head_sensitive_denied ... 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_with_alternation_command::case_4_cat_safe_default ... 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_ref_matches_defined_paths::case_5_safe_file ... 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_matches_defined_paths::case_6_readme ... ok
[INFO] [stdout] test when_clause_rules::env_variable_controls_rule_application::case_1_env_matches_deny ... ok
[INFO] [stdout] test when_clause_rules::argument_condition_controls_rule::case_2_dev_url_default ... 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::env_variable_missing_returns_error ... 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_controls_rule_application::case_2_env_does_not_match_default ... ok
[INFO] [stdout] test when_clause_rules::all_when_false_returns_default ... 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_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::flag_condition_with_flag_with_value_pattern::case_3_long_flag_post_denied ... ok
[INFO] [stdout] test when_clause_rules::hyphenated_flag_name_in_cel::case_2_without_no_verify ... 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::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_with_path_ref::case_1_sensitive_in_prod_denied ... ok
[INFO] [stdout] test when_clause_rules::when_clause_compound_all_skipped_falls_back ... ok
[INFO] [stdout] test when_clause_rules::when_clause_with_logical_or ... 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::flag_condition_with_flag_with_value_pattern::case_1_short_flag_post_denied ... ok
[INFO] [stdout] test when_clause_rules::when_satisfied_deny_wins_over_allow ... 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_skipped_deny_falls_back_to_allow ... 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_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::bash_c_wrapper_evaluates_inner::case_2_bash_c_curl_get_allowed ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::compound_commands_inside_wrapper::case_1_compound_with_deny ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::compound_commands_inside_wrapper::case_2_compound_all_safe ... 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::deeply_nested_wrappers_hit_recursion_limit ... 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::env_wrapper_evaluates_inner::case_4_env_var_unmatched_default ... 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::merge_results_all_branches::case_1_direct_allow_wrapper_ask ... 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_3_direct_ask_wrapper_deny ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::merge_results_all_branches::case_5_direct_default_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::nested_wrappers_evaluate_recursively::case_1_sudo_bash_c_rm ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::nested_wrappers_evaluate_recursively::case_3_sudo_bash_c_safe ... 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_2_opts_flag_rm_denied ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::opts_wrapper_consumes_flags::case_3_opts_no_flags ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::opts_wrapper_consumes_flags::case_4_opts_multiple_flags ... 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_6_opts_mixed_flags_and_args ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::opts_wrapper_consumes_flags::case_7_opts_digit_flag_self_contained ... 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_with_defaults_action_deny ... 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::sudo_wrapper_evaluates_inner::case_2_sudo_safe_allowed ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::sudo_wrapper_evaluates_inner::case_1_sudo_rm_denied ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::vars_wrapper_consumes_assignments::case_1_vars_single ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::vars_wrapper_consumes_assignments::case_2_vars_multiple ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::vars_wrapper_consumes_assignments::case_3_vars_none ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::sudo_wrapper_evaluates_inner::case_3_sudo_unmatched_default ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::vars_wrapper_consumes_assignments::case_4_vars_with_opts ... 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::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::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_1_xargs_flags_echo_allowed ... ok
[INFO] [stdout] test optional_notation_and_path_ref::optional_flag_with_negation::case_4_normal_push_main_default ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::without_wrappers_sudo_is_not_unwrapped ... ok
[INFO] [stdout] test optional_notation_and_path_ref::path_normalization_resolves_traversal::case_3_multiple_dotdot_resolves ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_compound_with_sandbox ... 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::wrapper_direct_rule_overrides_inner_sandbox ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_depth_one_over_limit_fails ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_inner_compound_all_sub_wrappers_allowed ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_without_cmd_placeholder_no_recurse ... 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_preserves_inner_sandbox_preset ... 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::multiple_rules_with_different_when_conditions ... ok
[INFO] [stdout] test wrapper_recursive_evaluation::wrapper_preserves_quoted_arguments ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 262 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.26s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/sandbox_verification.rs (/opt/rustwide/target/debug/deps/sandbox_verification-138bfc74bb41c603)
[INFO] [stdout] 
[INFO] [stdout] running 8 tests
[INFO] [stdout] test sandbox_preserves_nonzero_exit_code ... ok
[INFO] [stdout] test sandbox_denies_write_outside_writable_roots ... ok
[INFO] [stdout] test sandbox_denies_write_to_read_only_subpath ... ok
[INFO] [stdout] test sandbox_denies_network_when_not_allowed ... ok
[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_allows_read_when_writes_denied ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- sandbox_allows_write_outside_read_only_subpath stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'sandbox_allows_write_outside_read_only_subpath' (1656) panicked at tests/sandbox_verification.rs:185: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:     0x63e20c7c14f2 - std::backtrace_rs::backtrace::libunwind::trace::hff358a60abf734fc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x63e20c7c14f2 - std::backtrace_rs::backtrace::trace_unsynchronized::h3b121f916dd95ec6
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x63e20c7c14f2 - std::sys::backtrace::_print_fmt::hde0a62ded68798e9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x63e20c7c14f2 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h93773fc827e3113d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x63e20c7d158a - core::fmt::rt::Argument::fmt::h01eff69902dad97f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x63e20c7d158a - core::fmt::write::hed7b5c73d82ecb7c
[INFO] [stdout]    6:     0x63e20c78f486 - std::io::default_write_fmt::h2f696ff5b8bbaa4b
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x63e20c78f486 - std::io::Write::write_fmt::h5e66814db8a9cfce
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x63e20c7a0769 - std::sys::backtrace::BacktraceLock::print::h8b1d6fcc5a56d1a3
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x63e20c7a0769 - std::panicking::default_hook::{{closure}}::h2be84df4f189ae36
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x63e20c7a0601 - std::panicking::default_hook::hf0ea8939246f43a9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x63e20c75214e - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h02d35e3888986252
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x63e20c75214e - test::test_main_with_exit_callback::{{closure}}::h939640a27d647173
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x63e20c7a09e2 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hc9df09ff391af3e7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x63e20c7a09e2 - std::panicking::panic_with_hook::hb4bd9ac1123582a0
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x63e20c7a0828 - std::panicking::panic_handler::{{closure}}::hde00dd15f5637fe2
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x63e20c79bbe9 - std::sys::backtrace::__rust_end_short_backtrace::hb72197fa777c1785
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x63e20c78396d - __rustc[4425a7e20b4c8619]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x63e20c7d895c - core::panicking::panic_fmt::ha59b517dd231f4da
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x63e20c7d8873 - core::panicking::assert_failed_inner::h3c3301979dc81b81
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:434:23
[INFO] [stdout]   20:     0x63e20c77a159 - core::panicking::assert_failed::h1c97dc9d8b48b6ea
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x63e20c727c24 - sandbox_verification::sandbox_allows_write_outside_read_only_subpath::sandbox_allows_write_outside_read_only_subpath::h04e2521de9546bfe
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification.rs:185:5
[INFO] [stdout]   22:     0x63e20c727146 - sandbox_verification::sandbox_allows_write_outside_read_only_subpath::h74b6dae4681bb477
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification.rs:159:1
[INFO] [stdout]   23:     0x63e20c727167 - sandbox_verification::sandbox_allows_write_outside_read_only_subpath::{{closure}}::h412e8771444348f9
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification.rs:159:10
[INFO] [stdout]   24:     0x63e20c7281a6 - core::ops::function::FnOnce::call_once::h0d40bb49bda3447f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x63e20c751f0b - core::ops::function::FnOnce::call_once::hddb3cd395c36bfbb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   26:     0x63e20c751f0b - test::__rust_begin_short_backtrace::h0b6a7601d9750bfa
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:663:18
[INFO] [stdout]   27:     0x63e20c76591a - test::run_test_in_process::{{closure}}::h444209903f00b347
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:74
[INFO] [stdout]   28:     0x63e20c76591a - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hfb3ba8f46e537649
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   29:     0x63e20c76591a - std::panicking::catch_unwind::do_call::h1672a45911fcf9dc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   30:     0x63e20c76591a - std::panicking::catch_unwind::h0fadaee22787a6dd
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   31:     0x63e20c76591a - std::panic::catch_unwind::hc47ad190f2c8e188
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   32:     0x63e20c76591a - test::run_test_in_process::hcd7faaf934f29999
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:27
[INFO] [stdout]   33:     0x63e20c76591a - test::run_test::{{closure}}::hddc4550da4871867
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:607:43
[INFO] [stdout]   34:     0x63e20c73fd74 - test::run_test::{{closure}}::h98ae26689f13ed94
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:637:41
[INFO] [stdout]   35:     0x63e20c73fd74 - std::sys::backtrace::__rust_begin_short_backtrace::h3ec4d1f21ad44588
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   36:     0x63e20c743712 - std::thread::lifecycle::spawn_unchecked::{{closure}}::{{closure}}::hd8bf2c73d479939f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   37:     0x63e20c743712 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h3b4248f358af2491
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   38:     0x63e20c743712 - std::panicking::catch_unwind::do_call::hda10a64f4b8daebe
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   39:     0x63e20c743712 - std::panicking::catch_unwind::h659e5ee8336ec8c7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   40:     0x63e20c743712 - std::panic::catch_unwind::h9d4d66a538912c18
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   41:     0x63e20c743712 - std::thread::lifecycle::spawn_unchecked::{{closure}}::h7557906bb51d79f1
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   42:     0x63e20c743712 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h9e460d1d7fc83d35
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   43:     0x63e20c796cef - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h61282da819d64ea9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   44:     0x63e20c796cef - std::sys::thread::unix::Thread::new::thread_start::h982f9ea829d1b5fb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/thread/unix.rs:127:17
[INFO] [stdout]   45:     0x7faa27888aa4 - <unknown>
[INFO] [stdout]   46:     0x7faa27915a64 - clone
[INFO] [stdout]   47:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- sandbox_runs_command_successfully stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'sandbox_runs_command_successfully' (1666) panicked at tests/sandbox_verification.rs:276: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:     0x63e20c7c14f2 - std::backtrace_rs::backtrace::libunwind::trace::hff358a60abf734fc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x63e20c7c14f2 - std::backtrace_rs::backtrace::trace_unsynchronized::h3b121f916dd95ec6
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x63e20c7c14f2 - std::sys::backtrace::_print_fmt::hde0a62ded68798e9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x63e20c7c14f2 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h93773fc827e3113d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x63e20c7d158a - core::fmt::rt::Argument::fmt::h01eff69902dad97f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x63e20c7d158a - core::fmt::write::hed7b5c73d82ecb7c
[INFO] [stdout]    6:     0x63e20c78f486 - std::io::default_write_fmt::h2f696ff5b8bbaa4b
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x63e20c78f486 - std::io::Write::write_fmt::h5e66814db8a9cfce
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x63e20c7a0769 - std::sys::backtrace::BacktraceLock::print::h8b1d6fcc5a56d1a3
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x63e20c7a0769 - std::panicking::default_hook::{{closure}}::h2be84df4f189ae36
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x63e20c7a0601 - std::panicking::default_hook::hf0ea8939246f43a9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x63e20c75214e - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h02d35e3888986252
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x63e20c75214e - test::test_main_with_exit_callback::{{closure}}::h939640a27d647173
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x63e20c7a09e2 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hc9df09ff391af3e7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x63e20c7a09e2 - std::panicking::panic_with_hook::hb4bd9ac1123582a0
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x63e20c7a0828 - std::panicking::panic_handler::{{closure}}::hde00dd15f5637fe2
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x63e20c79bbe9 - std::sys::backtrace::__rust_end_short_backtrace::hb72197fa777c1785
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x63e20c78396d - __rustc[4425a7e20b4c8619]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x63e20c7d895c - core::panicking::panic_fmt::ha59b517dd231f4da
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x63e20c7d8873 - core::panicking::assert_failed_inner::h3c3301979dc81b81
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:434:23
[INFO] [stdout]   20:     0x63e20c77a159 - core::panicking::assert_failed::h1c97dc9d8b48b6ea
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x63e20c724b5a - sandbox_verification::sandbox_runs_command_successfully::sandbox_runs_command_successfully::hb3a7d5788b61fb13
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification.rs:276:5
[INFO] [stdout]   22:     0x63e20c724696 - sandbox_verification::sandbox_runs_command_successfully::h29afcfd6849b1128
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification.rs:260:1
[INFO] [stdout]   23:     0x63e20c7246b7 - sandbox_verification::sandbox_runs_command_successfully::{{closure}}::hff5f40df820bf512
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification.rs:260:10
[INFO] [stdout]   24:     0x63e20c728226 - core::ops::function::FnOnce::call_once::h430b055aaad2a80d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x63e20c751f0b - core::ops::function::FnOnce::call_once::hddb3cd395c36bfbb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   26:     0x63e20c751f0b - test::__rust_begin_short_backtrace::h0b6a7601d9750bfa
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:663:18
[INFO] [stdout]   27:     0x63e20c76591a - test::run_test_in_process::{{closure}}::h444209903f00b347
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:74
[INFO] [stdout]   28:     0x63e20c76591a - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hfb3ba8f46e537649
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   29:     0x63e20c76591a - std::panicking::catch_unwind::do_call::h1672a45911fcf9dc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   30:     0x63e20c76591a - std::panicking::catch_unwind::h0fadaee22787a6dd
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   31:     0x63e20c76591a - std::panic::catch_unwind::hc47ad190f2c8e188
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   32:     0x63e20c76591a - test::run_test_in_process::hcd7faaf934f29999
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:27
[INFO] [stdout]   33:     0x63e20c76591a - test::run_test::{{closure}}::hddc4550da4871867
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:607:43
[INFO] [stdout]   34:     0x63e20c73fd74 - test::run_test::{{closure}}::h98ae26689f13ed94
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:637:41
[INFO] [stdout]   35:     0x63e20c73fd74 - std::sys::backtrace::__rust_begin_short_backtrace::h3ec4d1f21ad44588
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   36:     0x63e20c743712 - std::thread::lifecycle::spawn_unchecked::{{closure}}::{{closure}}::hd8bf2c73d479939f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   37:     0x63e20c743712 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h3b4248f358af2491
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   38:     0x63e20c743712 - std::panicking::catch_unwind::do_call::hda10a64f4b8daebe
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   39:     0x63e20c743712 - std::panicking::catch_unwind::h659e5ee8336ec8c7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   40:     0x63e20c743712 - std::panic::catch_unwind::h9d4d66a538912c18
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   41:     0x63e20c743712 - std::thread::lifecycle::spawn_unchecked::{{closure}}::h7557906bb51d79f1
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   42:     0x63e20c743712 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h9e460d1d7fc83d35
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   43:     0x63e20c796cef - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h61282da819d64ea9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   44:     0x63e20c796cef - std::sys::thread::unix::Thread::new::thread_start::h982f9ea829d1b5fb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/thread/unix.rs:127:17
[INFO] [stdout]   45:     0x7faa27888aa4 - <unknown>
[INFO] [stdout]   46:     0x7faa27915a64 - 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' (1657) panicked at tests/sandbox_verification.rs:118: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:     0x63e20c7c14f2 - std::backtrace_rs::backtrace::libunwind::trace::hff358a60abf734fc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x63e20c7c14f2 - std::backtrace_rs::backtrace::trace_unsynchronized::h3b121f916dd95ec6
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x63e20c7c14f2 - std::sys::backtrace::_print_fmt::hde0a62ded68798e9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x63e20c7c14f2 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h93773fc827e3113d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x63e20c7d158a - core::fmt::rt::Argument::fmt::h01eff69902dad97f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x63e20c7d158a - core::fmt::write::hed7b5c73d82ecb7c
[INFO] [stdout]    6:     0x63e20c78f486 - std::io::default_write_fmt::h2f696ff5b8bbaa4b
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x63e20c78f486 - std::io::Write::write_fmt::h5e66814db8a9cfce
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x63e20c7a0769 - std::sys::backtrace::BacktraceLock::print::h8b1d6fcc5a56d1a3
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x63e20c7a0769 - std::panicking::default_hook::{{closure}}::h2be84df4f189ae36
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x63e20c7a0601 - std::panicking::default_hook::hf0ea8939246f43a9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x63e20c75214e - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h02d35e3888986252
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x63e20c75214e - test::test_main_with_exit_callback::{{closure}}::h939640a27d647173
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x63e20c7a09e2 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hc9df09ff391af3e7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x63e20c7a09e2 - std::panicking::panic_with_hook::hb4bd9ac1123582a0
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x63e20c7a0828 - std::panicking::panic_handler::{{closure}}::hde00dd15f5637fe2
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x63e20c79bbe9 - std::sys::backtrace::__rust_end_short_backtrace::hb72197fa777c1785
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x63e20c78396d - __rustc[4425a7e20b4c8619]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x63e20c7d895c - core::panicking::panic_fmt::ha59b517dd231f4da
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x63e20c7d8873 - core::panicking::assert_failed_inner::h3c3301979dc81b81
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:434:23
[INFO] [stdout]   20:     0x63e20c77a159 - core::panicking::assert_failed::h1c97dc9d8b48b6ea
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x63e20c7254a2 - sandbox_verification::sandbox_allows_write_to_writable_root::sandbox_allows_write_to_writable_root::hb0254e5651abeec2
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification.rs:118:5
[INFO] [stdout]   22:     0x63e20c724d86 - sandbox_verification::sandbox_allows_write_to_writable_root::h2f4f1e476d83377a
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification.rs:99:1
[INFO] [stdout]   23:     0x63e20c724da7 - sandbox_verification::sandbox_allows_write_to_writable_root::{{closure}}::hc89d5fbd11c8b5dc
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification.rs:99:10
[INFO] [stdout]   24:     0x63e20c7282a6 - core::ops::function::FnOnce::call_once::hb9c720eaa24c9f07
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x63e20c751f0b - core::ops::function::FnOnce::call_once::hddb3cd395c36bfbb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   26:     0x63e20c751f0b - test::__rust_begin_short_backtrace::h0b6a7601d9750bfa
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:663:18
[INFO] [stdout]   27:     0x63e20c76591a - test::run_test_in_process::{{closure}}::h444209903f00b347
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:74
[INFO] [stdout]   28:     0x63e20c76591a - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hfb3ba8f46e537649
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   29:     0x63e20c76591a - std::panicking::catch_unwind::do_call::h1672a45911fcf9dc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   30:     0x63e20c76591a - std::panicking::catch_unwind::h0fadaee22787a6dd
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   31:     0x63e20c76591a - std::panic::catch_unwind::hc47ad190f2c8e188
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   32:     0x63e20c76591a - test::run_test_in_process::hcd7faaf934f29999
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:27
[INFO] [stdout]   33:     0x63e20c76591a - test::run_test::{{closure}}::hddc4550da4871867
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:607:43
[INFO] [stdout]   34:     0x63e20c73fd74 - test::run_test::{{closure}}::h98ae26689f13ed94
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:637:41
[INFO] [stdout]   35:     0x63e20c73fd74 - std::sys::backtrace::__rust_begin_short_backtrace::h3ec4d1f21ad44588
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   36:     0x63e20c743712 - std::thread::lifecycle::spawn_unchecked::{{closure}}::{{closure}}::hd8bf2c73d479939f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   37:     0x63e20c743712 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h3b4248f358af2491
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   38:     0x63e20c743712 - std::panicking::catch_unwind::do_call::hda10a64f4b8daebe
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   39:     0x63e20c743712 - std::panicking::catch_unwind::h659e5ee8336ec8c7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   40:     0x63e20c743712 - std::panic::catch_unwind::h9d4d66a538912c18
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   41:     0x63e20c743712 - std::thread::lifecycle::spawn_unchecked::{{closure}}::h7557906bb51d79f1
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   42:     0x63e20c743712 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h9e460d1d7fc83d35
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   43:     0x63e20c796cef - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h61282da819d64ea9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   44:     0x63e20c796cef - std::sys::thread::unix::Thread::new::thread_start::h982f9ea829d1b5fb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/thread/unix.rs:127:17
[INFO] [stdout]   45:     0x7faa27888aa4 - <unknown>
[INFO] [stdout]   46:     0x7faa27915a64 - clone
[INFO] [stdout]   47:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- sandbox_allows_read_when_writes_denied stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'sandbox_allows_read_when_writes_denied' (1655) panicked at tests/sandbox_verification.rs:252: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:     0x63e20c7c14f2 - std::backtrace_rs::backtrace::libunwind::trace::hff358a60abf734fc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x63e20c7c14f2 - std::backtrace_rs::backtrace::trace_unsynchronized::h3b121f916dd95ec6
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x63e20c7c14f2 - std::sys::backtrace::_print_fmt::hde0a62ded68798e9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x63e20c7c14f2 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h93773fc827e3113d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x63e20c7d158a - core::fmt::rt::Argument::fmt::h01eff69902dad97f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x63e20c7d158a - core::fmt::write::hed7b5c73d82ecb7c
[INFO] [stdout]    6:     0x63e20c78f486 - std::io::default_write_fmt::h2f696ff5b8bbaa4b
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x63e20c78f486 - std::io::Write::write_fmt::h5e66814db8a9cfce
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x63e20c7a0769 - std::sys::backtrace::BacktraceLock::print::h8b1d6fcc5a56d1a3
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x63e20c7a0769 - std::panicking::default_hook::{{closure}}::h2be84df4f189ae36
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x63e20c7a0601 - std::panicking::default_hook::hf0ea8939246f43a9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x63e20c75214e - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h02d35e3888986252
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x63e20c75214e - test::test_main_with_exit_callback::{{closure}}::h939640a27d647173
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x63e20c7a09e2 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hc9df09ff391af3e7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x63e20c7a09e2 - std::panicking::panic_with_hook::hb4bd9ac1123582a0
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x63e20c7a0828 - std::panicking::panic_handler::{{closure}}::hde00dd15f5637fe2
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x63e20c79bbe9 - std::sys::backtrace::__rust_end_short_backtrace::hb72197fa777c1785
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x63e20c78396d - __rustc[4425a7e20b4c8619]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x63e20c7d895c - core::panicking::panic_fmt::ha59b517dd231f4da
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x63e20c7d8873 - core::panicking::assert_failed_inner::h3c3301979dc81b81
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:434:23
[INFO] [stdout]   20:     0x63e20c77a159 - core::panicking::assert_failed::h1c97dc9d8b48b6ea
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x63e20c725746 - sandbox_verification::sandbox_allows_read_when_writes_denied::sandbox_allows_read_when_writes_denied::he7160482951a3b56
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification.rs:252:5
[INFO] [stdout]   22:     0x63e20c725596 - sandbox_verification::sandbox_allows_read_when_writes_denied::h80becd97f9a7886c
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification.rs:234:1
[INFO] [stdout]   23:     0x63e20c7255b7 - sandbox_verification::sandbox_allows_read_when_writes_denied::{{closure}}::h7686324465be7b95
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/sandbox_verification.rs:234:10
[INFO] [stdout]   24:     0x63e20c728326 - core::ops::function::FnOnce::call_once::hef04e0d47499c874
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x63e20c751f0b - core::ops::function::FnOnce::call_once::hddb3cd395c36bfbb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   26:     0x63e20c751f0b - test::__rust_begin_short_backtrace::h0b6a7601d9750bfa
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:663:18
[INFO] [stdout]   27:     0x63e20c76591a - test::run_test_in_process::{{closure}}::h444209903f00b347
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:74
[INFO] [stdout]   28:     0x63e20c76591a - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hfb3ba8f46e537649
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   29:     0x63e20c76591a - std::panicking::catch_unwind::do_call::h1672a45911fcf9dc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   30:     0x63e20c76591a - std::panicking::catch_unwind::h0fadaee22787a6dd
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   31:     0x63e20c76591a - std::panic::catch_unwind::hc47ad190f2c8e188
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   32:     0x63e20c76591a - test::run_test_in_process::hcd7faaf934f29999
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:27
[INFO] [stdout]   33:     0x63e20c76591a - test::run_test::{{closure}}::hddc4550da4871867
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:607:43
[INFO] [stdout]   34:     0x63e20c73fd74 - test::run_test::{{closure}}::h98ae26689f13ed94
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:637:41
[INFO] [stdout]   35:     0x63e20c73fd74 - std::sys::backtrace::__rust_begin_short_backtrace::h3ec4d1f21ad44588
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   36:     0x63e20c743712 - std::thread::lifecycle::spawn_unchecked::{{closure}}::{{closure}}::hd8bf2c73d479939f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   37:     0x63e20c743712 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h3b4248f358af2491
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   38:     0x63e20c743712 - std::panicking::catch_unwind::do_call::hda10a64f4b8daebe
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   39:     0x63e20c743712 - std::panicking::catch_unwind::h659e5ee8336ec8c7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   40:     0x63e20c743712 - std::panic::catch_unwind::h9d4d66a538912c18
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   41:     0x63e20c743712 - std::thread::lifecycle::spawn_unchecked::{{closure}}::h7557906bb51d79f1
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   42:     0x63e20c743712 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h9e460d1d7fc83d35
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   43:     0x63e20c796cef - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h61282da819d64ea9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   44:     0x63e20c796cef - std::sys::thread::unix::Thread::new::thread_start::h982f9ea829d1b5fb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/thread/unix.rs:127:17
[INFO] [stdout]   45:     0x7faa27888aa4 - <unknown>
[INFO] [stdout]   46:     0x7faa27915a64 - 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_runs_command_successfully
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 4 passed; 4 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.23s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--test sandbox_verification`
[INFO] running `Command { std: "docker" "inspect" "eead7679987f667925b1ba26376c77f860fa5b58494ccd30f90965004089ff10", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "eead7679987f667925b1ba26376c77f860fa5b58494ccd30f90965004089ff10", kill_on_drop: false }`
[INFO] [stdout] eead7679987f667925b1ba26376c77f860fa5b58494ccd30f90965004089ff10
