[INFO] fetching crate mcp-gateway 2.2.0... [INFO] testing mcp-gateway-2.2.0 against master#d933cf483edf1605142ac6899ff32536c0ad8b22 for pr-150933 [INFO] extracting crate mcp-gateway 2.2.0 into /workspace/builds/worker-1-tc1/source [INFO] started tweaking crates.io crate mcp-gateway 2.2.0 [INFO] removed 0 missing examples [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate mcp-gateway 2.2.0 [INFO] tweaked toml for crates.io crate mcp-gateway 2.2.0 written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate mcp-gateway 2.2.0 on toolchain d933cf483edf1605142ac6899ff32536c0ad8b22 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+d933cf483edf1605142ac6899ff32536c0ad8b22" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate mcp-gateway 2.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" "+d933cf483edf1605142ac6899ff32536c0ad8b22" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded nonzero_ext v0.3.0 [INFO] [stderr] Downloaded open v5.3.3 [INFO] [stderr] Downloaded spinning_top v0.3.0 [INFO] [stderr] Downloaded metrics-util v0.19.1 [INFO] [stderr] Downloaded metrics-exporter-prometheus v0.16.2 [INFO] [stderr] Downloaded governor v0.10.4 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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" "+d933cf483edf1605142ac6899ff32536c0ad8b22" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 9b4fe42ac9f3f3d21d318930ed8a71bb69ef9be993a0121ee38c356b6c433661 [INFO] running `Command { std: "docker" "start" "-a" "9b4fe42ac9f3f3d21d318930ed8a71bb69ef9be993a0121ee38c356b6c433661", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "9b4fe42ac9f3f3d21d318930ed8a71bb69ef9be993a0121ee38c356b6c433661", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9b4fe42ac9f3f3d21d318930ed8a71bb69ef9be993a0121ee38c356b6c433661", kill_on_drop: false }` [INFO] [stdout] 9b4fe42ac9f3f3d21d318930ed8a71bb69ef9be993a0121ee38c356b6c433661 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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" "+d933cf483edf1605142ac6899ff32536c0ad8b22" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 4965c123560eb83d37a4d92d6debfa1f0d05dbe184eb7fca20642b07bd8214b4 [INFO] running `Command { std: "docker" "start" "-a" "4965c123560eb83d37a4d92d6debfa1f0d05dbe184eb7fca20642b07bd8214b4", kill_on_drop: false }` [INFO] [stderr] Compiling syn v2.0.114 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling indexmap v2.13.0 [INFO] [stderr] Compiling http-body v1.0.1 [INFO] [stderr] Compiling simd-adler32 v0.3.8 [INFO] [stderr] Compiling proc-macro2-diagnostics v0.10.1 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling ryu v1.0.22 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling rustls v0.23.36 [INFO] [stderr] Compiling http-body-util v0.1.3 [INFO] [stderr] Compiling rustls-webpki v0.103.9 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling flate2 v1.1.8 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling compression-core v0.4.31 [INFO] [stderr] Compiling regex-automata v0.4.13 [INFO] [stderr] Compiling rand v0.9.2 [INFO] [stderr] Compiling compression-codecs v0.4.36 [INFO] [stderr] Compiling portable-atomic v1.13.0 [INFO] [stderr] Compiling raw-cpuid v11.6.0 [INFO] [stderr] Compiling uuid v1.20.0 [INFO] [stderr] Compiling figment v0.10.19 [INFO] [stderr] Compiling is-docker v0.2.0 [INFO] [stderr] Compiling clap_lex v0.7.7 [INFO] [stderr] Compiling iri-string v0.7.10 [INFO] [stderr] Compiling inlinable_string v0.1.15 [INFO] [stderr] Compiling dirs-sys v0.5.0 [INFO] [stderr] Compiling clap_builder v4.5.54 [INFO] [stderr] Compiling is-wsl v0.4.0 [INFO] [stderr] Compiling inotify v0.11.0 [INFO] [stderr] Compiling serde_path_to_error v0.1.20 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling quanta v0.12.6 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling notify-types v2.1.0 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling spinning_top v0.3.0 [INFO] [stderr] Compiling instant v0.1.13 [INFO] [stderr] Compiling web-time v1.1.0 [INFO] [stderr] Compiling matchit v0.8.4 [INFO] [stderr] Compiling nonzero_ext v0.3.0 [INFO] [stderr] Compiling open v5.3.3 [INFO] [stderr] Compiling notify v8.2.0 [INFO] [stderr] Compiling metrics v0.24.3 [INFO] [stderr] Compiling regex v1.12.2 [INFO] [stderr] Compiling dirs v6.0.0 [INFO] [stderr] Compiling md5 v0.7.0 [INFO] [stderr] Compiling dotenvy v0.15.7 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling tokio v1.49.0 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling pear_codegen v0.2.9 [INFO] [stderr] Compiling zerofrom v0.1.6 [INFO] [stderr] Compiling yoke v0.8.1 [INFO] [stderr] Compiling futures-util v0.3.31 [INFO] [stderr] Compiling async-stream-impl v0.3.6 [INFO] [stderr] Compiling zerovec v0.11.5 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling zerotrie v0.2.3 [INFO] [stderr] Compiling axum-core v0.5.6 [INFO] [stderr] Compiling pear v0.2.9 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling tinystr v0.8.2 [INFO] [stderr] Compiling icu_locale_core v2.1.1 [INFO] [stderr] Compiling potential_utf v0.1.4 [INFO] [stderr] Compiling icu_collections v2.1.1 [INFO] [stderr] Compiling clap_derive v4.5.49 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling async-stream v0.3.6 [INFO] [stderr] Compiling icu_provider v2.1.1 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling icu_properties v2.1.2 [INFO] [stderr] Compiling icu_normalizer v2.1.1 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling clap v4.5.54 [INFO] [stderr] Compiling futures-executor v0.3.31 [INFO] [stderr] Compiling governor v0.10.4 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling serde_yaml v0.9.34+deprecated [INFO] [stderr] Compiling tracing-serde v0.2.0 [INFO] [stderr] Compiling futures v0.3.31 [INFO] [stderr] Compiling tracing-subscriber v0.3.22 [INFO] [stderr] Compiling chrono v0.4.43 [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 tokio-util v0.7.18 [INFO] [stderr] Compiling tokio-rustls v0.26.4 [INFO] [stderr] Compiling async-compression v0.4.37 [INFO] [stderr] Compiling backoff v0.4.0 [INFO] [stderr] Compiling h2 v0.4.13 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling tokio-stream v0.1.18 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling hyper v1.8.1 [INFO] [stderr] Compiling hyper-util v0.1.19 [INFO] [stderr] Compiling hyper-rustls v0.27.7 [INFO] [stderr] Compiling axum v0.8.8 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling mcp-gateway v2.2.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 51s [INFO] running `Command { std: "docker" "inspect" "4965c123560eb83d37a4d92d6debfa1f0d05dbe184eb7fca20642b07bd8214b4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4965c123560eb83d37a4d92d6debfa1f0d05dbe184eb7fca20642b07bd8214b4", kill_on_drop: false }` [INFO] [stdout] 4965c123560eb83d37a4d92d6debfa1f0d05dbe184eb7fca20642b07bd8214b4 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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" "+d933cf483edf1605142ac6899ff32536c0ad8b22" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] ceff6d2cc642a09d8012196e43d4b16a5f12cc1a31c75652756f3e745b874df2 [INFO] running `Command { std: "docker" "start" "-a" "ceff6d2cc642a09d8012196e43d4b16a5f12cc1a31c75652756f3e745b874df2", kill_on_drop: false }` [INFO] [stderr] Compiling tokio v1.49.0 [INFO] [stderr] Compiling rustix v1.1.3 [INFO] [stderr] Compiling terminal_size v0.4.3 [INFO] [stderr] Compiling tempfile v3.24.0 [INFO] [stderr] Compiling clap_builder v4.5.54 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling async-compression v0.4.37 [INFO] [stderr] Compiling tokio-rustls v0.26.4 [INFO] [stderr] Compiling backoff v0.4.0 [INFO] [stderr] Compiling clap v4.5.54 [INFO] [stderr] Compiling h2 v0.4.13 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling tokio-stream v0.1.18 [INFO] [stderr] Compiling tokio-test v0.4.5 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling hyper v1.8.1 [INFO] [stderr] Compiling hyper-util v0.1.19 [INFO] [stderr] Compiling hyper-rustls v0.27.7 [INFO] [stderr] Compiling axum v0.8.8 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling mcp-gateway v2.2.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 56s [INFO] running `Command { std: "docker" "inspect" "ceff6d2cc642a09d8012196e43d4b16a5f12cc1a31c75652756f3e745b874df2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ceff6d2cc642a09d8012196e43d4b16a5f12cc1a31c75652756f3e745b874df2", kill_on_drop: false }` [INFO] [stdout] ceff6d2cc642a09d8012196e43d4b16a5f12cc1a31c75652756f3e745b874df2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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" "+d933cf483edf1605142ac6899ff32536c0ad8b22" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] fb176e48625dbc6a254bb03a7826af617d70ed247c3f5e0ac9b6b4a916536c53 [INFO] running `Command { std: "docker" "start" "-a" "fb176e48625dbc6a254bb03a7826af617d70ed247c3f5e0ac9b6b4a916536c53", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.46s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/mcp_gateway-75eb9c09b32f844f) [INFO] [stdout] [INFO] [stdout] running 399 tests [INFO] [stdout] test cache::tests::test_cache_miss ... ok [INFO] [stdout] test cache::tests::test_clear ... ok [INFO] [stdout] test cache::tests::test_cache_hit ... ok [INFO] [stdout] test cache::tests::test_hit_rate ... ok [INFO] [stdout] test cache::tests::test_hash_deterministic ... ok [INFO] [stdout] test cache::tests::test_cache_key_with_complex_args ... ok [INFO] [stdout] test capability::definition::tests::test_capability_to_mcp_tool ... ok [INFO] [stdout] test capability::definition::tests::test_default_values ... ok [INFO] [stdout] test cache::tests::test_default_impl ... ok [INFO] [stdout] test cache::tests::test_evict_expired ... ok [INFO] [stdout] test capability::executor::tests::test_cache ... ok [INFO] [stdout] test capability::definition::tests::test_providers_with_fallback_array ... ok [INFO] [stdout] test capability::backend::tests::test_capability_backend_new ... ok [INFO] [stdout] test capability::executor::tests::test_build_url ... ok [INFO] [stdout] test capability::executor::tests::test_extract_path ... ok [INFO] [stdout] test capability::executor::tests::test_fetch_from_file_invalid_format ... ok [INFO] [stdout] test capability::executor::tests::test_fetch_from_file_missing_file ... ok [INFO] [stdout] test capability::executor::tests::test_fetch_from_file_missing_field ... ok [INFO] [stdout] test capability::executor::tests::test_fetch_from_file_nested ... ok [INFO] [stdout] test capability::executor::tests::test_fetch_from_file_simple ... ok [INFO] [stdout] test cache::tests::test_multiple_hits_and_misses ... ok [INFO] [stdout] test capability::openapi::tests::test_convert_openapi ... ok [INFO] [stdout] test capability::loader::tests::test_load_nested_directories ... ok [INFO] [stdout] test capability::loader::tests::test_load_directory ... ok [INFO] [stdout] test capability::openapi::tests::test_format_name ... ok [INFO] [stdout] test capability::openapi::tests::test_with_prefix ... ok [INFO] [stdout] test capability::parser::tests::test_validate_no_raw_secrets ... ok [INFO] [stdout] test capability::parser::tests::test_parse_minimal_capability ... ok [INFO] [stdout] test capability::parser::tests::test_validate_missing_name ... ok [INFO] [stdout] test config::tests::test_env_files_deserialized_from_yaml ... ok [INFO] [stdout] test capability::watcher::tests::test_watcher_creation ... ok [INFO] [stdout] test config::tests::test_load_env_files_empty ... ok [INFO] [stdout] test cache::tests::test_cache_expiry ... ok [INFO] [stdout] test config::tests::test_load_env_files_skips_missing ... ok [INFO] [stdout] test failsafe::health::tests::test_health_tracker_failure ... ok [INFO] [stdout] test failsafe::health::tests::test_health_tracker_recovery ... ok [INFO] [stdout] test config::tests::test_load_env_files_sets_env_vars ... ok [INFO] [stdout] test failsafe::health::tests::test_health_tracker_success ... ok [INFO] [stdout] test failsafe::health::tests::test_latency_histogram_capacity ... ok [INFO] [stdout] test gateway::auth::tests::test_api_key_validation ... ok [INFO] [stdout] test failsafe::health::tests::test_latency_histogram ... ok [INFO] [stdout] test gateway::auth::tests::test_backend_access_control ... ok [INFO] [stdout] test gateway::auth::tests::test_bearer_token_validation ... ok [INFO] [stdout] test gateway::auth::tests::test_public_path_check ... ok [INFO] [stdout] test gateway::auth::tests::test_rate_limiting ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::build_base_tools_all_have_descriptions ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::build_base_tools_all_have_object_input_schema ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::build_initialize_result_has_correct_version ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::build_initialize_result_has_instructions ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::build_initialize_result_has_server_info ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::build_initialize_result_has_tools_capability ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::build_match_json_has_correct_fields ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::build_match_json_truncates_long_descriptions ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::build_match_json_uses_empty_string_for_none_description ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::build_meta_tools_returns_all_tools_with_stats ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::build_meta_tools_returns_base_plus_playbook_without_stats ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::build_search_response_empty_matches ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::build_search_response_structure ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::build_stats_response_custom_price ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::build_stats_response_fields ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::build_stats_response_zero_values ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::build_stats_tool_has_price_parameter ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::extract_client_version_from_valid_params ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::extract_client_version_returns_default_when_missing_key ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::extract_client_version_returns_default_when_none ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::extract_client_version_returns_default_when_not_string ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::extract_price_per_million_custom_value ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::extract_price_per_million_default_is_15 ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::extract_price_per_million_ignores_non_number ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::extract_required_str_fails_on_missing_key ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::extract_required_str_fails_on_non_string_value ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::extract_required_str_succeeds ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::extract_search_limit_default_is_10 ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::extract_search_limit_ignores_non_integer ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::extract_search_limit_respects_custom_value ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::parse_tool_arguments_accepts_stringified_nested_object ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::parse_tool_arguments_defaults_to_empty_object ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::parse_tool_arguments_parses_json_string ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::parse_tool_arguments_rejects_boolean ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::parse_tool_arguments_rejects_invalid_json_string ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::parse_tool_arguments_rejects_non_object_types ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::parse_tool_arguments_rejects_number ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::parse_tool_arguments_with_object ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::ranked_results_to_json_converts_correctly ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::ranked_results_to_json_empty_input ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::tool_does_not_match_unrelated_query ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::tool_matches_query_by_description ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::tool_matches_query_by_name ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::tool_matches_query_case_insensitive ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::tool_matches_query_with_no_description ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::wrap_tool_success_content_is_pretty_json ... ok [INFO] [stdout] test gateway::meta_mcp_helpers::tests::wrap_tool_success_produces_valid_response ... ok [INFO] [stdout] test gateway::router::tests::extract_request_id_array_returns_none ... ok [INFO] [stdout] test gateway::router::tests::extract_request_id_bool_returns_none ... ok [INFO] [stdout] test gateway::router::tests::extract_request_id_float_returns_none ... ok [INFO] [stdout] test failsafe::health::tests::test_health_metrics ... ok [INFO] [stdout] test gateway::router::tests::extract_request_id_null_returns_none ... ok [INFO] [stdout] test gateway::router::tests::extract_request_id_object_returns_none ... ok [INFO] [stdout] test gateway::router::tests::extract_request_id_positive_integer ... ok [INFO] [stdout] test gateway::router::tests::extract_request_id_string_value ... ok [INFO] [stdout] test gateway::router::tests::extract_request_id_zero ... ok [INFO] [stdout] test gateway::router::tests::extract_tools_call_params_empty_object ... ok [INFO] [stdout] test gateway::router::tests::extract_tools_call_params_full ... ok [INFO] [stdout] test gateway::router::tests::extract_tools_call_params_missing_arguments ... ok [INFO] [stdout] test gateway::router::tests::extract_tools_call_params_missing_name ... ok [INFO] [stdout] test gateway::router::tests::extract_tools_call_params_none_input ... ok [INFO] [stdout] test gateway::router::tests::notification_method_recognized ... ok [INFO] [stdout] test gateway::router::tests::parse_request_empty_object ... ok [INFO] [stdout] test cache::tests::test_ttl_boundary ... ok [INFO] [stdout] test gateway::router::tests::parse_request_initialize_method ... ok [INFO] [stdout] test gateway::router::tests::parse_request_method_is_not_string ... ok [INFO] [stdout] test gateway::router::tests::parse_request_missing_jsonrpc_field ... ok [INFO] [stdout] test gateway::router::tests::parse_request_missing_method ... ok [INFO] [stdout] test gateway::router::tests::parse_request_non_notification_without_id ... ok [INFO] [stdout] test gateway::router::tests::parse_request_notification_with_id_accepted ... ok [INFO] [stdout] test gateway::router::tests::parse_request_notification_without_id ... ok [INFO] [stdout] test gateway::router::tests::parse_request_null_jsonrpc ... ok [INFO] [stdout] test gateway::router::tests::parse_request_numeric_jsonrpc ... ok [INFO] [stdout] test gateway::router::tests::parse_request_valid_with_numeric_id ... ok [INFO] [stdout] test gateway::router::tests::parse_request_valid_with_params ... ok [INFO] [stdout] test gateway::router::tests::parse_request_valid_with_string_id ... ok [INFO] [stdout] test gateway::router::tests::parse_request_wrong_jsonrpc_version ... ok [INFO] [stdout] test gateway::router::tests::regular_method_not_notification ... ok [INFO] [stdout] test gateway::router::tests::extract_request_id_negative_integer ... ok [INFO] [stdout] test gateway::streaming::tests::test_notification_send ... ok [INFO] [stdout] test gateway::streaming::tests::test_broadcast ... ok [INFO] [stdout] test gateway::streaming::tests::test_session_creation ... ok [INFO] [stdout] test oauth::callback::tests::callback_flow_success ... ok [INFO] [stdout] test oauth::callback::tests::callback_flow_missing_code ... ok [INFO] [stdout] test oauth::callback::tests::callback_params_empty_query ... ok [INFO] [stdout] test oauth::callback::tests::callback_params_error_case ... ok [INFO] [stdout] test oauth::callback::tests::callback_params_success_case ... ok [INFO] [stdout] test oauth::callback::tests::callback_server_binds_to_random_port ... ok [INFO] [stdout] test oauth::callback::tests::callback_server_binds_to_specified_port ... ok [INFO] [stdout] test oauth::callback::tests::callback_flow_error_from_provider ... ok [INFO] [stdout] test oauth::client::tests::client_id_is_base64url_safe ... ok [INFO] [stdout] test oauth::callback::tests::callback_flow_state_mismatch ... ok [INFO] [stdout] test oauth::client::tests::client_id_generates_unique_values ... ok [INFO] [stdout] test oauth::client::tests::client_with_expired_token_returns_false ... ok [INFO] [stdout] test oauth::client::tests::new_client_has_no_valid_token ... ok [INFO] [stdout] test oauth::client::tests::pkce_verifier_is_base64url_safe ... ok [INFO] [stdout] test oauth::client::tests::state_generates_unique_values ... ok [INFO] [stdout] test oauth::client::tests::pkce_challenge_is_sha256_of_verifier ... ok [INFO] [stdout] test oauth::client::tests::pkce_generates_unique_values ... ok [INFO] [stdout] test oauth::client::tests::state_is_base64url_safe ... ok [INFO] [stdout] test oauth::client::tests::state_has_sufficient_length ... ok [INFO] [stdout] test oauth::client::tests::test_pkce_generation ... ok [INFO] [stdout] test oauth::metadata::tests::auth_metadata_scopes_from_string ... ok [INFO] [stdout] test oauth::metadata::tests::base_url_invalid_url_returns_error ... ok [INFO] [stdout] test oauth::metadata::tests::authorization_server_returns_first ... ok [INFO] [stdout] test oauth::metadata::tests::authorization_server_returns_none_when_empty ... ok [INFO] [stdout] test oauth::client::tests::client_with_valid_token_returns_true ... ok [INFO] [stdout] test oauth::metadata::tests::base_url_no_port ... ok [INFO] [stdout] test oauth::metadata::tests::base_url_strips_path_and_query ... ok [INFO] [stdout] test oauth::metadata::tests::base_url_preserves_port ... ok [INFO] [stdout] test oauth::metadata::tests::base_url_with_trailing_slash ... ok [INFO] [stdout] test oauth::metadata::tests::deserialize_auth_server_metadata_minimal ... ok [INFO] [stdout] test oauth::metadata::tests::deserialize_scopes_missing_field ... ok [INFO] [stdout] test oauth::metadata::tests::deserialize_scopes_empty_array ... ok [INFO] [stdout] test oauth::metadata::tests::deserialize_scopes_single_string ... ok [INFO] [stdout] test oauth::metadata::tests::supports_pkce_empty_methods ... ok [INFO] [stdout] test oauth::metadata::tests::supports_pkce_without_s256 ... ok [INFO] [stdout] test oauth::metadata::tests::supports_pkce_with_s256 ... ok [INFO] [stdout] test oauth::metadata::tests::test_deserialize_scopes_array ... ok [INFO] [stdout] test oauth::metadata::tests::test_base_url_extraction ... ok [INFO] [stdout] test oauth::storage::tests::from_response_calculates_expiry ... ok [INFO] [stdout] test oauth::storage::tests::from_response_preserves_custom_token_type ... ok [INFO] [stdout] test oauth::storage::tests::from_response_no_expiry_when_none ... ok [INFO] [stdout] test oauth::metadata::tests::test_deserialize_scopes_string ... ok [INFO] [stdout] test capability::executor::tests::test_substitute_string ... ok [INFO] [stdout] test oauth::storage::tests::from_response_stores_refresh_token ... ok [INFO] [stdout] test oauth::storage::tests::from_response_stores_scope ... ok [INFO] [stdout] test oauth::storage::tests::from_response_sets_default_token_type ... ok [INFO] [stdout] test oauth::storage::tests::is_expired_with_60_second_buffer ... ok [INFO] [stdout] test oauth::storage::tests::storage_delete_nonexistent_is_ok ... ok [INFO] [stdout] test oauth::metadata::tests::deserialize_auth_server_metadata_full ... ok [INFO] [stdout] test oauth::storage::tests::storage_creates_directory_if_missing ... ok [INFO] [stdout] test oauth::storage::tests::is_not_expired_beyond_buffer ... ok [INFO] [stdout] test oauth::storage::tests::storage_key_differs_for_different_inputs ... ok [INFO] [stdout] test oauth::storage::tests::storage_key_is_deterministic ... ok [INFO] [stdout] test oauth::storage::tests::storage_load_nonexistent_returns_none ... ok [INFO] [stdout] test oauth::storage::tests::storage_delete_removes_token ... ok [INFO] [stdout] test oauth::storage::tests::storage_save_load_roundtrip ... ok [INFO] [stdout] test oauth::storage::tests::time_until_expiry_expired_token ... ok [INFO] [stdout] test oauth::storage::tests::time_until_expiry_future_token ... ok [INFO] [stdout] test oauth::storage::tests::storage_overwrite_updates_token ... ok [INFO] [stdout] test oauth::storage::tests::test_token_expiry ... ok [INFO] [stdout] test oauth::storage::tests::time_until_expiry_no_expiry ... ok [INFO] [stdout] test oauth::storage::tests::test_token_no_expiry ... ok [INFO] [stdout] test playbook::engine::tests::condition_equality_match ... ok [INFO] [stdout] test playbook::engine::tests::condition_falsy_empty_array ... ok [INFO] [stdout] test oauth::storage::tests::token_info_serialization_roundtrip ... ok [INFO] [stdout] test playbook::engine::tests::condition_equality_mismatch ... ok [INFO] [stdout] test playbook::engine::tests::condition_falsy_empty_string ... ok [INFO] [stdout] test playbook::engine::tests::build_output_no_mapping_returns_all_results ... ok [INFO] [stdout] test playbook::engine::tests::condition_falsy_null ... ok [INFO] [stdout] test playbook::engine::tests::condition_length_empty_array ... ok [INFO] [stdout] test playbook::engine::tests::condition_length_greater_than ... ok [INFO] [stdout] test playbook::engine::tests::condition_truthy_array ... ok [INFO] [stdout] test playbook::engine::tests::condition_truthy_string ... ok [INFO] [stdout] test playbook::engine::tests::deserialize_minimal_playbook ... ok [INFO] [stdout] test playbook::engine::tests::engine_new_is_empty ... ok [INFO] [stdout] test playbook::engine::tests::engine_register_and_get ... ok [INFO] [stdout] test playbook::engine::tests::execute_continue_on_error ... ok [INFO] [stdout] test oauth::storage::tests::storage_key_has_expected_length ... ok [INFO] [stdout] test playbook::engine::tests::execute_output_with_fallback ... ok [INFO] [stdout] test playbook::engine::tests::deserialize_playbook_from_yaml ... ok [INFO] [stdout] test playbook::engine::tests::execute_abort_on_error ... ok [INFO] [stdout] test playbook::engine::tests::execute_playbook_not_found ... ok [INFO] [stdout] test playbook::engine::tests::extract_var_refs_dollar_at_end ... ok [INFO] [stdout] test playbook::engine::tests::execute_simple_playbook ... ok [INFO] [stdout] test playbook::engine::tests::extract_var_refs_embedded ... ok [INFO] [stdout] test playbook::engine::tests::execute_with_condition_skip ... ok [INFO] [stdout] test playbook::engine::tests::extract_var_refs_no_vars ... ok [INFO] [stdout] test playbook::engine::tests::extract_var_refs_simple ... ok [INFO] [stdout] test playbook::engine::tests::falsy_values ... ok [INFO] [stdout] test playbook::engine::tests::extract_var_refs_with_brackets ... ok [INFO] [stdout] test playbook::engine::tests::interpolate_array_recursion ... ok [INFO] [stdout] test playbook::engine::tests::execute_with_variable_interpolation ... ok [INFO] [stdout] test playbook::engine::tests::interpolate_non_string_passthrough ... ok [INFO] [stdout] test playbook::engine::tests::interpolate_preserves_number_type ... ok [INFO] [stdout] test playbook::engine::tests::interpolate_object_recursion ... ok [INFO] [stdout] test playbook::engine::tests::interpolate_embedded_reference ... ok [INFO] [stdout] test playbook::engine::tests::interpolate_pure_reference ... ok [INFO] [stdout] test playbook::engine::tests::resolve_var_inputs ... ok [INFO] [stdout] test playbook::engine::tests::truthy_values ... ok [INFO] [stdout] test playbook::engine::tests::resolve_var_missing_field_returns_null ... ok [INFO] [stdout] test playbook::engine::tests::resolve_var_missing_step_returns_null ... ok [INFO] [stdout] test ranking::tests::test_json_to_search_result ... ok [INFO] [stdout] test ranking::tests::test_clear ... ok [INFO] [stdout] test ranking::tests::test_default_impl ... ok [INFO] [stdout] test ranking::tests::test_json_to_search_result_missing_fields ... ok [INFO] [stdout] test ranking::tests::test_ranking_preserves_unmatched ... ok [INFO] [stdout] test ranking::tests::test_ranking_empty_results ... ok [INFO] [stdout] test ranking::tests::test_ranking_with_text_relevance ... ok [INFO] [stdout] test ranking::tests::test_record_and_retrieve_usage ... ok [INFO] [stdout] test ranking::tests::test_ranking_with_usage_boost ... ok [INFO] [stdout] test ranking::tests::test_save_and_load ... ok [INFO] [stdout] test registry::tests::test_registry_entry_serialization ... ok [INFO] [stdout] test registry::tests::test_registry_find_exact ... ok [INFO] [stdout] test registry::tests::test_registry_requires_key_flag ... ok [INFO] [stdout] test playbook::engine::tests::resolve_var_step_name_only ... ok [INFO] [stdout] test registry::tests::test_registry_search ... ok [INFO] [stdout] test playbook::engine::tests::resolve_var_step_result ... ok [INFO] [stdout] test registry::tests::test_registry_search_case_insensitive ... ok [INFO] [stdout] test registry::tests::test_registry_search_empty_query ... ok [INFO] [stdout] test secrets::tests::test_default_impl ... ok [INFO] [stdout] test secrets::tests::test_clear_cache ... ok [INFO] [stdout] test discovery::process_scanner::tests::test_extract_port_from_command ... ok [INFO] [stdout] test capability::executor::tests::test_substitute_params_skips_unresolved_placeholders ... ok [INFO] [stdout] test secrets::tests::test_env_pattern_in_json ... ok [INFO] [stdout] test secrets::tests::test_mixed_patterns ... ok [INFO] [stdout] test cache::tests::test_build_key ... ok [INFO] [stdout] test secrets::tests::test_multiple_same_pattern ... ok [INFO] [stdout] test stats::tests::test_cache_hit_tracking ... ok [INFO] [stdout] test stats::tests::test_cost_savings ... ok [INFO] [stdout] test stats::tests::test_default_impl ... ok [INFO] [stdout] test stats::tests::test_no_savings_with_few_tools ... ok [INFO] [stdout] test stats::tests::test_record_invocation ... ok [INFO] [stdout] test stats::tests::test_search_tracking ... ok [INFO] [stdout] test secrets::tests::test_resolve_missing_env_var ... ok [INFO] [stdout] test stats::tests::test_snapshot ... ok [INFO] [stdout] test stats::tests::test_snapshot_estimated_savings ... ok [INFO] [stdout] test registry::tests::test_build_index_from_capabilities ... ok [INFO] [stdout] test stats::tests::test_top_tools ... ok [INFO] [stdout] test stats::tests::test_top_tools_sorting ... ok [INFO] [stdout] test stats::tests::test_zero_invocations_cache_rate ... ok [INFO] [stdout] test transform::pipeline::tests::default_config_produces_noop_pipeline ... ok [INFO] [stdout] test transform::pipeline::tests::deserialize_empty_yaml_produces_default ... ok [INFO] [stdout] test transform::pipeline::tests::deserialize_transform_config_from_yaml ... ok [INFO] [stdout] test transform::pipeline::tests::flatten_deeply_nested ... ok [INFO] [stdout] test transform::pipeline::tests::flatten_empty_object ... ok [INFO] [stdout] test transform::pipeline::tests::format_flat_scalar ... ok [INFO] [stdout] test transform::pipeline::tests::format_flat_simple ... ok [INFO] [stdout] test transform::pipeline::tests::format_flat_with_array ... ok [INFO] [stdout] test transform::pipeline::tests::format_nested_is_noop ... ok [INFO] [stdout] test secrets::tests::test_resolve_env_var ... ok [INFO] [stdout] test transform::pipeline::tests::format_template_none_returns_input ... ok [INFO] [stdout] test transform::pipeline::tests::leaf_key_dotted ... ok [INFO] [stdout] test transform::pipeline::tests::leaf_key_simple ... ok [INFO] [stdout] test registry::tests::test_registry_capabilities_metadata ... ok [INFO] [stdout] test transform::pipeline::tests::leaf_key_wildcard_only ... ok [INFO] [stdout] test transform::pipeline::tests::noop_pipeline_returns_input_unchanged ... ok [INFO] [stdout] test transform::pipeline::tests::leaf_key_with_wildcard ... ok [INFO] [stdout] test transform::pipeline::tests::parse_array_index ... ok [INFO] [stdout] test transform::pipeline::tests::format_template_nested_path ... ok [INFO] [stdout] test transform::pipeline::tests::parse_dotted_path ... ok [INFO] [stdout] test transform::pipeline::tests::parse_empty_path ... ok [INFO] [stdout] test transform::pipeline::tests::parse_simple_key ... ok [INFO] [stdout] test transform::pipeline::tests::pipeline_with_projections_is_not_noop ... ok [INFO] [stdout] test transform::pipeline::tests::parse_nested_wildcard ... ok [INFO] [stdout] test transform::pipeline::tests::parse_array_wildcard ... ok [INFO] [stdout] test transform::pipeline::tests::project_missing_field_is_omitted ... ok [INFO] [stdout] test transform::pipeline::tests::project_keeps_only_listed_fields ... ok [INFO] [stdout] test secrets::tests::test_resolve_multiple_patterns ... ok [INFO] [stdout] test transform::pipeline::tests::project_array_wildcard ... ok [INFO] [stdout] test transform::pipeline::tests::project_nested_paths ... ok [INFO] [stdout] test transform::pipeline::tests::full_pipeline_project_rename_redact ... ok [INFO] [stdout] test transform::pipeline::tests::redact_invalid_regex_skipped ... ok [INFO] [stdout] test transform::pipeline::tests::redact_multiple_patterns ... ok [INFO] [stdout] test transform::pipeline::tests::redact_non_string_values_unchanged ... ok [INFO] [stdout] test secrets::tests::test_resolve_no_patterns ... ok [INFO] [stdout] test transform::pipeline::tests::redact_recursive_into_arrays ... ok [INFO] [stdout] test transform::pipeline::tests::redact_email_in_string ... ok [INFO] [stdout] test transform::pipeline::tests::rename_dotted_path_uses_leaf ... ok [INFO] [stdout] test transform::pipeline::tests::rename_missing_key_is_noop ... ok [INFO] [stdout] test transform::pipeline::tests::rename_flat_keys ... ok [INFO] [stdout] test transform::pipeline::tests::rename_non_object_value_unchanged ... ok [INFO] [stdout] test transform::pipeline::tests::format_template_basic ... ok [INFO] [stdout] test transform::pipeline::tests::format_template_missing_var_renders_empty ... ok [INFO] [stdout] test transform::pipeline::tests::resolve_array_index ... ok [INFO] [stdout] test transform::pipeline::tests::resolve_array_wildcard ... ok [INFO] [stdout] test transform::pipeline::tests::resolve_nested_key ... ok [INFO] [stdout] test transform::pipeline::tests::resolve_out_of_bounds_index_returns_empty ... ok [INFO] [stdout] test transform::pipeline::tests::resolve_path_single_missing ... ok [INFO] [stdout] test transform::pipeline::tests::resolve_path_single_multiple_returns_array ... ok [INFO] [stdout] test transform::pipeline::tests::resolve_path_single_scalar ... ok [INFO] [stdout] test transform::pipeline::tests::resolve_missing_key_returns_empty ... ok [INFO] [stdout] test transport::http::tests::connected_state_toggles ... ok [INFO] [stdout] test transport::http::tests::get_message_url_returns_base_when_not_set ... ok [INFO] [stdout] test transport::http::tests::get_message_url_returns_set_url ... ok [INFO] [stdout] test transport::http::tests::initially_not_connected ... ok [INFO] [stdout] test transport::http::tests::new_creates_transport_with_defaults ... ok [INFO] [stdout] test transport::http::tests::new_with_custom_headers ... ok [INFO] [stdout] test transport::http::tests::new_with_oauth_and_protocol_version ... ok [INFO] [stdout] test transport::http::tests::next_id_increments ... ok [INFO] [stdout] test transport::http::tests::parse_supported_versions_case_insensitive ... ok [INFO] [stdout] test transport::http::tests::parse_supported_versions_empty_after_colon ... ok [INFO] [stdout] test transform::pipeline::tests::resolve_simple_key ... ok [INFO] [stdout] test transport::http::tests::parse_supported_versions_from_paren_format ... ok [INFO] [stdout] test transport::http::tests::parse_supported_versions_from_supported_colon ... ok [INFO] [stdout] test transport::http::tests::parse_supported_versions_returns_none_for_no_match ... ok [INFO] [stdout] test transport::http::tests::resolve_message_url_absolute_http ... ok [INFO] [stdout] test transport::http::tests::resolve_message_url_absolute_https ... ok [INFO] [stdout] test transport::http::tests::resolve_message_url_relative_path ... ok [INFO] [stdout] test transport::http::tests::resolve_message_url_relative_sibling ... ok [INFO] [stdout] test transport::stdio::tests::connected_flag_toggles ... ok [INFO] [stdout] test transport::stdio::tests::handle_response_error_response ... ok [INFO] [stdout] test transport::stdio::tests::handle_response_invalid_json_returns_error ... ok [INFO] [stdout] test transport::stdio::tests::handle_response_no_id_notification ... ok [INFO] [stdout] test transport::stdio::tests::handle_response_no_matching_pending ... ok [INFO] [stdout] test transport::stdio::tests::handle_response_routes_to_pending_request ... ok [INFO] [stdout] test transport::stdio::tests::handle_response_string_id ... ok [INFO] [stdout] test transport::stdio::tests::initially_not_connected ... ok [INFO] [stdout] test transport::stdio::tests::new_stores_command_and_defaults ... ok [INFO] [stdout] test transport::stdio::tests::new_with_env_and_cwd ... ok [INFO] [stdout] test transport::stdio::tests::next_id_increments_sequentially ... ok [INFO] [stdout] test validator::fix::tests::apply_fixes_renames_tool ... ok [INFO] [stdout] test validator::fix::tests::apply_fixes_returns_none_for_empty ... ok [INFO] [stdout] test validator::fix::tests::extract_property_name_from_issue ... ok [INFO] [stdout] test validator::fix::tests::extract_property_name_none_on_no_quotes ... ok [INFO] [stdout] test validator::fix::tests::suggest_fixes_for_missing_type ... ok [INFO] [stdout] test validator::fix::tests::suggest_fixes_for_naming ... ok [INFO] [stdout] test validator::fix::tests::suggest_fixes_skips_passed_results ... ok [INFO] [stdout] test validator::fix::tests::to_snake_case_already_snake ... ok [INFO] [stdout] test validator::fix::tests::to_snake_case_from_camel ... ok [INFO] [stdout] test validator::fix::tests::to_snake_case_from_kebab ... ok [INFO] [stdout] test validator::report::tests::test_grade_calculation ... ok [INFO] [stdout] test validator::report::tests::test_report_from_results ... ok [INFO] [stdout] test validator::report::tests::test_severity_score ... ok [INFO] [stdout] test validator::report::tests::test_validation_result_builder ... ok [INFO] [stdout] test validator::rules::tests::test_documentation_quality_good ... ok [INFO] [stdout] test validator::rules::tests::test_flat_arguments_rule_fail ... ok [INFO] [stdout] test validator::rules::tests::test_flat_arguments_rule_pass ... ok [INFO] [stdout] test validator::rules::tests::test_naming_discovery_bad ... ok [INFO] [stdout] test validator::rules::tests::test_naming_discovery_good ... ok [INFO] [stdout] test validator::rules::tests::test_outcome_oriented_rule_fail ... ok [INFO] [stdout] test validator::rules::tests::test_outcome_oriented_rule_pass ... ok [INFO] [stdout] test validator::rules::tests::test_pagination_rule_list_operation ... ok [INFO] [stdout] test validator::rules_schema::tests::conflict_detection_cross_tool_duplicate_names ... ok [INFO] [stdout] test validator::rules_schema::tests::conflict_detection_pass_specific_name ... ok [INFO] [stdout] test validator::rules_schema::tests::conflict_detection_cross_tool_no_duplicates ... ok [INFO] [stdout] test validator::rules_schema::tests::naming_consistency_cross_tool_mixed_conventions ... ok [INFO] [stdout] test validator::rules_schema::tests::naming_consistency_pass_snake_case ... ok [INFO] [stdout] test validator::rules_schema::tests::naming_consistency_warn_kebab_case ... ok [INFO] [stdout] test validator::rules_schema::tests::naming_consistency_warn_mixed_conventions ... ok [INFO] [stdout] test validator::rules_schema::tests::schema_completeness_fail_missing_description ... ok [INFO] [stdout] test validator::rules_schema::tests::schema_completeness_fail_missing_type ... ok [INFO] [stdout] test validator::rules_schema::tests::schema_completeness_fail_no_properties ... ok [INFO] [stdout] test validator::rules_schema::tests::conflict_detection_warn_generic_name ... ok [INFO] [stdout] test validator::rules_schema::tests::schema_completeness_fail_no_required_array ... ok [INFO] [stdout] test validator::rules_schema::tests::naming_consistency_cross_tool_all_snake_case ... ok [INFO] [stdout] test validator::rules_schema::tests::schema_completeness_pass_all_properties_typed_and_described ... ok [INFO] [stdout] test validator::sarif::tests::sarif_multi_aggregates_files ... ok [INFO] [stdout] test validator::sarif::tests::sarif_report_has_correct_version ... ok [INFO] [stdout] test validator::sarif::tests::sarif_report_includes_only_failures ... ok [INFO] [stdout] test validator::sarif::tests::sarif_result_has_file_location ... ok [INFO] [stdout] test validator::sarif::tests::sarif_rule_descriptors_are_unique ... ok [INFO] [stdout] test validator::sarif::tests::sarif_serializes_to_valid_json ... ok [INFO] [stdout] test validator::sarif::tests::sarif_severity_mapping ... ok [INFO] [stdout] test validator::tests::test_bad_tool_naming_crud ... ok [INFO] [stdout] test validator::tests::test_good_tool_naming ... ok [INFO] [stdout] test validator::tests::test_validate_multiple_tools ... ok [INFO] [stdout] test validator::tests::test_validate_single_tool ... ok [INFO] [stdout] test validator::tests::test_validator_creation ... ok [INFO] [stdout] test transform::pipeline::tests::redact_ssn_pattern ... ok [INFO] [stdout] test transform::pipeline::tests::render_template_boolean_value ... ok [INFO] [stdout] test transform::pipeline::tests::render_template_numeric_value ... ok [INFO] [stdout] test transform::pipeline::tests::render_template_no_placeholders ... ok [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/mcp_gateway-02d67d8fe2c894a1) [INFO] [stdout] [INFO] [stdout] test result: ok. 399 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.34s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 15 tests [INFO] [stdout] test tests::apply_cli_overrides_host_override ... ok [INFO] [stdout] test tests::apply_cli_overrides_no_meta_mcp_false_keeps_enabled ... ok [INFO] [stdout] test tests::apply_cli_overrides_no_overrides_preserves_defaults ... ok [INFO] [stdout] test tests::apply_cli_overrides_port_override ... ok [INFO] [stdout] test tests::apply_cli_overrides_preserves_other_config_fields ... ok [INFO] [stdout] test tests::default_config_has_expected_defaults ... ok [INFO] [stdout] test tests::apply_cli_overrides_host_empty_string ... ok [INFO] [stdout] test tests::init_command_custom_output_path ... ok [INFO] [stdout] test tests::init_command_refuses_to_overwrite_existing ... ok [INFO] [stdout] test tests::apply_cli_overrides_disable_meta_mcp ... ok [INFO] [stdout] test tests::apply_cli_overrides_port_zero_is_valid ... ok [INFO] [stdout] test tests::init_command_with_examples_includes_capabilities ... ok [INFO] [stdout] test tests::init_command_without_examples_omits_sample_backends ... ok [INFO] [stdout] test tests::init_command_creates_config_file ... ok [INFO] [stdout] test tests::apply_cli_overrides_all_at_once ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.10s [INFO] [stdout] [INFO] [stderr] Running tests/auth_tests.rs (/opt/rustwide/target/debug/deps/auth_tests-1f00a9bda311b2d8) [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stderr] Running tests/backend_tests.rs (/opt/rustwide/target/debug/deps/backend_tests-b739054230bd313d) [INFO] [stdout] test test_bearer_token_auth ... ok [INFO] [stdout] test test_auth_config_resolution ... ok [INFO] [stdout] test test_disabled_auth ... ok [INFO] [stdout] test test_rate_limiting ... ok [INFO] [stdout] test test_public_paths ... ok [INFO] [stdout] test test_api_key_auth_with_restrictions ... ok [INFO] [stdout] test test_client_backend_access_patterns ... ok [INFO] [stdout] test test_auto_generated_token ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test test_backend_transport_type ... ok [INFO] [stdout] test test_backend_registry ... ok [INFO] [stdout] test test_backend_creation ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/discovery_tests.rs (/opt/rustwide/target/debug/deps/discovery_tests-faed6cd2a0df79c7) [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test test_discover_from_environment ... ok [INFO] [stdout] test test_discover_mcp_config_dir ... ok [INFO] [stdout] test test_discover_claude_desktop_config ... ok [INFO] [stdout] test test_discover_vscode_config ... ok [INFO] [stdout] test test_discovered_server_to_backend_config ... ok [INFO] [stderr] Running tests/integration.rs (/opt/rustwide/target/debug/deps/integration-5383bc76ee138a7b) [INFO] [stdout] test test_auto_discovery_initialization ... ok [INFO] [stdout] test test_discover_from_process ... ok [INFO] [stdout] test test_deduplication ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 12 tests [INFO] [stdout] test test_circuit_breaker_disabled ... ok [INFO] [stdout] test test_config_defaults ... ok [INFO] [stdout] test test_circuit_breaker_opens_after_failures ... ok [INFO] [stdout] test test_circuit_breaker_starts_closed ... ok [INFO] [stdout] test test_json_rpc_request_serialization ... ok [INFO] [stdout] test test_json_rpc_response_error ... ok [INFO] [stdout] test test_protocol_version ... ok [INFO] [stdout] test test_version_negotiation ... ok [INFO] [stdout] test test_request_id_display ... ok [INFO] [stdout] test test_json_rpc_response_success ... ok [INFO] [stdout] test test_retry_policy_disabled ... ok [INFO] [stdout] test test_retry_policy_retries_on_failure ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stderr] Running tests/integration_tests.rs (/opt/rustwide/target/debug/deps/integration_tests-10784c593383f456) [INFO] [stdout] [INFO] [stdout] running 6 tests [INFO] [stdout] test test_cap_registry_list ... ignored [INFO] [stdout] test test_gateway_get_stats ... ignored [INFO] [stdout] test test_gateway_integration_flow ... ignored [INFO] [stdout] test test_gateway_list_servers ... ignored [INFO] [stdout] test test_gateway_search_tools ... ignored [INFO] [stdout] test test_invoke_caching ... ignored [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Doc-tests mcp_gateway [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test src/capability/openapi.rs - capability::openapi (line 8) ... ignored [INFO] [stdout] test src/secrets.rs - secrets::SecretResolver::resolve (line 35) - compile ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] all doctests ran in 1.50s; merged doctests compilation took 1.48s [INFO] running `Command { std: "docker" "inspect" "fb176e48625dbc6a254bb03a7826af617d70ed247c3f5e0ac9b6b4a916536c53", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "fb176e48625dbc6a254bb03a7826af617d70ed247c3f5e0ac9b6b4a916536c53", kill_on_drop: false }` [INFO] [stdout] fb176e48625dbc6a254bb03a7826af617d70ed247c3f5e0ac9b6b4a916536c53