[INFO] fetching crate onshape-mcp-core 0.4.0... [INFO] testing onshape-mcp-core-0.4.0 against master#562dee4820c458d823175268e41601d4c060588a for pr-154210-2 [INFO] extracting crate onshape-mcp-core 0.4.0 into /workspace/builds/worker-0-tc1/source [INFO] started tweaking crates.io crate onshape-mcp-core 0.4.0 [INFO] finished tweaking crates.io crate onshape-mcp-core 0.4.0 [INFO] tweaked toml for crates.io crate onshape-mcp-core 0.4.0 written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate onshape-mcp-core 0.4.0 on toolchain 562dee4820c458d823175268e41601d4c060588a [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate onshape-mcp-core 0.4.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" "+562dee4820c458d823175268e41601d4c060588a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded toml_writer v1.1.1+spec-1.1.0 [INFO] [stderr] Downloaded serde_spanned v1.1.1 [INFO] [stderr] Downloaded schemars_derive v1.2.1 [INFO] [stderr] Downloaded pulldown-cmark-escape v0.11.0 [INFO] [stderr] Downloaded pastey v0.2.1 [INFO] [stderr] Downloaded libredox v0.1.12 [INFO] [stderr] Downloaded rmcp-macros v1.3.0 [INFO] [stderr] Downloaded onshape-client-core v0.4.0 [INFO] [stderr] Downloaded getopts v0.2.24 [INFO] [stderr] Downloaded toml v1.1.2+spec-1.1.0 [INFO] [stderr] Downloaded onshape-mcp-resources v0.4.0 [INFO] [stderr] Downloaded zmij v1.0.19 [INFO] [stderr] Downloaded pulldown-cmark v0.13.3 [INFO] [stderr] Downloaded winnow v1.0.0 [INFO] [stderr] Downloaded rmcp v1.3.0 [INFO] [stderr] Downloaded tokio v1.51.0 [INFO] [stderr] Downloaded libc v0.2.184 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 7a2a9d5fbc0ec55def22bf2ea44a244e7602915fc5fdf16c306a066bd7cb77a4 [INFO] running `Command { std: "docker" "start" "-a" "7a2a9d5fbc0ec55def22bf2ea44a244e7602915fc5fdf16c306a066bd7cb77a4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "7a2a9d5fbc0ec55def22bf2ea44a244e7602915fc5fdf16c306a066bd7cb77a4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "7a2a9d5fbc0ec55def22bf2ea44a244e7602915fc5fdf16c306a066bd7cb77a4", kill_on_drop: false }` [INFO] [stdout] 7a2a9d5fbc0ec55def22bf2ea44a244e7602915fc5fdf16c306a066bd7cb77a4 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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" "+562dee4820c458d823175268e41601d4c060588a" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 02e1de5be58540b49b836b028da64b30c38e969c4dce3523ea0ef09a3d1f1b91 [INFO] running `Command { std: "docker" "start" "-a" "02e1de5be58540b49b836b028da64b30c38e969c4dce3523ea0ef09a3d1f1b91", kill_on_drop: false }` [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling libc v0.2.184 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling zmij v1.0.19 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling quote v1.0.45 [INFO] [stderr] Compiling ref-cast v1.0.25 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling futures-channel v0.3.31 [INFO] [stderr] Compiling pulldown-cmark v0.13.3 [INFO] [stderr] Compiling unicode-width v0.2.2 [INFO] [stderr] Compiling dyn-clone v1.0.20 [INFO] [stderr] Compiling pulldown-cmark-escape v0.11.0 [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling percent-encoding v2.3.2 [INFO] [stderr] Compiling rmcp v1.3.0 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling getopts v0.2.24 [INFO] [stderr] Compiling form_urlencoded v1.2.2 [INFO] [stderr] Compiling option-ext v0.2.0 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling zeroize v1.8.2 [INFO] [stderr] Compiling pastey v0.2.1 [INFO] [stderr] Compiling onshape-mcp-resources v0.4.0 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling dirs-sys v0.5.0 [INFO] [stderr] Compiling dirs v6.0.0 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling serde_path_to_error v0.1.20 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling serde_derive_internals v0.29.1 [INFO] [stderr] Compiling darling_core v0.23.0 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling ref-cast-impl v1.0.25 [INFO] [stderr] Compiling schemars_derive v1.2.1 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling tokio-macros v2.7.0 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling tokio v1.51.0 [INFO] [stderr] Compiling futures-util v0.3.31 [INFO] [stderr] Compiling zerofrom v0.1.6 [INFO] [stderr] Compiling yoke v0.8.1 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling zerovec v0.11.5 [INFO] [stderr] Compiling zerotrie v0.2.3 [INFO] [stderr] Compiling darling_macro v0.23.0 [INFO] [stderr] Compiling tinystr v0.8.2 [INFO] [stderr] Compiling potential_utf v0.1.4 [INFO] [stderr] Compiling icu_collections v2.1.1 [INFO] [stderr] Compiling icu_locale_core v2.1.1 [INFO] [stderr] Compiling darling v0.23.0 [INFO] [stderr] Compiling rmcp-macros v1.3.0 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling secrecy v0.10.3 [INFO] [stderr] Compiling icu_provider v2.1.1 [INFO] [stderr] Compiling icu_normalizer v2.1.1 [INFO] [stderr] Compiling icu_properties v2.1.2 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling futures-executor v0.3.31 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling schemars v1.2.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling futures v0.3.31 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling oauth2 v5.0.0 [INFO] [stderr] Compiling onshape-client-core v0.4.0 [INFO] [stderr] Compiling onshape-mcp-core v0.4.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 41.59s [INFO] running `Command { std: "docker" "inspect" "02e1de5be58540b49b836b028da64b30c38e969c4dce3523ea0ef09a3d1f1b91", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "02e1de5be58540b49b836b028da64b30c38e969c4dce3523ea0ef09a3d1f1b91", kill_on_drop: false }` [INFO] [stdout] 02e1de5be58540b49b836b028da64b30c38e969c4dce3523ea0ef09a3d1f1b91 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 901f730cf194671f4fe240add99fcb435dc8d28fab03dd82d0a962ab50a8ac55 [INFO] running `Command { std: "docker" "start" "-a" "901f730cf194671f4fe240add99fcb435dc8d28fab03dd82d0a962ab50a8ac55", kill_on_drop: false }` [INFO] [stderr] Compiling winnow v1.0.0 [INFO] [stderr] Compiling toml_datetime v1.1.1+spec-1.1.0 [INFO] [stderr] Compiling serde_spanned v1.1.1 [INFO] [stderr] Compiling toml_writer v1.1.1+spec-1.1.0 [INFO] [stderr] Compiling toml_parser v1.1.2+spec-1.1.0 [INFO] [stderr] Compiling toml v1.1.2+spec-1.1.0 [INFO] [stderr] Compiling onshape-mcp-core v0.4.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 8.09s [INFO] running `Command { std: "docker" "inspect" "901f730cf194671f4fe240add99fcb435dc8d28fab03dd82d0a962ab50a8ac55", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "901f730cf194671f4fe240add99fcb435dc8d28fab03dd82d0a962ab50a8ac55", kill_on_drop: false }` [INFO] [stdout] 901f730cf194671f4fe240add99fcb435dc8d28fab03dd82d0a962ab50a8ac55 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 38de10fa23a3be8768a5ea1463a8cfb218ac607a9790e2148addf5f402f366b0 [INFO] running `Command { std: "docker" "start" "-a" "38de10fa23a3be8768a5ea1463a8cfb218ac607a9790e2148addf5f402f366b0", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.17s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/onshape_mcp_core-491c7a67b91d276b) [INFO] [stdout] [INFO] [stdout] running 256 tests [INFO] [stdout] test config::tests::allowed_users_csv_empty_string ... ok [INFO] [stdout] test config::tests::allowed_users_csv_rejects_bare_colon ... ok [INFO] [stdout] test config::tests::allowed_users_csv_rejects_empty_id_with_name ... ok [INFO] [stdout] test config::tests::allowed_users_csv_mixed ... ok [INFO] [stdout] test config::tests::allowed_users_csv_rejects_whitespace_colon ... ok [INFO] [stdout] test config::tests::allowed_users_csv_empty_name_becomes_none ... ok [INFO] [stdout] test config::tests::allowed_users_csv_single_entry ... ok [INFO] [stdout] test config::tests::allowed_users_csv_skips_empty_id_among_valid ... ok [INFO] [stdout] test config::tests::allowed_users_csv_trailing_comma ... ok [INFO] [stdout] test config::tests::allowed_users_csv_with_names ... ok [INFO] [stdout] test config::tests::allowed_users_csv_with_whitespace ... ok [INFO] [stdout] test config::tests::allowed_users_csv_without_names ... ok [INFO] [stdout] test config::tests::auto_basic_wins_over_oauth_pending ... ok [INFO] [stdout] test config::tests::auto_partial_basic_falls_through_to_not_configured ... ok [INFO] [stdout] test config::tests::auto_partial_oauth_falls_through_to_not_configured ... ok [INFO] [stdout] test config::tests::auto_proxy_with_tokens_returns_oauth_ready ... ok [INFO] [stdout] test config::tests::auto_proxy_without_tokens_returns_pending ... ok [INFO] [stdout] test config::tests::auto_with_basic_keys_returns_basic ... ok [INFO] [stdout] test config::tests::auto_with_nothing_returns_not_configured ... ok [INFO] [stdout] test config::tests::auto_with_oauth_no_tokens_returns_pending ... ok [INFO] [stdout] test config::tests::auto_with_oauth_tokens_returns_oauth_ready ... ok [INFO] [stdout] test config::tests::basic_missing_access_key_reports_it ... ok [INFO] [stdout] test config::tests::basic_missing_secret_key_reports_it ... ok [INFO] [stdout] test config::tests::basic_with_keys_returns_basic ... ok [INFO] [stdout] test config::tests::clamp_check_interval_above_minimum_unchanged ... ok [INFO] [stdout] test config::tests::clamp_check_interval_at_minimum_unchanged ... ok [INFO] [stdout] test config::tests::clamp_check_interval_below_minimum ... ok [INFO] [stdout] test config::tests::clamp_check_interval_just_below_minimum ... ok [INFO] [stdout] test config::tests::default_api_config ... ok [INFO] [stdout] test config::tests::default_auth_config ... ok [INFO] [stdout] test config::tests::auto_oauth_wins_over_basic_when_tokens_present ... ok [INFO] [stdout] test config::tests::default_http_transport_config ... ok [INFO] [stdout] test config::tests::deserialize_api_config_defaults ... ok [INFO] [stdout] test config::tests::deserialize_api_config_timeout_integer ... ok [INFO] [stdout] test config::tests::deserialize_api_config_timeout_minutes ... ok [INFO] [stdout] test config::tests::basic_without_keys_returns_not_configured ... ok [INFO] [stdout] test config::tests::deserialize_api_config_with_timeout ... ok [INFO] [stdout] test config::tests::deserialize_auth_config_oauth_defaults ... ok [INFO] [stdout] test config::tests::deserialize_app_config_with_auth_section ... ok [INFO] [stdout] test config::tests::deserialize_app_config_with_http_section ... ok [INFO] [stdout] test config::tests::deserialize_app_config_empty ... ok [INFO] [stdout] test config::tests::deserialize_app_config_with_api_section ... ok [INFO] [stdout] test config::tests::deserialize_http_transport_config_defaults ... ok [INFO] [stdout] test config::tests::deserialize_http_transport_config_allowed_users_toml_array ... ok [INFO] [stdout] test config::tests::deserialize_auth_config_defaults ... ok [INFO] [stdout] test config::tests::deserialize_http_transport_config_full ... ok [INFO] [stdout] test config::tests::deserialize_auth_config_integer_interval ... ok [INFO] [stdout] test config::tests::deserialize_auth_config_from_toml ... ok [INFO] [stdout] test config::tests::deserialize_auth_config_invalid_method_fails ... ok [INFO] [stdout] test config::tests::deserialize_auth_config_method_auto ... ok [INFO] [stdout] test config::tests::deserialize_auth_config_method_basic ... ok [INFO] [stdout] test config::tests::deserialize_auth_config_method_oauth ... ok [INFO] [stdout] test config::tests::allowed_users_csv_whitespace_only ... ok [INFO] [stdout] test config::tests::deserialize_negative_integer_interval_fails ... ok [INFO] [stdout] test config::tests::inventory_from_config_detects_proxy_url_in_config ... ok [INFO] [stdout] test config::tests::inventory_from_config_detects_proxy_url_in_token_file ... ok [INFO] [stdout] test config::tests::inventory_from_config_no_proxy_url_anywhere ... ok [INFO] [stdout] test config::tests::inventory_from_config_with_basic_keys ... ok [INFO] [stdout] test config::tests::inventory_from_config_with_oauth_creds ... ok [INFO] [stdout] test config::tests::oauth_missing_client_id_reports_it ... ok [INFO] [stdout] test config::tests::oauth_missing_client_secret_reports_it ... ok [INFO] [stdout] test config::tests::oauth_missing_client_secret_with_proxy_url_succeeds ... ok [INFO] [stdout] test config::tests::oauth_proxy_with_tokens_returns_ready ... ok [INFO] [stdout] test config::tests::oauth_proxy_without_tokens_returns_pending ... ok [INFO] [stdout] test config::tests::oauth_with_tokens_returns_ready ... ok [INFO] [stdout] test config::tests::oauth_without_client_creds_returns_not_configured ... ok [INFO] [stdout] test config::tests::oauth_without_tokens_returns_pending ... ok [INFO] [stdout] test config::tests::parse_duration_empty_fails ... ok [INFO] [stdout] test config::tests::parse_duration_hours ... ok [INFO] [stdout] test config::tests::parse_duration_invalid_suffix_fails ... ok [INFO] [stdout] test config::tests::parse_duration_minutes ... ok [INFO] [stdout] test config::tests::parse_duration_not_a_number_fails ... ok [INFO] [stdout] test config::tests::parse_duration_overflow_fails ... ok [INFO] [stdout] test config::tests::parse_duration_seconds_integer ... ok [INFO] [stdout] test config::tests::parse_duration_seconds_suffix ... ok [INFO] [stdout] test config::tests::proxy_url_without_client_secret_resolves_to_oauth ... ok [INFO] [stdout] test openapi::tests::build_request_json_endpoint_still_produces_json_body ... ok [INFO] [stdout] test openapi::tests::build_request_missing_required_path_param ... ok [INFO] [stdout] test openapi::tests::build_request_multipart_invalid_base64_returns_error ... ok [INFO] [stdout] test openapi::tests::build_request_multipart_no_body_passes_through_as_none ... ok [INFO] [stdout] test openapi::tests::build_request_multipart_non_object_body_returns_error ... ok [INFO] [stdout] test openapi::tests::build_request_multipart_non_string_binary_field_returns_error ... ok [INFO] [stdout] test openapi::tests::build_request_multipart_null_fields_are_skipped ... ok [INFO] [stdout] test openapi::tests::build_request_multipart_produces_multipart_body ... ok [INFO] [stdout] test openapi::tests::build_request_with_path_params ... ok [INFO] [stdout] test openapi::tests::build_request_with_query_params ... ok [INFO] [stdout] test openapi::tests::explain_annotates_discriminator_refs_in_array_items ... ok [INFO] [stdout] test openapi::tests::explain_annotates_discriminator_refs_in_request_body ... ok [INFO] [stdout] test openapi::tests::explain_does_not_annotate_non_discriminator_refs ... ok [INFO] [stdout] test openapi::tests::find_binary_fields_from_schema ... ok [INFO] [stdout] test openapi::tests::explain_existing_endpoint ... ok [INFO] [stdout] test openapi::tests::explain_nonexistent_endpoint ... ok [INFO] [stdout] test openapi::tests::find_binary_fields_none_schema_returns_empty ... ok [INFO] [stdout] test openapi::tests::invalid_json_returns_error ... ok [INFO] [stdout] test openapi::tests::json_value_to_text_conversions ... ok [INFO] [stdout] test openapi::tests::explain_endpoint_with_request_body ... ok [INFO] [stdout] test openapi::tests::lookup_schema_merges_parent_allof_inline_properties ... ok [INFO] [stdout] test openapi::tests::lookup_schema_non_subtype_has_own_properties ... ok [INFO] [stdout] test openapi::tests::lookup_schema_parent_type_has_subtypes ... ok [INFO] [stdout] test openapi::tests::build_request_with_body ... ok [INFO] [stdout] test openapi::tests::lookup_schema_subtype_with_discriminator_has_subtypes ... ok [INFO] [stdout] test openapi::tests::missing_paths_returns_error ... ok [INFO] [stdout] test openapi::tests::parse_spec ... ok [INFO] [stdout] test openapi::tests::lookup_schema_subtype_merges_parent_properties ... ok [INFO] [stdout] test tests::from_resolved_basic ... ok [INFO] [stdout] test tests::from_resolved_not_configured_serializes ... ok [INFO] [stdout] test tests::from_resolved_oauth_ready_expired ... ok [INFO] [stdout] test tests::from_resolved_basic_serializes ... ok [INFO] [stdout] test tests::from_resolved_not_configured_auto ... ok [INFO] [stdout] test openapi::tests::search_by_keyword ... ok [INFO] [stdout] test openapi::tests::search_filter_by_method ... ok [INFO] [stdout] test openapi::tests::search_combined_query_and_filter ... ok [INFO] [stdout] test openapi::tests::search_filter_by_tag ... ok [INFO] [stdout] test tests::from_resolved_oauth_pending_serializes ... ok [INFO] [stdout] test openapi::tests::parameter_details_include_defaults ... ok [INFO] [stdout] test tests::from_resolved_oauth_ready_not_expired ... ok [INFO] [stdout] test openapi::tests::search_is_case_insensitive ... ok [INFO] [stdout] test tests::from_resolved_oauth_ready_no_expiry ... ok [INFO] [stdout] test tests::new_basic_with_none_validation_is_not_validated ... ok [INFO] [stdout] test openapi::tests::lookup_schema_nonexistent_returns_error ... ok [INFO] [stdout] test tests::new_basic_with_not_validated_keeps_not_validated ... ok [INFO] [stdout] test tests::from_resolved_not_configured_basic ... ok [INFO] [stdout] test tests::new_basic_with_valid_validation_overrides_to_valid ... ok [INFO] [stdout] test tests::new_not_configured_not_overridden_by_invalid ... ok [INFO] [stdout] test tests::new_not_configured_not_overridden_by_valid ... ok [INFO] [stdout] test tests::new_oauth_pending_not_overridden_by_valid ... ok [INFO] [stdout] test tests::new_oauth_ready_expired_not_overridden_by_invalid ... ok [INFO] [stdout] test tests::new_oauth_ready_expired_not_overridden_by_not_validated ... ok [INFO] [stdout] test tests::new_basic_with_invalid_validation_overrides_to_invalid ... ok [INFO] [stdout] test tests::new_oauth_ready_expired_overridden_by_valid ... ok [INFO] [stdout] test tests::new_oauth_ready_with_invalid_validation_overrides ... ok [INFO] [stdout] test tests::new_oauth_ready_with_valid_validation_overrides ... ok [INFO] [stdout] test tests::new_matches_from_resolved_when_no_validation ... ok [INFO] [stdout] test openapi::tests::search_empty_query_returns_all ... ok [INFO] [stdout] test tests::server_info_enables_resources_capability ... ok [INFO] [stdout] test tests::from_resolved_oauth_pending ... ok [INFO] [stdout] test openapi::tests::ref_resolution_works ... ok [INFO] [stdout] test tests::server_info_enables_tools_capability ... ok [INFO] [stdout] test tests::validation_state_serializes ... ok [INFO] [stdout] test tools::tests::api_call_file_ref_empty_path_returns_error ... ok [INFO] [stdout] test tools::tests::api_call_file_ref_invalid_path_returns_error ... ok [INFO] [stdout] test tests::server_info_includes_instructions ... ok [INFO] [stdout] test tests::server_info_sets_name_and_version ... ok [INFO] [stdout] test tools::tests::api_call_input_file_refs_default_empty ... ok [INFO] [stdout] test tests::validation_state_deserializes ... ok [INFO] [stdout] test tools::tests::api_call_input_with_file_refs_parses ... ok [INFO] [stdout] test tests::validation_state_default_is_not_validated ... ok [INFO] [stdout] test tools::tests::api_call_missing_required_param_returns_error ... ok [INFO] [stdout] test tools::tests::api_call_with_body_string_returns_request ... ok [INFO] [stdout] test tools::tests::api_call_with_file_refs_returns_read_files ... ok [INFO] [stdout] test tools::tests::api_call_with_body_for_get_endpoint_passes_through ... ok [INFO] [stdout] test tools::tests::api_call_returns_request_effect ... ok [INFO] [stdout] test tools::tests::api_call_with_invalid_body_json_returns_error ... ok [INFO] [stdout] test tools::tests::api_call_without_spec_returns_error ... ok [INFO] [stdout] test tools::tests::api_explain_returns_detail ... ok [INFO] [stdout] test tools::tests::api_call_without_file_refs_returns_api_request ... ok [INFO] [stdout] test tools::tests::api_call_with_null_body_json_returns_error ... ok [INFO] [stdout] test tools::tests::api_explain_nonexistent_returns_error ... ok [INFO] [stdout] test tools::tests::api_schema_nonexistent_returns_tool_error ... ok [INFO] [stdout] test tools::tests::api_schema_subtype_includes_parent_properties ... ok [INFO] [stdout] test tools::tests::api_schema_without_spec_returns_error ... ok [INFO] [stdout] test tools::tests::api_search_returns_results ... ok [INFO] [stdout] test tools::tests::auth_login_direct_mode ... ok [INFO] [stdout] test tools::tests::api_schema_returns_detail ... ok [INFO] [stdout] test tools::tests::api_search_empty_query_returns_all ... ok [INFO] [stdout] test tools::tests::auth_status_validate_absent_returns_immediate ... ok [INFO] [stdout] test tools::tests::auth_status_callback_500_returns_no_side_effects ... ok [INFO] [stdout] test tools::tests::api_search_without_spec_returns_error ... ok [INFO] [stdout] test tools::tests::auth_login_invalid_mode ... ok [INFO] [stdout] test tools::tests::auth_status_validate_true_without_spec_returns_error ... ok [INFO] [stdout] test tools::tests::call_tool_auth_status_ignores_unexpected_arguments ... ok [INFO] [stdout] test tools::tests::call_tool_auth_status_oauth_not_configured_no_creds ... ok [INFO] [stdout] test tools::tests::call_tool_auth_status_oauth_partial_missing_secret ... ok [INFO] [stdout] test tools::tests::call_tool_auth_status_oauth_partial_missing_id ... ok [INFO] [stdout] test tools::tests::call_tool_auth_status_oauth_pending ... ok [INFO] [stdout] test tools::tests::auth_login_direct_mode_missing_client_id ... ok [INFO] [stdout] test tools::tests::auth_login_direct_mode_missing_client_secret ... ok [INFO] [stdout] test tools::tests::auth_login_explicit_proxy_mode ... ok [INFO] [stdout] test tools::tests::auth_login_default_mode_returns_proxy ... ok [INFO] [stdout] test tools::tests::call_tool_auth_status_oauth_ready ... ok [INFO] [stdout] test tools::tests::call_tool_auth_status_returns_not_configured ... ok [INFO] [stdout] test tools::tests::call_tool_auth_status_returns_not_validated_with_creds ... ok [INFO] [stdout] test tools::tests::call_tool_list_resources_returns_all_entries ... ok [INFO] [stdout] test tools::tests::call_tool_auth_status_returns_partial_with_missing_access_key ... ok [INFO] [stdout] test tools::tests::call_tool_auth_status_returns_partial_with_missing_key ... ok [INFO] [stdout] test tools::tests::call_tool_error_lookup_empty_values_returns_error ... ok [INFO] [stdout] test tools::tests::auth_status_callback_200_returns_valid_with_side_effect ... ok [INFO] [stdout] test tools::tests::auth_status_validate_false_returns_immediate ... ok [INFO] [stdout] test tools::tests::auth_status_callback_401_returns_invalid_with_side_effect ... ok [INFO] [stdout] test tools::tests::auth_status_validate_true_returns_api_request ... ok [INFO] [stdout] test tools::tests::call_tool_read_resource_unknown_uri_returns_error ... ok [INFO] [stdout] test tools::tests::auth_status_validate_false_includes_cached_validation ... ok [INFO] [stdout] test tools::tests::call_tool_unknown_returns_not_found ... ok [INFO] [stdout] test tools::tests::error_code_values ... ok [INFO] [stdout] test tools::tests::file_encoding_deserializes_snake_case ... ok [INFO] [stdout] test tools::tests::file_encoding_serializes_snake_case ... ok [INFO] [stdout] test tools::tests::file_reference_roundtrips ... ok [INFO] [stdout] test tools::tests::call_tool_read_resource_returns_content ... ok [INFO] [stdout] test tools::tests::list_tools_has_eleven_tools ... ok [INFO] [stdout] test tools::tests::list_tools_includes_api_call ... ok [INFO] [stdout] test tools::tests::list_tools_includes_error_lookup ... ok [INFO] [stdout] test tools::tests::process_api_response_success_plain_text ... ok [INFO] [stdout] test tools::tests::process_api_response_error ... ok [INFO] [stdout] test tools::tests::list_tools_includes_api_explain ... ok [INFO] [stdout] test tools::tests::list_tools_includes_api_search ... ok [INFO] [stdout] test tools::tests::resume_inject_base64_into_json_body ... ok [INFO] [stdout] test tools::tests::list_tools_includes_api_schema ... ok [INFO] [stdout] test tools::tests::list_tools_includes_auth_status ... ok [INFO] [stdout] test tools::tests::list_tools_includes_auth_login ... ok [INFO] [stdout] test tools::tests::resume_inject_base64_into_multipart_body ... ok [INFO] [stdout] test tools::tests::list_tools_includes_screenshot ... ok [INFO] [stdout] test tools::tests::resume_inject_file_read_error_returns_tool_error ... ok [INFO] [stdout] test tools::tests::list_tools_includes_read_resource ... ok [INFO] [stdout] test tools::tests::list_tools_includes_list_resources ... ok [INFO] [stdout] test tools::tests::process_api_response_success_json ... ok [INFO] [stdout] test tools::tests::resume_inject_invalid_utf8_returns_error ... ok [INFO] [stdout] test tools::tests::resume_inject_multiple_files_into_json_body ... ok [INFO] [stdout] test tools::tests::resume_inject_no_body_returns_error ... ok [INFO] [stdout] test tools::tests::resume_inject_raw_bytes_into_json_body_returns_error ... ok [INFO] [stdout] test tools::tests::resume_inject_raw_bytes_into_multipart_body ... ok [INFO] [stdout] test tools::tests::resume_inject_text_utf8_into_json_body ... ok [INFO] [stdout] test tools::tests::resume_inject_text_utf8_into_multipart_body ... ok [INFO] [stdout] test tools::tests::screenshot_builds_api_request ... ok [INFO] [stdout] test tools::tests::call_tool_error_lookup_unknown_enum_says_not_found ... ok [INFO] [stdout] test tools::tests::call_tool_error_lookup_multiple_values ... ok [INFO] [stdout] test tools::tests::call_tool_error_lookup_resolves_known_enum ... ok [INFO] [stdout] test tools::tests::screenshot_callback_success_returns_write_files ... ok [INFO] [stdout] test tools::tests::screenshot_callback_api_error_returns_done ... ok [INFO] [stdout] test tools::tests::screenshot_format_result_failure ... ok [INFO] [stdout] test tools::tests::screenshot_custom_output_path ... ok [INFO] [stdout] test tools::tests::screenshot_format_result_success_includes_view_matrix ... ok [INFO] [stdout] test tools::tests::screenshot_invalid_edges_returns_error ... ok [INFO] [stdout] test tools::tests::screenshot_output_height_zero_returns_error ... ok [INFO] [stdout] test tools::tests::screenshot_invalid_wvm_returns_error ... ok [INFO] [stdout] test tools::tests::screenshot_output_path_empty_returns_error ... ok [INFO] [stdout] test tools::tests::screenshot_output_width_too_large_returns_error ... ok [INFO] [stdout] test tools::tests::screenshot_output_path_traversal_returns_error ... ok [INFO] [stdout] test tools::tests::screenshot_optional_params_passed_to_request ... ok [INFO] [stdout] test tools::tests::validate_file_path_accepts_absolute_path ... ok [INFO] [stdout] test tools::tests::validate_file_path_accepts_relative_path ... ok [INFO] [stdout] test tools::tests::validate_file_path_rejects_empty ... ok [INFO] [stdout] test tools::tests::validate_file_path_rejects_relative_traversal ... ok [INFO] [stdout] test tools::tests::validate_file_path_rejects_traversal ... ok [INFO] [stdout] test tools::tests::validate_file_path_rejects_whitespace_only ... ok [INFO] [stdout] test tools::tests::view_matrix_back_preset_is_named ... ok [INFO] [stdout] test tools::tests::view_matrix_bottom_preset_is_named ... ok [INFO] [stdout] test tools::tests::view_matrix_columns_are_orthonormal ... ok [INFO] [stdout] test tools::tests::view_matrix_front_angles_matches_front_view ... ok [INFO] [stdout] test tools::tests::view_matrix_front_preset_is_named ... ok [INFO] [stdout] test tools::tests::view_matrix_isometric_is_computed ... ok [INFO] [stdout] test tools::tests::view_matrix_right_preset_is_named ... ok [INFO] [stdout] test tools::tests::view_matrix_top_angles_matches_identity ... ok [INFO] [stdout] test tools::tests::view_spec_angles_deserializes ... ok [INFO] [stdout] test tools::tests::view_spec_preset_deserializes ... ok [INFO] [stdout] test tools::tests::view_matrix_left_preset_is_named ... ok [INFO] [stdout] test tools::tests::view_matrix_top_preset_is_named ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 256 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s [INFO] [stdout] [INFO] [stderr] Doc-tests onshape_mcp_core [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" "38de10fa23a3be8768a5ea1463a8cfb218ac607a9790e2148addf5f402f366b0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "38de10fa23a3be8768a5ea1463a8cfb218ac607a9790e2148addf5f402f366b0", kill_on_drop: false }` [INFO] [stdout] 38de10fa23a3be8768a5ea1463a8cfb218ac607a9790e2148addf5f402f366b0