[INFO] fetching crate clawft-tools 0.6.12...
[INFO] testing clawft-tools-0.6.12 against master#f9988fefd3add01f414f52b414308e7872622fee for pr-155114
[INFO] extracting crate clawft-tools 0.6.12 into /workspace/builds/worker-4-tc1/source
[INFO] started tweaking crates.io crate clawft-tools 0.6.12
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate clawft-tools 0.6.12
[INFO] tweaked toml for crates.io crate clawft-tools 0.6.12 written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate clawft-tools 0.6.12 on toolchain f9988fefd3add01f414f52b414308e7872622fee
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f9988fefd3add01f414f52b414308e7872622fee" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate clawft-tools 0.6.12 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" "+f9988fefd3add01f414f52b414308e7872622fee" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded clawft-services v0.6.12
[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" "+f9988fefd3add01f414f52b414308e7872622fee" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] df675fca0eeaa38dc7d4788d8eebcac08fc161d5e0f9a2e6d77da8c33a5e8af1
[INFO] running `Command { std: "docker" "start" "-a" "df675fca0eeaa38dc7d4788d8eebcac08fc161d5e0f9a2e6d77da8c33a5e8af1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "df675fca0eeaa38dc7d4788d8eebcac08fc161d5e0f9a2e6d77da8c33a5e8af1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "df675fca0eeaa38dc7d4788d8eebcac08fc161d5e0f9a2e6d77da8c33a5e8af1", kill_on_drop: false }`
[INFO] [stdout] df675fca0eeaa38dc7d4788d8eebcac08fc161d5e0f9a2e6d77da8c33a5e8af1
[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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+f9988fefd3add01f414f52b414308e7872622fee" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 02b10f434fccf7951aeeb51b8f4bbe8688afcaf441a8b8e5efd32e55c5954d91
[INFO] running `Command { std: "docker" "start" "-a" "02b10f434fccf7951aeeb51b8f4bbe8688afcaf441a8b8e5efd32e55c5954d91", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling libc v0.2.182
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling shlex v1.3.0
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling itoa v1.0.17
[INFO] [stderr]    Compiling pin-project-lite v0.2.16
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling vcpkg v0.2.15
[INFO] [stderr]    Compiling pkg-config v0.3.32
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling litemap v0.8.1
[INFO] [stderr]    Compiling cc v1.2.56
[INFO] [stderr]    Compiling writeable v0.6.2
[INFO] [stderr]    Compiling icu_normalizer_data v2.1.1
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling icu_properties_data v2.1.2
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]    Compiling tower-service v0.3.3
[INFO] [stderr]    Compiling try-lock v0.2.5
[INFO] [stderr]    Compiling rustls-pki-types v1.14.0
[INFO] [stderr]    Compiling untrusted v0.9.0
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling foreign-types-shared v0.1.1
[INFO] [stderr]    Compiling want v0.3.1
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling syn v2.0.116
[INFO] [stderr]    Compiling foreign-types v0.3.2
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]    Compiling rustls v0.23.36
[INFO] [stderr]    Compiling pin-utils v0.1.0
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling atomic-waker v1.1.2
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling ipnet v2.11.0
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling openssl-probe v0.2.1
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling utf8_iter v1.0.4
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling tower-layer v0.3.3
[INFO] [stderr]    Compiling getrandom v0.4.1
[INFO] [stderr]    Compiling webpki-roots v1.0.6
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling iri-string v0.7.10
[INFO] [stderr]    Compiling option-ext v0.2.0
[INFO] [stderr]    Compiling mime v0.3.17
[INFO] [stderr]    Compiling instant v0.1.13
[INFO] [stderr]    Compiling bitflags v1.3.2
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling notify-types v1.0.1
[INFO] [stderr]    Compiling semver v1.0.27
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling socket2 v0.6.2
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling inotify-sys v0.1.5
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling inotify v0.10.2
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling filetime v0.2.27
[INFO] [stderr]    Compiling unsafe-libyaml v0.2.11
[INFO] [stderr]    Compiling fnv v1.0.7
[INFO] [stderr]    Compiling notify v7.0.0
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling uuid v1.21.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling rustls-webpki v0.103.10
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling chrono v0.4.43
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling eml-core v0.1.0
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling clawft-types v0.6.12
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling clawft-plugin v0.6.12
[INFO] [stderr]    Compiling clawft-llm v0.6.12
[INFO] [stderr]    Compiling clawft-platform v0.6.12
[INFO] [stderr]    Compiling clawft-core v0.6.12
[INFO] [stderr]    Compiling clawft-tools v0.6.12 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 14s
[INFO] running `Command { std: "docker" "inspect" "02b10f434fccf7951aeeb51b8f4bbe8688afcaf441a8b8e5efd32e55c5954d91", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "02b10f434fccf7951aeeb51b8f4bbe8688afcaf441a8b8e5efd32e55c5954d91", kill_on_drop: false }`
[INFO] [stdout] 02b10f434fccf7951aeeb51b8f4bbe8688afcaf441a8b8e5efd32e55c5954d91
[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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+f9988fefd3add01f414f52b414308e7872622fee" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] f0bb96cedd880accca4fc95c0ee0002f0f504c7a0ec57c90cc046565181f2910
[INFO] running `Command { std: "docker" "start" "-a" "f0bb96cedd880accca4fc95c0ee0002f0f504c7a0ec57c90cc046565181f2910", kill_on_drop: false }`
[INFO] [stderr]    Compiling clawft-tools v0.6.12 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 5.12s
[INFO] running `Command { std: "docker" "inspect" "f0bb96cedd880accca4fc95c0ee0002f0f504c7a0ec57c90cc046565181f2910", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f0bb96cedd880accca4fc95c0ee0002f0f504c7a0ec57c90cc046565181f2910", kill_on_drop: false }`
[INFO] [stdout] f0bb96cedd880accca4fc95c0ee0002f0f504c7a0ec57c90cc046565181f2910
[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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+f9988fefd3add01f414f52b414308e7872622fee" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 4fe4d0c9822024bbef12066150776b489c6e9c5e50a6ca58beca8bc77999d5ea
[INFO] running `Command { std: "docker" "start" "-a" "4fe4d0c9822024bbef12066150776b489c6e9c5e50a6ca58beca8bc77999d5ea", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.27s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/clawft_tools-c7e70d6ce85e615c)
[INFO] [stdout] 
[INFO] [stdout] running 152 tests
[INFO] [stdout] test file_tools::tests::test_symlink_to_directory_outside_workspace_rejected ... ok
[INFO] [stdout] test file_tools::tests::test_symlink_outside_workspace_rejected ... ok
[INFO] [stdout] test file_tools::tests::test_edit_file_not_found ... ok
[INFO] [stdout] test file_tools::tests::test_edit_file_ambiguous_match ... ok
[INFO] [stdout] test file_tools::tests::test_validate_path_rejects_absolute_outside ... ok
[INFO] [stdout] test file_tools::tests::test_edit_file_success ... ok
[INFO] [stdout] test file_tools::tests::test_symlink_within_workspace_allowed ... ok
[INFO] [stdout] test file_tools::tests::test_read_file_not_found ... ok
[INFO] [stdout] test file_tools::tests::test_read_file_traversal_rejected ... ok
[INFO] [stdout] test file_tools::tests::test_read_file_success ... ok
[INFO] [stdout] test file_tools::tests::test_read_file_missing_path_param ... ok
[INFO] [stdout] test file_tools::tests::test_edit_file_old_text_not_found ... ok
[INFO] [stdout] test memory_tool::tests::test_search_paragraphs_basic ... ok
[INFO] [stdout] test file_tools::tests::test_list_directory_empty ... ok
[INFO] [stdout] test file_tools::tests::test_list_directory_success ... ok
[INFO] [stdout] test memory_tool::tests::test_search_paragraphs_no_match ... ok
[INFO] [stdout] test memory_tool::tests::test_search_paragraphs_case_insensitive ... ok
[INFO] [stdout] test memory_tool::tests::test_search_paragraphs_empty_content ... ok
[INFO] [stdout] test message_tool::tests::missing_chat_id_returns_error ... ok
[INFO] [stdout] test message_tool::tests::missing_channel_returns_error ... ok
[INFO] [stdout] test message_tool::tests::description_not_empty ... ok
[INFO] [stdout] test message_tool::tests::missing_content_returns_error ... ok
[INFO] [stdout] test message_tool::tests::successful_dispatch ... ok
[INFO] [stdout] test message_tool::tests::parameters_has_required_fields ... ok
[INFO] [stdout] test security_policy::tests::allowlist_permits_cat ... ok
[INFO] [stdout] test message_tool::tests::tool_is_object_safe ... ok
[INFO] [stdout] test security_policy::tests::allowlist_permits_ls ... ok
[INFO] [stdout] test security_policy::tests::allowlist_permits_echo ... ok
[INFO] [stdout] test file_tools::tests::test_list_directory_not_found ... ok
[INFO] [stdout] test security_policy::tests::allowlist_rejects_bash ... ok
[INFO] [stdout] test security_policy::tests::allowlist_permits_path_to_listed_binary ... ok
[INFO] [stdout] test security_policy::tests::allowlist_permits_pwd ... ok
[INFO] [stdout] test security_policy::tests::allowlist_rejects_nc ... ok
[INFO] [stdout] test security_policy::tests::allowlist_rejects_nmap ... ok
[INFO] [stdout] test security_policy::tests::allowlist_rejects_path_to_unlisted_binary ... ok
[INFO] [stdout] test security_policy::tests::case_insensitive_mixed_case_blocked ... ok
[INFO] [stdout] test security_policy::tests::case_insensitive_sudo_blocked ... ok
[INFO] [stdout] test security_policy::tests::allowlist_rejects_curl ... ok
[INFO] [stdout] test security_policy::tests::dangerous_patterns_checked_in_denylist_mode ... ok
[INFO] [stdout] test security_policy::tests::denylist_blocks_rm_rf_root ... ok
[INFO] [stdout] test security_policy::tests::denylist_blocks_sudo ... ok
[INFO] [stdout] test security_policy::tests::denylist_permits_curl_when_not_denied ... ok
[INFO] [stdout] test security_policy::tests::extract_first_token_empty ... ok
[INFO] [stdout] test security_policy::tests::extract_first_token_leading_whitespace ... ok
[INFO] [stdout] test security_policy::tests::extract_first_token_simple ... ok
[INFO] [stdout] test security_policy::tests::extract_first_token_whitespace_only ... ok
[INFO] [stdout] test security_policy::tests::extract_first_token_with_path ... ok
[INFO] [stdout] test security_policy::tests::policy_error_from_command_policy_error ... ok
[INFO] [stdout] test security_policy::tests::safe_defaults_creates_correct_mode ... ok
[INFO] [stdout] test security_policy::tests::dangerous_patterns_checked_in_allowlist_mode ... ok
[INFO] [stdout] test security_policy::tests::safe_defaults_denylist_matches_dangerous ... ok
[INFO] [stdout] test security_policy::tests::safe_defaults_has_dangerous_patterns ... ok
[INFO] [stdout] test security_policy::tests::safe_defaults_has_expected_allowlist ... ok
[INFO] [stdout] test security_policy::tests::tab_in_sudo_command_still_matched ... ok
[INFO] [stdout] test shell_tool::tests::test_dangerous_dd ... ok
[INFO] [stdout] test shell_tool::tests::test_dangerous_fork_bomb ... ok
[INFO] [stdout] test message_tool::tests::name_is_message ... ok
[INFO] [stdout] test shell_tool::tests::test_dangerous_mkfs ... ok
[INFO] [stdout] test shell_tool::tests::test_captures_stderr ... ok
[INFO] [stdout] test shell_tool::tests::test_dangerous_rm_rf ... ok
[INFO] [stdout] test security_policy::tests::allowlist_rejects_wget ... ok
[INFO] [stdout] test shell_tool::tests::test_dangerous_sudo ... ok
[INFO] [stdout] test shell_tool::tests::test_missing_command_param ... ok
[INFO] [stdout] test shell_tool::tests::test_echo_command ... ok
[INFO] [stdout] test shell_tool::tests::test_default_timeout_used ... ok
[INFO] [stdout] test shell_tool::tests::test_safe_command_allowed ... ok
[INFO] [stdout] test file_tools::tests::test_validate_path_accepts_valid ... ok
[INFO] [stdout] test shell_tool::tests::test_policy_rejects_unlisted_command ... ok
[INFO] [stdout] test spawn_tool::tests::active_spawns_starts_at_zero ... ok
[INFO] [stdout] test shell_tool::tests::test_nonzero_exit_code ... ok
[INFO] [stdout] test shell_tool::tests::test_working_directory ... ok
[INFO] [stdout] test memory_tool::tests::test_memory_write_overwrite_mode ... ok
[INFO] [stdout] test file_tools::tests::test_write_file_creates_parent_dirs ... ok
[INFO] [stdout] test file_tools::tests::test_write_file_missing_content ... ok
[INFO] [stdout] test memory_tool::tests::test_resolve_memory_path_returns_primary ... ok
[INFO] [stdout] test file_tools::tests::test_validate_path_rejects_traversal ... ok
[INFO] [stdout] test memory_tool::tests::test_memory_write_tool_missing_content ... ok
[INFO] [stdout] test url_safety::tests::allow_private_permits_private_ips ... ok
[INFO] [stdout] test url_safety::tests::allowed_domain_bypasses_checks ... ok
[INFO] [stdout] test url_safety::tests::blocked_domain ... ok
[INFO] [stdout] test url_safety::tests::default_policy_is_enabled ... ok
[INFO] [stdout] test url_safety::tests::invalid_url ... ok
[INFO] [stdout] test url_safety::tests::ipv4_mapped_ipv6 ... ok
[INFO] [stdout] test url_safety::tests::ipv6_link_local ... ok
[INFO] [stdout] test url_safety::tests::ipv6_loopback ... ok
[INFO] [stdout] test memory_tool::tests::test_memory_write_and_read_roundtrip ... ok
[INFO] [stdout] test url_safety::tests::ipv6_unique_local ... ok
[INFO] [stdout] test url_safety::tests::is_blocked_ip_v4_mapped_v6_public ... ok
[INFO] [stdout] test url_safety::tests::is_blocked_ip_v4_private ... ok
[INFO] [stdout] test url_safety::tests::is_blocked_ip_v4_public ... ok
[INFO] [stdout] test url_safety::tests::is_blocked_ip_v6_public ... ok
[INFO] [stdout] test url_safety::tests::is_blocked_ip_v6_reserved ... ok
[INFO] [stdout] test url_safety::tests::link_local_169_254_1_1 ... ok
[INFO] [stdout] test url_safety::tests::loopback_127_0_0_1 ... ok
[INFO] [stdout] test url_safety::tests::loopback_127_0_0_2 ... ok
[INFO] [stdout] test url_safety::tests::metadata_aws ... ok
[INFO] [stdout] test memory_tool::tests::test_memory_read_no_file ... ok
[INFO] [stdout] test url_safety::tests::permissive_policy_is_disabled ... ok
[INFO] [stdout] test url_safety::tests::metadata_gcp ... ok
[INFO] [stdout] test url_safety::tests::private_ip_10_network ... ok
[INFO] [stdout] test url_safety::tests::policy_disabled_allows_everything ... ok
[INFO] [stdout] test url_safety::tests::private_ip_192_168_network ... ok
[INFO] [stdout] test url_safety::tests::public_url_example_com ... ok
[INFO] [stdout] test url_safety::tests::public_url_openai_api ... ok
[INFO] [stdout] test url_safety::tests::public_url_with_path_and_query ... ok
[INFO] [stdout] test url_safety::tests::zero_network_blocked ... ok
[INFO] [stdout] test spawn_tool::tests::description_not_empty ... ok
[INFO] [stdout] test spawn_tool::tests::concurrency_limit_enforced ... ok
[INFO] [stdout] test spawn_tool::tests::parameters_has_command ... ok
[INFO] [stdout] test memory_tool::tests::test_memory_write_append_mode ... ok
[INFO] [stdout] test url_safety::tests::is_blocked_ip_v4_mapped_v6 ... ok
[INFO] [stdout] test file_tools::tests::test_write_file_traversal_rejected ... ok
[INFO] [stdout] test file_tools::tests::test_write_file_success ... ok
[INFO] [stdout] test url_safety::tests::private_ip_172_16_network ... ok
[INFO] [stdout] test spawn_tool::tests::missing_command_returns_error ... ok
[INFO] [stdout] test spawn_tool::tests::spawn_echo_succeeds ... ok
[INFO] [stdout] test spawn_tool::tests::name_is_spawn ... ok
[INFO] [stdout] test spawn_tool::tests::spawn_with_no_args ... ok
[INFO] [stdout] test shell_tool::tests::test_timeout ... ok
[INFO] [stdout] test web_search::tests::config_configured_with_api_key ... ok
[INFO] [stdout] test web_search::tests::config_configured_with_endpoint ... ok
[INFO] [stdout] test web_search::tests::config_not_configured_when_empty ... ok
[INFO] [stdout] test web_search::tests::config_not_configured_with_empty_strings ... ok
[INFO] [stdout] test web_fetch::tests::default_max_response_bytes_is_10mb ... ok
[INFO] [stdout] test web_fetch::tests::response_within_limit_not_truncated ... ok
[INFO] [stdout] test web_fetch::tests::missing_url_returns_error ... ok
[INFO] [stdout] test web_fetch::tests::description_not_empty ... ok
[INFO] [stdout] test web_fetch::tests::name_is_web_fetch ... ok
[INFO] [stdout] test web_fetch::tests::parameters_has_url ... ok
[INFO] [stdout] test web_fetch::tests::oversized_response_is_truncated ... ok
[INFO] [stdout] test web_fetch::tests::invalid_url_scheme_returns_error ... ok
[INFO] [stdout] test spawn_tool::tests::tool_is_object_safe ... ok
[INFO] [stdout] test web_fetch::tests::tool_is_object_safe ... ok
[INFO] [stdout] test web_search::tests::build_request_brave_api_key ... ok
[INFO] [stdout] test web_search::tests::urlencoding_plain ... ok
[INFO] [stdout] test web_search::tests::urlencoding_spaces ... ok
[INFO] [stdout] test web_search::tests::urlencoding_special_chars ... ok
[INFO] [stdout] test web_search::tests::build_request_custom_endpoint ... ok
[INFO] [stdout] test web_fetch::tests::with_max_bytes_sets_custom_limit ... ok
[INFO] [stdout] test web_search::tests::execute_missing_query_returns_error ... ok
[INFO] [stdout] test web_search::tests::execute_with_api_key_not_configured_message ... ok
[INFO] [stdout] test web_search::tests::build_request_encodes_special_chars ... ok
[INFO] [stdout] test web_search::tests::from_endpoint_with_some ... ok
[INFO] [stdout] test web_search::tests::description_is_not_empty ... ok
[INFO] [stdout] test web_search::tests::tool_is_object_safe ... ok
[INFO] [stdout] test web_search::tests::name_is_web_search ... ok
[INFO] [stdout] test web_search::tests::execute_without_endpoint_returns_not_configured ... ok
[INFO] [stdout] test web_search::tests::execute_with_empty_endpoint_returns_not_configured ... ok
[INFO] [stdout] test web_search::tests::execute_uses_config_max_results_default ... ok
[INFO] [stdout] test web_search::tests::parameters_has_query ... ok
[INFO] [stdout] test shell_tool::tests::test_timeout_clamped_to_max ... ok
[INFO] [stdout] test web_search::tests::from_endpoint_with_none ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 152 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.09s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/security_integration.rs (/opt/rustwide/target/debug/deps/security_integration-bcbd2d0c11f843da)
[INFO] [stdout] 
[INFO] [stdout] running 33 tests
[INFO] [stdout] test is_blocked_ip_ipv6_loopback ... ok
[INFO] [stdout] test is_blocked_ip_public_v4_safe ... ok
[INFO] [stdout] test shell_dangerous_pattern_blocked_in_allowlist_mode ... ok
[INFO] [stdout] test shell_piped_command_dangerous_pattern ... ok
[INFO] [stdout] test shell_dangerous_pattern_blocked_in_denylist_mode ... ok
[INFO] [stdout] test shell_allowlist_rejects_unlisted_command ... ok
[INFO] [stdout] test shell_custom_allowlist ... ok
[INFO] [stdout] test shell_env_var_injection_attempt ... ok
[INFO] [stdout] test shell_allowlist_permits_listed_command ... ok
[INFO] [stdout] test shell_denylist_rejects_denylisted_command ... ok
[INFO] [stdout] test shell_empty_allowlist_blocks_everything ... ok
[INFO] [stdout] test url_192_168_blocked ... ok
[INFO] [stdout] test url_allowed_domain_overrides ... ok
[INFO] [stdout] test url_10_network_blocked ... ok
[INFO] [stdout] test url_cloud_metadata_blocked ... ok
[INFO] [stdout] test url_custom_blocked_domain ... ok
[INFO] [stdout] test url_disabled_policy_allows_all ... ok
[INFO] [stdout] test shell_rm_rf_build_not_blocked_by_root_pattern ... ok
[INFO] [stdout] test url_ipv6_loopback_blocked ... ok
[INFO] [stdout] test url_loopback_with_port_blocked ... ok
[INFO] [stdout] test url_public_allowed ... ok
[INFO] [stdout] test url_loopback_127_blocked ... ok
[INFO] [stdout] test cross_tool_mode_switch_changes_behavior ... ok
[INFO] [stdout] test cross_tool_safe_defaults_behavior ... ok
[INFO] [stdout] test shell_denylist_permits_normal_command ... ok
[INFO] [stdout] test spawn_dangerous_sudo_rejected ... ok
[INFO] [stdout] test spawn_allowed_command_succeeds ... ok
[INFO] [stdout] test cross_tool_dangerous_always_blocked ... ok
[INFO] [stdout] test spawn_dangerous_mkfs_rejected ... ok
[INFO] [stdout] test cross_tool_same_policy_same_rejection ... ok
[INFO] [stdout] test spawn_path_traversal_rejected ... ok
[INFO] [stdout] test spawn_policy_error_is_informative ... ok
[INFO] [stdout] test spawn_unlisted_command_rejected ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 33 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.38s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests clawft_tools
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test src/url_safety.rs - url_safety::validate_url (line 115) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 1.23s; merged doctests compilation took 1.22s
[INFO] running `Command { std: "docker" "inspect" "4fe4d0c9822024bbef12066150776b489c6e9c5e50a6ca58beca8bc77999d5ea", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4fe4d0c9822024bbef12066150776b489c6e9c5e50a6ca58beca8bc77999d5ea", kill_on_drop: false }`
[INFO] [stdout] 4fe4d0c9822024bbef12066150776b489c6e9c5e50a6ca58beca8bc77999d5ea
