[INFO] fetching crate serica-search 0.2.0...
[INFO] testing serica-search-0.2.0 against 1.100.0-beta.1 for beta-1.100-2
[INFO] extracting crate serica-search 0.2.0 into /workspace/builds/worker-3-tc2/source
[INFO] removed /workspace/builds/worker-3-tc2/source/rust-toolchain.toml
[INFO] started tweaking crates.io crate serica-search 0.2.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate serica-search 0.2.0
[INFO] tweaked toml for crates.io crate serica-search 0.2.0 written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate serica-search 0.2.0 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate serica-search 0.2.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:120:12
[INFO] [stderr]     |
[INFO] [stderr] 120 | homepage = "https://github.com/walkthestars/serica"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 125 | repository = "https://github.com/walkthestars/serica"
[INFO] [stderr]     |              ----------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `serica-search` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 7ff7e1e8b456d9b1236ca7b7aab7d7e68fa448ec461b9076ffc8a704bc31f8d0
[INFO] running `Command { std: "docker" "start" "7ff7e1e8b456d9b1236ca7b7aab7d7e68fa448ec461b9076ffc8a704bc31f8d0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7ff7e1e8b456d9b1236ca7b7aab7d7e68fa448ec461b9076ffc8a704bc31f8d0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "7ff7e1e8b456d9b1236ca7b7aab7d7e68fa448ec461b9076ffc8a704bc31f8d0" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7ff7e1e8b456d9b1236ca7b7aab7d7e68fa448ec461b9076ffc8a704bc31f8d0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "7ff7e1e8b456d9b1236ca7b7aab7d7e68fa448ec461b9076ffc8a704bc31f8d0" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:120:12
[INFO] [stderr]     |
[INFO] [stderr] 120 | homepage = "https://github.com/walkthestars/serica"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 125 | repository = "https://github.com/walkthestars/serica"
[INFO] [stderr]     |              ----------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `serica-search` (manifest) generated 1 warning
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling fastrand v2.5.0
[INFO] [stderr]    Compiling phf_shared v0.13.1
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]    Compiling futures-core v0.3.33
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling socket2 v0.6.5
[INFO] [stderr]    Compiling mio v1.2.2
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]    Compiling cc v1.3.0
[INFO] [stderr]    Compiling dtoa v1.0.11
[INFO] [stderr]    Compiling futures-sink v0.3.33
[INFO] [stderr]    Compiling mac v0.1.1
[INFO] [stderr]    Compiling futures-task v0.3.33
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling dtoa-short v0.3.5
[INFO] [stderr]    Compiling futf v0.1.5
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling phf_generator v0.13.1
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling tendril v0.4.3
[INFO] [stderr]    Compiling aws-lc-rs v1.17.3
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling rustls-pki-types v1.15.1
[INFO] [stderr]    Compiling phf_codegen v0.13.1
[INFO] [stderr]    Compiling string_cache_codegen v0.6.1
[INFO] [stderr]    Compiling futures-util v0.3.33
[INFO] [stderr]    Compiling servo_arc v0.4.3
[INFO] [stderr]    Compiling alloc-no-stdlib v2.0.4
[INFO] [stderr]    Compiling selectors v0.33.0
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling string_cache v0.9.0
[INFO] [stderr]    Compiling alloc-stdlib v0.2.4
[INFO] [stderr]    Compiling phf_shared v0.10.0
[INFO] [stderr]    Compiling futures-channel v0.3.33
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling rand v0.8.7
[INFO] [stderr]    Compiling simd-adler32 v0.3.10
[INFO] [stderr]    Compiling crossbeam-utils v0.8.22
[INFO] [stderr]    Compiling thiserror v2.0.19
[INFO] [stderr]    Compiling rustls v0.23.42
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling brotli-decompressor v5.0.3
[INFO] [stderr]    Compiling http-body-util v0.1.4
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling socket2 v0.5.10
[INFO] [stderr]    Compiling web_atoms v0.2.5
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling proc-macro2-diagnostics v0.10.1
[INFO] [stderr]    Compiling time-macros v0.2.32
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling cookie v0.18.1
[INFO] [stderr]    Compiling compression-core v0.4.32
[INFO] [stderr]    Compiling portable-atomic v1.14.0
[INFO] [stderr]    Compiling yansi v1.0.1
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]    Compiling phf_generator v0.11.3
[INFO] [stderr]    Compiling phf_generator v0.10.0
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling phf_codegen v0.10.0
[INFO] [stderr]    Compiling string_cache_codegen v0.5.4
[INFO] [stderr]    Compiling phf_codegen v0.11.3
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling selectors v0.25.0
[INFO] [stderr]    Compiling selectors v0.37.0
[INFO] [stderr]    Compiling raw-cpuid v11.6.0
[INFO] [stderr]    Compiling uncased v0.9.10
[INFO] [stderr]    Compiling brotli v8.0.4
[INFO] [stderr]    Compiling psl-types v2.0.11
[INFO] [stderr]    Compiling dashmap v6.2.1
[INFO] [stderr]    Compiling rustls-native-certs v0.8.4
[INFO] [stderr]    Compiling markup5ever v0.12.1
[INFO] [stderr]    Compiling rand v0.9.5
[INFO] [stderr]    Compiling phf v0.10.1
[INFO] [stderr]    Compiling aws-lc-sys v0.43.0
[INFO] [stderr]    Compiling uuid v1.24.0
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling servo_arc v0.3.0
[INFO] [stderr]    Compiling time v0.3.54
[INFO] [stderr]    Compiling regex-automata v0.4.16
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling spinning_top v0.3.0
[INFO] [stderr]    Compiling figment v0.10.19
[INFO] [stderr]    Compiling nonempty v0.7.0
[INFO] [stderr]    Compiling inlinable_string v0.1.15
[INFO] [stderr]    Compiling nonzero_ext v0.3.0
[INFO] [stderr]    Compiling matchit v0.8.4
[INFO] [stderr]    Compiling web-time v1.1.0
[INFO] [stderr]    Compiling getopts v0.2.24
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling clap_builder v4.6.2
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling web-page-classifier v0.1.0
[INFO] [stderr]    Compiling ego-tree v0.6.3
[INFO] [stderr]    Compiling dotenvy v0.15.7
[INFO] [stderr]    Compiling html-escape v0.2.15
[INFO] [stderr]    Compiling quanta v0.12.6
[INFO] [stderr]    Compiling governor v0.10.4
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling thiserror-impl v2.0.19
[INFO] [stderr]    Compiling clap_derive v4.6.4
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling async-trait v0.1.91
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]    Compiling tokio-macros v2.7.1
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling phf_macros v0.13.1
[INFO] [stderr]    Compiling cssparser-macros v0.6.1
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling tokio v1.53.1
[INFO] [stderr]    Compiling phf_macros v0.11.3
[INFO] [stderr]    Compiling phf v0.13.1
[INFO] [stderr]    Compiling cssparser v0.36.0
[INFO] [stderr]    Compiling compression-codecs v0.4.38
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling html5ever v0.27.0
[INFO] [stderr]    Compiling phf v0.11.3
[INFO] [stderr]    Compiling cssparser v0.31.2
[INFO] [stderr]    Compiling axum-core v0.5.6
[INFO] [stderr]    Compiling pear_codegen v0.2.9
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling yoke v0.8.3
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling derive_more v0.99.20
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling pin-project-internal v1.1.13
[INFO] [stderr]    Compiling pear v0.2.9
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling markup5ever v0.36.1
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling forwarded-header-value v0.1.1
[INFO] [stderr]    Compiling html5ever v0.36.1
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling regex v1.13.1
[INFO] [stderr]    Compiling clap v4.6.4
[INFO] [stderr]    Compiling pin-project v1.1.13
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling dom_query v0.24.0
[INFO] [stderr]    Compiling lol_html v3.0.1
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling string_cache v0.8.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling tracing-serde v0.2.0
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling html-cleaning v0.3.0
[INFO] [stderr]    Compiling quick_html2md v0.2.1
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling tokio-util v0.7.19
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling async-compression v0.4.42
[INFO] [stderr]    Compiling scraper v0.19.1
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling publicsuffix v2.3.0
[INFO] [stderr]    Compiling h2 v0.4.19
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling cookie_store v0.22.1
[INFO] [stderr]    Compiling rs-trafilatura v0.2.2
[INFO] [stderr]    Compiling hyper v1.11.0
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling axum v0.8.9
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling tower_governor v0.8.0
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling rustls-platform-verifier v0.7.0
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling reqwest v0.13.4
[INFO] [stderr]    Compiling serica-search v0.2.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 19s
[INFO] running `Command { std: "docker" "inspect" "7ff7e1e8b456d9b1236ca7b7aab7d7e68fa448ec461b9076ffc8a704bc31f8d0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "7ff7e1e8b456d9b1236ca7b7aab7d7e68fa448ec461b9076ffc8a704bc31f8d0" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:120:12
[INFO] [stderr]     |
[INFO] [stderr] 120 | homepage = "https://github.com/walkthestars/serica"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 125 | repository = "https://github.com/walkthestars/serica"
[INFO] [stderr]     |              ----------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `serica-search` (manifest) generated 1 warning
[INFO] [stderr]    Compiling tokio v1.53.1
[INFO] [stderr]    Compiling futures-channel v0.3.33
[INFO] [stderr]    Compiling futures-macro v0.3.33
[INFO] [stderr]    Compiling futures-io v0.3.33
[INFO] [stderr]    Compiling num_cpus v1.17.0
[INFO] [stderr]    Compiling assert-json-diff v2.0.2
[INFO] [stderr]    Compiling temp-env v0.2.0
[INFO] [stderr]    Compiling futures-util v0.3.33
[INFO] [stderr]    Compiling governor v0.10.4
[INFO] [stderr]    Compiling futures-executor v0.3.33
[INFO] [stderr]    Compiling futures v0.3.33
[INFO] [stderr]    Compiling tokio-util v0.7.19
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling async-compression v0.4.42
[INFO] [stderr]    Compiling tokio-stream v0.1.19
[INFO] [stderr]    Compiling deadpool v0.12.3
[INFO] [stderr]    Compiling tokio-test v0.4.5
[INFO] [stderr]    Compiling h2 v0.4.19
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling hyper v1.11.0
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling axum v0.8.9
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling wiremock v0.6.5
[INFO] [stderr]    Compiling reqwest v0.13.4
[INFO] [stderr]    Compiling tower_governor v0.8.0
[INFO] [stderr]    Compiling serica-search v0.2.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 58.57s
[INFO] running `Command { std: "docker" "inspect" "7ff7e1e8b456d9b1236ca7b7aab7d7e68fa448ec461b9076ffc8a704bc31f8d0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "7ff7e1e8b456d9b1236ca7b7aab7d7e68fa448ec461b9076ffc8a704bc31f8d0" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:120:12
[INFO] [stderr]     |
[INFO] [stderr] 120 | homepage = "https://github.com/walkthestars/serica"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 125 | repository = "https://github.com/walkthestars/serica"
[INFO] [stderr]     |              ----------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `serica-search` (manifest) generated 1 warning
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 5.07s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/build/serica-search/0bffabd2a6218485/out/serica_search-0bffabd2a6218485)
[INFO] [stdout] 
[INFO] [stdout] running 258 tests
[INFO] [stdout] test config::tests::test_validate_accepts_default_config ... ok
[INFO] [stdout] test config::tests::test_check_mcp_enabled_rejects_when_disabled ... ok
[INFO] [stdout] test config::tests::test_default_config ... ok
[INFO] [stdout] test config::tests::test_validate_accepts_log_level_that_is_a_bare_module_path ... ok
[INFO] [stdout] test config::tests::test_validate_accepts_pretty_log_format ... ok
[INFO] [stdout] test config::tests::test_check_mcp_enabled_accepts_default_config ... ok
[INFO] [stdout] test config::tests::test_validate_error_does_not_echo_proxy_credentials ... ok
[INFO] [stdout] test config::tests::test_validate_rejects_max_raw_bytes_below_floor ... ok
[INFO] [stdout] test config::tests::test_validate_rejects_max_raw_bytes_above_ceiling ... ok
[INFO] [stdout] test config::tests::test_validate_accepts_text_output_format ... ok
[INFO] [stdout] test config::tests::test_validate_accepts_valid_proxy_urls ... ok
[INFO] [stdout] test config::tests::test_validate_rejects_max_results_per_page_over_100 ... ok
[INFO] [stdout] test config::tests::test_validate_rejects_unparseable_extract_proxy_url ... ok
[INFO] [stdout] test config::tests::test_validate_rejects_unparseable_log_level ... ok
[INFO] [stdout] test config::tests::test_validate_rejects_out_of_range_safe_search_default ... ok
[INFO] [stdout] test config::tests::test_validate_rejects_max_concurrent_extracts_over_16 ... ok
[INFO] [stdout] test config::tests::test_validate_rejects_unparseable_search_proxy_url ... ok
[INFO] [stdout] test config::tests::test_validate_rejects_unrecognized_log_format ... ok
[INFO] [stdout] test config::tests::test_validate_rejects_unrecognized_output_format ... ok
[INFO] [stdout] test config::tests::test_validate_rejects_zero_extract_ttl_seconds ... ok
[INFO] [stdout] test config::tests::test_validate_rejects_zero_max_concurrent_extracts ... ok
[INFO] [stdout] test config::tests::test_validate_rejects_zero_max_content_chars ... ok
[INFO] [stdout] test config::tests::test_load_empty_path_falls_back_to_defaults ... ok
[INFO] [stdout] test config::tests::test_validate_rejects_zero_port ... ok
[INFO] [stdout] test config::tests::test_validate_rejects_zero_rate_limit_per_minute ... ok
[INFO] [stdout] test config::tests::test_validate_rejects_zero_timeout_ms ... ok
[INFO] [stdout] test config::tests::test_validate_rejects_zero_ttl_seconds ... ok
[INFO] [stdout] test config::tests::test_validate_rejects_zero_max_results_per_page ... ok
[INFO] [stdout] test engines::duckduckgo::tests::build_search_url_maps_all_supported_languages ... ok
[INFO] [stdout] test engines::duckduckgo::tests::build_search_url_maps_safe_search_off_to_kp_negative_2 ... ok
[INFO] [stdout] test engines::duckduckgo::tests::build_search_url_maps_safe_search_strict_to_kp_1 ... ok
[INFO] [stdout] test engines::duckduckgo::tests::build_search_url_maps_safe_search_moderate_to_kp_negative_1 ... ok
[INFO] [stdout] test engines::duckduckgo::tests::build_search_url_includes_kl_for_supported_language ... ok
[INFO] [stdout] test engines::duckduckgo::tests::build_search_url_always_includes_kp ... ok
[INFO] [stdout] test config::tests::test_cors_origin_env_override ... ok
[INFO] [stdout] test engines::duckduckgo::tests::build_search_url_omits_kl_for_unmapped_language ... ok
[INFO] [stdout] test engines::duckduckgo::tests::build_search_url_omits_kl_when_no_language_requested ... ok
[INFO] [stdout] test engines::duckduckgo::tests::is_challenge_page_requires_both_202_and_challenge_markup ... ok
[INFO] [stdout] test config::tests::test_load_none_missing_default_file_falls_back_to_defaults ... ok
[INFO] [stdout] test engines::duckduckgo::tests::test_extract_uddg_url ... ok
[INFO] [stdout] test config::tests::test_load_explicit_missing_path_errors ... ok
[INFO] [stdout] test engines::duckduckgo::tests::test_extract_uddg_url_rejects_data_scheme ... ok
[INFO] [stdout] test engines::duckduckgo::tests::ddg_region_for_language_rejects_unmapped_codes ... ok
[INFO] [stdout] test engines::duckduckgo::tests::test_extract_uddg_url_absolute ... ok
[INFO] [stdout] test engines::duckduckgo::tests::test_extract_uddg_url_rejects_javascript_scheme ... ok
[INFO] [stdout] test config::tests::test_proxy_env_override ... ok
[INFO] [stdout] test error::tests::test_bind_error_body_is_opaque ... ok
[INFO] [stdout] test engines::duckduckgo::tests::with_proxy_rejects_malformed_proxy_url ... ok
[INFO] [stdout] test error::tests::test_config_error_body_is_opaque ... ok
[INFO] [stdout] test error::tests::test_invalid_query_returns_400 ... ok
[INFO] [stdout] test error::tests::test_internal_error_returns_500 ... ok
[INFO] [stdout] test error::tests::test_error_produces_json_envelope ... ok
[INFO] [stdout] test error::tests::test_redis_error_body_is_opaque ... ok
[INFO] [stdout] test error::tests::test_extract_timeout_returns_504 ... ok
[INFO] [stdout] test gateway::http::tests::check_api_key_allows_when_configured_as_empty_string ... ok
[INFO] [stdout] test error::tests::test_rate_limited_returns_429 ... ok
[INFO] [stdout] test gateway::http::tests::check_api_key_allows_when_unconfigured ... ok
[INFO] [stdout] test gateway::http::tests::check_api_key_rejects_missing_header_when_configured ... ok
[INFO] [stdout] test gateway::http::tests::check_api_key_rejects_wrong_bearer_token ... ok
[INFO] [stdout] test error::tests::test_unauthorized_returns_401 ... ok
[INFO] [stdout] test gateway::http::tests::map_search_error_blocked_becomes_service_unavailable ... ok
[INFO] [stdout] test gateway::http::tests::map_search_error_challenged_becomes_service_unavailable ... ok
[INFO] [stdout] test gateway::http::tests::map_search_error_parse_empty_is_not_a_client_error ... ok
[INFO] [stdout] test error::tests::test_content_too_large_returns_413 ... ok
[INFO] [stdout] test gateway::http::tests::map_search_error_transport_becomes_service_unavailable ... ok
[INFO] [stdout] test gateway::http::tests::check_api_key_accepts_matching_bearer_token ... ok
[INFO] [stdout] test config::tests::test_server_api_key_env_override ... ok
[INFO] [stdout] test gateway::http::tests::check_api_key_accepts_matching_x_api_key_header ... ok
[INFO] [stdout] test gateway::http::tests::map_search_error_upstream_becomes_service_unavailable ... ok
[INFO] [stdout] test gateway::http::tests::test_cors_invalid_origin_fails_fast_instead_of_widening_to_wildcard ... ok
[INFO] [stdout] test gateway::http::tests::test_cors_wildcard_is_explicit_opt_in ... ok
[INFO] [stdout] test gateway::http::tests::test_extract_timeout_response_survives_convert_timeout_response ... ok
[INFO] [stdout] test engines::duckduckgo::tests::test_parse_results_from_live_html ... ok
[INFO] [stdout] test config::tests::test_load_explicit_path_applies_values ... ok
[INFO] [stdout] test config::tests::test_env_override ... ok
[INFO] [stdout] test gateway::http::tests::test_extract_cache_hit_skips_fetch ... ok
[INFO] [stdout] test gateway::http::tests::test_safe_search_blocks_escort_service ... ok
[INFO] [stdout] test gateway::http::tests::test_safe_search_word_boundary ... ok
[INFO] [stdout] test engines::duckduckgo::tests::probe_upstream_returns_true_on_healthy_response ... ok
[INFO] [stdout] test gateway::http::tests::test_cors_header_absent_by_default ... ok
[INFO] [stdout] test gateway::http::tests::test_health_reflects_shutdown_flag_flip ... ok
[INFO] [stdout] test gateway::http::tests::test_cors_configured_origin_returns_restrictive_header ... ok
[INFO] [stdout] test engines::duckduckgo::tests::with_proxy_accepts_valid_proxy_url ... ok
[INFO] [stdout] test engines::duckduckgo::tests::probe_upstream_returns_false_on_202_challenge_page ... ok
[INFO] [stdout] test gateway::http::tests::test_rate_limited_response_is_traced_and_echoes_request_id ... ok
[INFO] [stdout] test gateway::http::tests::test_health_endpoint_returns_ok ... ok
[INFO] [stdout] test gateway::http::tests::test_response_echoes_x_request_id_header ... ok
[INFO] [stdout] test gateway::http::tests::test_search_cache_hit_remeasures_timing_ms ... ok
[INFO] [stdout] test gateway::http::tests::test_timeout_layer_produces_standard_error_envelope ... ok
[INFO] [stdout] test gateway::http::tests::test_stats_accepts_correct_x_api_key_header ... ok
[INFO] [stdout] test gateway::http::tests::try_from_params_accepts_500_char_cjk_query_despite_exceeding_500_bytes ... ok
[INFO] [stdout] test gateway::http::tests::try_from_params_accepts_every_documented_safe_search_level ... ok
[INFO] [stdout] test gateway::http::tests::try_from_params_accepts_every_supported_language ... ok
[INFO] [stdout] test gateway::http::tests::try_from_params_accepts_page_fifty ... ok
[INFO] [stdout] test gateway::http::tests::try_from_params_accepts_page_one ... ok
[INFO] [stdout] test gateway::http::tests::try_from_params_defaults_missing_page_to_one ... ok
[INFO] [stdout] test gateway::http::tests::try_from_params_missing_safe_search_falls_back_to_configured_default ... ok
[INFO] [stdout] test gateway::http::tests::test_stats_rejects_wrong_api_key ... ok
[INFO] [stdout] test gateway::http::tests::try_from_params_rejects_page_fifty_one ... ok
[INFO] [stdout] test gateway::http::tests::try_from_params_rejects_501_char_cjk_query ... ok
[INFO] [stdout] test gateway::http::tests::try_from_params_rejects_page_zero ... ok
[INFO] [stdout] test gateway::http::tests::try_from_params_rejects_safe_search_three ... ok
[INFO] [stdout] test engines::duckduckgo::tests::search_returns_challenged_not_parse_empty_on_202_challenge_page ... ok
[INFO] [stdout] test gateway::http::tests::test_stats_open_by_default_when_api_key_unset ... ok
[INFO] [stdout] test gateway::http::tests::test_health_live_and_ready_routes ... ok
[INFO] [stdout] test gateway::http::tests::test_health_handlers_do_not_block_on_network ... ok
[INFO] [stdout] test gateway::http::tests::test_rate_limit_returns_429_with_envelope_and_retry_after ... ok
[INFO] [stdout] test gateway::http::tests::test_router_build_fails_fast_on_invalid_cors_origin ... ok
[INFO] [stdout] test gateway::http::tests::test_trace_span_is_populated_with_request_id ... ok
[INFO] [stdout] test gateway::http::tests::test_search_empty_query_returns_400 ... ok
[INFO] [stdout] test gateway::http::tests::try_from_params_rejects_unmapped_language ... ok
[INFO] [stdout] test gateway::http::tests::test_search_unmapped_language_returns_400 ... ok
[INFO] [stdout] test gateway::http::tests::test_stats_accepts_correct_bearer_api_key ... ok
[INFO] [stdout] test gateway::mcp::tests::test_tools_call_extract_result_has_mcp_content_shape ... ignored, reaches the live internet (example.com); see comment above
[INFO] [stdout] test engines::duckduckgo::tests::with_base_url_search_hits_injected_server_not_real_ddg ... ok
[INFO] [stdout] test gateway::http::tests::test_stats_rejects_missing_api_key_when_configured ... ok
[INFO] [stdout] test gateway::http::tests::test_stats_endpoint ... ok
[INFO] [stdout] test gateway::mcp::tests::test_invalid_json ... ok
[INFO] [stdout] test gateway::mcp::tests::test_notification_initialized_ignored_even_with_id ... ok
[INFO] [stdout] test gateway::mcp::tests::test_tools_call_accepts_500_char_cjk_query_despite_exceeding_500_bytes ... ok
[INFO] [stdout] test gateway::http::tests::test_search_valid_query ... ok
[INFO] [stdout] test gateway::mcp::tests::test_notification_gets_no_response ... ok
[INFO] [stdout] test gateway::tests::apply_safe_search_filter_moderate_and_strict_are_not_identical ... ok
[INFO] [stdout] test gateway::tests::apply_safe_search_filter_moderate_does_not_block_adult_education ... ok
[INFO] [stdout] test gateway::tests::apply_safe_search_filter_moderate_does_not_block_named_false_positives ... ok
[INFO] [stdout] test gateway::tests::apply_safe_search_filter_still_blocks_on_title_when_host_is_clean ... ok
[INFO] [stdout] test gateway::tests::apply_safe_search_filter_strict_blocks_on_url_host ... ok
[INFO] [stdout] test gateway::tests::apply_safe_search_filter_strict_still_blocks_adult ... ok
[INFO] [stdout] test gateway::tests::cache_key_does_not_collide_across_delimiter_injection ... ok
[INFO] [stdout] test gateway::tests::cache_key_is_deterministic_and_namespaced ... ok
[INFO] [stdout] test gateway::tests::extract_cache_key_differs_across_distinct_urls ... ok
[INFO] [stdout] test gateway::tests::extract_cache_key_is_deterministic_and_namespaced ... ok
[INFO] [stdout] test gateway::tests::extract_cache_key_namespace_never_collides_with_search_key ... ok
[INFO] [stdout] test gateway::tests::finalize_results_applies_safe_search_filter ... ok
[INFO] [stdout] test gateway::tests::finalize_results_off_keeps_all_results ... ok
[INFO] [stdout] test gateway::tests::finalize_results_page_2_does_not_double_paginate ... ok
[INFO] [stdout] test models::extract::tests::test_extract_options_from_config_disables_images_and_links ... ok
[INFO] [stdout] test gateway::mcp::tests::test_tools_call_extract_cache_hit_skips_fetch ... ok
[INFO] [stdout] test models::extract::tests::test_extract_options_from_config_maps_markdown_output_format ... ok
[INFO] [stdout] test models::extract::tests::test_extract_options_from_config_maps_max_content_chars ... ok
[INFO] [stdout] test models::extract::tests::test_extract_options_from_config_maps_text_output_format ... ok
[INFO] [stdout] test gateway::mcp::tests::test_tools_call_invalid_page ... ok
[INFO] [stdout] test util::codeblock_linebreaks::tests::adjacent_line_divs_get_a_break_inserted ... ok
[INFO] [stdout] test util::codeblock_linebreaks::tests::content_outside_pre_is_never_touched ... ok
[INFO] [stdout] test util::codeblock_linebreaks::tests::language_tag_div_followed_by_line_div_gets_a_break ... ok
[INFO] [stdout] test util::codeblock_linebreaks::tests::language_tag_div_followed_directly_by_token_span_gets_a_break ... ok
[INFO] [stdout] test util::codeblock_linebreaks::tests::already_whitespace_separated_divs_are_left_alone ... ok
[INFO] [stdout] test util::codeblock_linebreaks::tests::nested_divs_do_not_get_a_break_before_their_own_closing_wrapper ... ok
[INFO] [stdout] test util::codeblock_linebreaks::tests::no_double_break_before_closing_code_and_pre_tags ... ok
[INFO] [stdout] test util::codeblock_linebreaks::tests::p_tr_li_boundaries_are_also_handled ... ok
[INFO] [stdout] test util::codeblock_linebreaks::tests::tag_name_boundary_not_fooled_by_divider ... ok
[INFO] [stdout] test util::codeblock_linebreaks::tests::unclosed_pre_leaks_in_pre_state_to_rest_of_document ... ok
[INFO] [stdout] test util::codeblock_linebreaks::tests::uppercase_tags_are_matched_case_insensitively ... ok
[INFO] [stdout] test gateway::mcp::tests::test_tools_call_missing_query ... ok
[INFO] [stdout] test util::codespan_fixup::tests::empty_span_is_untouched ... ok
[INFO] [stdout] test gateway::mcp::tests::test_tools_call_rejects_501_char_cjk_query ... ok
[INFO] [stdout] test util::codespan_fixup::tests::nbsp_is_whitespace_per_rust_contrary_to_common_assumption ... ok
[INFO] [stdout] test gateway::mcp::tests::test_tools_call_search_cache_hit_remeasures_timing_ms ... ok
[INFO] [stdout] test util::codespan_fixup::tests::restore_whitespace_placeholders_collapses_space_after_sentinel ... ok
[INFO] [stdout] test util::codespan_fixup::tests::restore_whitespace_placeholders_collapses_space_before_sentinel ... ok
[INFO] [stdout] test util::codespan_fixup::tests::restore_whitespace_placeholders_collapses_space_on_both_sides ... ok
[INFO] [stdout] test util::codespan_fixup::tests::restore_whitespace_placeholders_handles_multiple_sentinels ... ok
[INFO] [stdout] test util::codespan_fixup::tests::restore_whitespace_placeholders_is_noop_without_sentinel ... ok
[INFO] [stdout] test gateway::mcp::tests::test_tools_call_extract_invalid_url_message_carries_reason ... ok
[INFO] [stdout] test util::codespan_fixup::tests::restore_whitespace_placeholders_round_trips_single_sentinel ... ok
[INFO] [stdout] test util::codespan_fixup::tests::self_closing_or_unclosed_span_without_gt_is_left_as_text ... ok
[INFO] [stdout] test util::codespan_fixup::tests::sentinel_is_not_whitespace ... ok
[INFO] [stdout] test util::codespan_fixup::tests::span_with_attributes_works ... ok
[INFO] [stdout] test util::codespan_fixup::tests::span_with_nested_tag_is_left_untouched ... ok
[INFO] [stdout] test util::codespan_fixup::tests::span_with_non_whitespace_content_is_untouched ... ok
[INFO] [stdout] test util::codespan_fixup::tests::tab_and_newline_only_span_is_substituted ... ok
[INFO] [stdout] test gateway::mcp::tests::test_tools_call_unmapped_language_is_rejected ... ok
[INFO] [stdout] test util::codespan_fixup::tests::uppercase_span_tags_are_matched_case_insensitively ... ok
[INFO] [stdout] test util::codespan_fixup::tests::multiple_spans_in_sequence_all_handled ... ok
[INFO] [stdout] test util::codespan_fixup::tests::whitespace_only_span_becomes_sentinel ... ok
[INFO] [stdout] test gateway::mcp::tests::test_tools_call_search_success_returns_parsed_results ... ok
[INFO] [stdout] test util::codespan_fixup::tests::tag_name_boundary_not_fooled_by_spanx ... ok
[INFO] [stdout] test util::extract::tests::extract_cache_hit_remeasures_timing_ms ... ok
[INFO] [stdout] test models::extract::tests::test_extract_with_options_respects_max_content_chars ... ok
[INFO] [stdout] test util::extract::tests::extract_limiter_single_permit_is_exclusive ... ok
[INFO] [stdout] test gateway::mcp::tests::test_arbitrary_notification_gets_no_response ... ok
[INFO] [stdout] test util::extract::tests::extract_limiter_allows_configured_concurrency ... ok
[INFO] [stdout] test gateway::mcp::tests::test_unknown_method ... ok
[INFO] [stdout] test gateway::mcp::tests::test_initialize ... ok
[INFO] [stdout] test gateway::mcp::tests::test_initialize_echoes_supported_client_version ... ok
[INFO] [stdout] test gateway::mcp::tests::test_concurrent_requests_do_not_serialize ... ok
[INFO] [stdout] test gateway::mcp::tests::test_tools_list ... ok
[INFO] [stdout] test util::extract::tests::markdown_healthy_article_skips_whole_doc_fallback ... ok
[INFO] [stdout] test util::extract::tests::truncate_at_char_boundary_does_not_panic_on_multibyte ... ok
[INFO] [stdout] test util::extract::tests::short_document_with_no_rescue_yields_none ... ok
[INFO] [stdout] test util::fetch::tests::accepts_text_html ... ok
[INFO] [stdout] test util::fetch::tests::accepts_text_html_with_charset_param ... ok
[INFO] [stdout] test util::fetch::tests::header_variant_accepts_text_html ... ok
[INFO] [stdout] test util::codeblock_linebreaks::tests::upstream_bug_still_collapses_lines_unpatched ... ok
[INFO] [stdout] test util::fetch::tests::is_case_insensitive ... ok
[INFO] [stdout] test util::fetch::tests::rejects_application_json ... ok
[INFO] [stdout] test util::codeblock_linebreaks::tests::preprocessing_fixes_the_line_breaks ... ok
[INFO] [stdout] test util::codespan_fixup::tests::upstream_bug_still_mangles_raw_html_unpatched ... ok
[INFO] [stdout] test util::fetch::tests::rejects_application_octet_stream ... ok
[INFO] [stdout] test util::fetch::tests::rejects_application_pdf ... ok
[INFO] [stdout] test util::fetch::tests::rejects_application_xml ... ok
[INFO] [stdout] test util::codespan_fixup::tests::preprocessing_and_restore_fix_the_spacing ... ok
[INFO] [stdout] test util::fetch::tests::rejects_image_png ... ok
[INFO] [stdout] test util::fetch::tests::rejects_missing_content_type ... ok
[INFO] [stdout] test util::fetch::tests::rejects_text_plain ... ok
[INFO] [stdout] test util::metrics::tests::error_blocked_challenged_and_empty_parse_counters_are_independent ... ok
[INFO] [stdout] test util::metrics::tests::new_collector_snapshots_all_zero ... ok
[INFO] [stdout] test util::extract::tests::text_output_format_healthy_article_skips_whole_doc_fallback ... ok
[INFO] [stdout] test util::prune::tests::handles_unclosed_script_tag_without_panicking ... ok
[INFO] [stdout] test util::fetch::tests::rejects_unparseable_content_type ... ok
[INFO] [stdout] test util::prune::tests::removes_noscript_including_fallback_content ... ok
[INFO] [stdout] test util::prune::tests::removes_uppercase_script_and_style_tags ... ok
[INFO] [stdout] test util::prune::tests::script_closing_tag_lookalike_in_string_ends_element_cleanly ... ok
[INFO] [stdout] test util::prune::tests::malformed_garbage_input_does_not_panic ... ok
[INFO] [stdout] test util::ssrf::tests::allows_public_v4_and_v6 ... ok
[INFO] [stdout] test util::prune::tests::whole_doc_text_decodes_html_entities ... ok
[INFO] [stdout] test util::prune::tests::removes_attribute_laden_script_tags ... ok
[INFO] [stdout] test util::ssrf::tests::blocks_ipv4_mapped_private ... ok
[INFO] [stdout] test util::prune::tests::whole_doc_text_excludes_pruned_script_content ... ok
[INFO] [stdout] test util::ssrf::tests::blocks_loopback_v4 ... ok
[INFO] [stdout] test util::ssrf::tests::blocks_ipv6_loopback_and_unique_local ... ok
[INFO] [stdout] test gateway::mcp::tests::test_initialize_protocol_version_is_date_stamped ... ok
[INFO] [stdout] test util::ssrf::tests::blocks_cgnat ... ok
[INFO] [stdout] test util::ssrf::tests::blocks_private_ranges ... ok
[INFO] [stdout] test util::ssrf::tests::blocks_unspecified_and_broadcast ... ok
[INFO] [stdout] test util::ssrf::tests::blocks_metadata_ip ... ok
[INFO] [stdout] test util::ssrf::tests::build_pinned_extract_client_rejects_malformed_proxy_url ... ok
[INFO] [stdout] test util::ssrf::tests::max_redirect_hops_is_five ... ok
[INFO] [stdout] test util::ssrf::tests::normalize_drops_trailing_question_mark_when_all_params_were_tracking ... ok
[INFO] [stdout] test util::ssrf::tests::normalize_is_noop_when_nothing_to_strip ... ok
[INFO] [stdout] test util::ssrf::tests::normalize_mixed_tracking_and_non_tracking_params_preserves_order ... ok
[INFO] [stdout] test util::ssrf::tests::normalize_strips_fragment ... ok
[INFO] [stdout] test util::ssrf::tests::normalize_preserves_non_tracking_params_and_order ... ok
[INFO] [stdout] test util::ssrf::tests::redirect_target_downgrading_to_http_fails_closed ... ok
[INFO] [stdout] test util::ssrf::tests::normalize_strips_tracking_params ... ok
[INFO] [stdout] test util::codespan_fixup::tests::text_output_is_not_regressed_to_extra_spaces ... ok
[INFO] [stdout] test util::ssrf::tests::redirect_target_with_public_ip_literal_passes_validation ... ok
[INFO] [stdout] test util::ssrf::tests::redirect_target_pointing_at_forbidden_ip_fails_closed ... ok
[INFO] [stdout] test util::ssrf::tests::rejects_loopback_host ... ok
[INFO] [stdout] test util::ssrf::tests::rejects_non_https_scheme ... ok
[INFO] [stdout] test util::ssrf::tests::resolve_redirect_target_handles_protocol_relative_location ... ok
[INFO] [stdout] test util::ssrf::tests::resolve_redirect_target_handles_absolute_url ... ok
[INFO] [stdout] test util::ssrf::tests::resolve_redirect_target_handles_relative_path ... ok
[INFO] [stdout] test util::ssrf::tests::resolve_redirect_target_normalizes_like_the_entry_url ... ok
[INFO] [stdout] test util::ssrf::tests::resolve_redirect_target_rejects_unparseable_location ... ok
[INFO] [stdout] test util::extract::tests::ratio_at_or_above_threshold_is_not_downgraded ... ok
[INFO] [stdout] test util::fetch::tests::accepts_application_xhtml ... ok
[INFO] [stdout] test util::ssrf::tests::normalize_strips_fragment_and_tracking_params_together ... ok
[INFO] [stdout] test util::extract::tests::aup_fixture_stays_on_text_fallback_not_downgraded ... ok
[INFO] [stdout] test util::prune::tests::prune_benchmark_2mb_nextjs_style_fixture ... ok
[INFO] [stdout] test util::ssrf::tests::build_pinned_extract_client_default_has_no_proxy_url ... ok
[INFO] [stdout] test util::extract::tests::terms_fixture_recovers_via_whole_doc_fallback ... ok
[INFO] [stdout] test util::extract::tests::large_page_with_healthy_proportional_extract_is_not_downgraded ... ok
[INFO] [stdout] test util::extract::tests::equivalence_prune_on_vs_off_is_byte_identical ... ok
[INFO] [stdout] test util::extract::tests::healthy_short_markdown_not_downgraded_on_nav_heavy_page ... ok
[INFO] [stdout] test util::fetch::tests::read_capped_body_rejects_decompression_bomb ... ok
[INFO] [stdout] test util::extract::tests::large_gutted_page_is_rescued_by_whole_doc_fallback ... ok
[INFO] [stdout] test util::ssrf::tests::extract_client_ignores_ambient_https_proxy_env_by_default ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 257 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 3.31s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/build/serica-search/c71037bde3d77c6d/out/serica-c71037bde3d77c6d)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/api_test.rs (/opt/rustwide/target/debug/build/serica-search/ba44c7c5e5208b5a/out/api_test-ba44c7c5e5208b5a)
[INFO] [stdout] 
[INFO] [stdout] running 21 tests
[INFO] [stdout] test extract_non_html_content_type_returns_400 ... ignored, reaches the live internet (httpbin.org); see comment above
[INFO] [stdout] test extract_valid_url_returns_200 ... ignored, reaches the live internet (example.com); see comment above
[INFO] [stdout] test extract_empty_url_returns_400 ... ok
[INFO] [stdout] test health_live_returns_200 ... ok
[INFO] [stdout] test health_ready_returns_200 ... ok
[INFO] [stdout] test health_returns_200 ... ok
[INFO] [stdout] test search_long_query_returns_400 ... ok
[INFO] [stdout] test extract_invalid_url_scheme_returns_400 ... ok
[INFO] [stdout] test search_unmapped_language_returns_400 ... ok
[INFO] [stdout] test search_invalid_page_returns_400 ... ok
[INFO] [stdout] test search_invalid_language_returns_400 ... ok
[INFO] [stdout] test search_invalid_safe_search_returns_400 ... ok
[INFO] [stdout] test search_empty_query_returns_400 ... ok
[INFO] [stdout] test search_missing_query_returns_400 ... ok
[INFO] [stdout] test health_response_has_required_fields ... ok
[INFO] [stdout] test stats_returns_200 ... ok
[INFO] [stdout] test search_valid_query_returns_200 ... ok
[INFO] [stdout] test search_with_language_filter_returns_200 ... ok
[INFO] [stdout] test search_response_has_required_fields ... ok
[INFO] [stdout] test search_second_identical_request_is_served_from_cache ... ok
[INFO] [stdout] test search_page_two_returns_results_distinct_from_page_one ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 19 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 2.48s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests serica_search
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "7ff7e1e8b456d9b1236ca7b7aab7d7e68fa448ec461b9076ffc8a704bc31f8d0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7ff7e1e8b456d9b1236ca7b7aab7d7e68fa448ec461b9076ffc8a704bc31f8d0", kill_on_drop: false }`
[INFO] [stdout] 7ff7e1e8b456d9b1236ca7b7aab7d7e68fa448ec461b9076ffc8a704bc31f8d0
