[INFO] fetching crate ic-asset-router 0.1.1... [INFO] testing ic-asset-router-0.1.1 against master#562dee4820c458d823175268e41601d4c060588a for pr-154210-1 [INFO] extracting crate ic-asset-router 0.1.1 into /workspace/builds/worker-1-tc1/source [INFO] started tweaking crates.io crate ic-asset-router 0.1.1 [INFO] finished tweaking crates.io crate ic-asset-router 0.1.1 [INFO] tweaked toml for crates.io crate ic-asset-router 0.1.1 written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate ic-asset-router 0.1.1 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 ic-asset-router 0.1.1 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded ic0 v1.0.1 [INFO] [stderr] Downloaded candid_derive v0.10.22 [INFO] [stderr] Downloaded ic-representation-independent-hash v3.1.0 [INFO] [stderr] Downloaded candid v0.10.22 [INFO] [stderr] Downloaded ic-http-certification v3.1.0 [INFO] [stderr] Downloaded ic-asset-router-macros v0.1.1 [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" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] ae6cc7c8fe79bcf727b097438d669d25f86f3d271f38708e23b4a28a68a3b9fb [INFO] running `Command { std: "docker" "start" "-a" "ae6cc7c8fe79bcf727b097438d669d25f86f3d271f38708e23b4a28a68a3b9fb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "ae6cc7c8fe79bcf727b097438d669d25f86f3d271f38708e23b4a28a68a3b9fb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ae6cc7c8fe79bcf727b097438d669d25f86f3d271f38708e23b4a28a68a3b9fb", kill_on_drop: false }` [INFO] [stdout] ae6cc7c8fe79bcf727b097438d669d25f86f3d271f38708e23b4a28a68a3b9fb [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" "+562dee4820c458d823175268e41601d4c060588a" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] f25f7bbe944d37236c1a1834de0ec2363577c3a9ec1eae3408b60c61cf770eaf [INFO] running `Command { std: "docker" "start" "-a" "f25f7bbe944d37236c1a1834de0ec2363577c3a9ec1eae3408b60c61cf770eaf", kill_on_drop: false }` [INFO] [stderr] Compiling unicode-ident v1.0.23 [INFO] [stderr] Compiling object v0.37.3 [INFO] [stderr] Compiling cc v1.2.55 [INFO] [stderr] Compiling libc v0.2.181 [INFO] [stderr] Compiling typed-arena v2.0.2 [INFO] [stderr] Compiling arrayvec v0.5.2 [INFO] [stderr] Compiling serde_bytes v0.11.19 [INFO] [stderr] Compiling leb128 v0.2.5 [INFO] [stderr] Compiling slotmap v1.1.1 [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling ic-cdk-executor v1.0.2 [INFO] [stderr] Compiling quote v1.0.44 [INFO] [stderr] Compiling ic0 v1.0.1 [INFO] [stderr] Compiling half v1.8.3 [INFO] [stderr] Compiling form_urlencoded v1.2.2 [INFO] [stderr] Compiling urlencoding v2.1.3 [INFO] [stderr] Compiling ic-representation-independent-hash v3.1.0 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling pretty v0.12.5 [INFO] [stderr] Compiling syn v2.0.115 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Compiling include_dir_macros v0.7.4 [INFO] [stderr] Compiling stacker v0.1.23 [INFO] [stderr] Compiling include_dir v0.7.4 [INFO] [stderr] Compiling ar_archive_writer v0.5.1 [INFO] [stderr] Compiling binread_derive v2.1.0 [INFO] [stderr] Compiling darling_core v0.20.11 [INFO] [stderr] Compiling psm v0.1.30 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling candid_derive v0.10.22 [INFO] [stderr] Compiling strum_macros v0.26.4 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling ic-asset-router-macros v0.1.1 [INFO] [stderr] Compiling binread v2.2.0 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling strum v0.26.3 [INFO] [stderr] Compiling darling_macro v0.20.11 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling darling v0.20.11 [INFO] [stderr] Compiling ic_principal v0.1.2 [INFO] [stderr] Compiling num-bigint v0.4.6 [INFO] [stderr] Compiling serde_cbor v0.11.2 [INFO] [stderr] Compiling ic-error-types v0.2.0 [INFO] [stderr] Compiling ic-certification v3.1.0 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling candid v0.10.22 [INFO] [stderr] Compiling ic-management-canister-types v0.3.3 [INFO] [stderr] Compiling ic-http-certification v3.1.0 [INFO] [stderr] Compiling ic-cdk-macros v0.18.7 [INFO] [stderr] Compiling ic-cdk v0.18.7 [INFO] [stderr] Compiling ic-asset-router v0.1.1 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 44.83s [INFO] running `Command { std: "docker" "inspect" "f25f7bbe944d37236c1a1834de0ec2363577c3a9ec1eae3408b60c61cf770eaf", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f25f7bbe944d37236c1a1834de0ec2363577c3a9ec1eae3408b60c61cf770eaf", kill_on_drop: false }` [INFO] [stdout] f25f7bbe944d37236c1a1834de0ec2363577c3a9ec1eae3408b60c61cf770eaf [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" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 232f593bf3c03e13526186a483243cb67cc7e3d5b5c913927ad6fa20d591c2ea [INFO] running `Command { std: "docker" "start" "-a" "232f593bf3c03e13526186a483243cb67cc7e3d5b5c913927ad6fa20d591c2ea", kill_on_drop: false }` [INFO] [stderr] Compiling zerocopy v0.8.39 [INFO] [stderr] Compiling darling_core v0.20.11 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling getrandom v0.4.1 [INFO] [stderr] Compiling rustix v1.1.3 [INFO] [stderr] Compiling wait-timeout v0.2.1 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling rand v0.9.2 [INFO] [stderr] Compiling rand_xorshift v0.4.0 [INFO] [stderr] Compiling tempfile v3.25.0 [INFO] [stderr] Compiling rusty-fork v0.3.1 [INFO] [stderr] Compiling darling_macro v0.20.11 [INFO] [stderr] Compiling darling v0.20.11 [INFO] [stderr] Compiling ic-cdk-macros v0.18.7 [INFO] [stderr] Compiling ic-cdk v0.18.7 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling proptest v1.10.0 [INFO] [stderr] Compiling ic-asset-router v0.1.1 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 20.63s [INFO] running `Command { std: "docker" "inspect" "232f593bf3c03e13526186a483243cb67cc7e3d5b5c913927ad6fa20d591c2ea", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "232f593bf3c03e13526186a483243cb67cc7e3d5b5c913927ad6fa20d591c2ea", kill_on_drop: false }` [INFO] [stdout] 232f593bf3c03e13526186a483243cb67cc7e3d5b5c913927ad6fa20d591c2ea [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" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 953c2e478af83a1cf131a7a2cfb97ac6ce0eca08db5019ec952e1508a5430b3b [INFO] running `Command { std: "docker" "start" "-a" "953c2e478af83a1cf131a7a2cfb97ac6ce0eca08db5019ec952e1508a5430b3b", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.25s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/ic_asset_router-72e7a472504842dc) [INFO] [stdout] [INFO] [stdout] running 318 tests [INFO] [stdout] test asset_router::tests::asset_encoding_as_str ... ok [INFO] [stdout] test asset_router::tests::asset_certification_config_default ... ok [INFO] [stdout] test asset_router::tests::build_cel_expression_string_full ... ok [INFO] [stdout] test asset_router::tests::build_cel_expression_string_response_only ... ok [INFO] [stdout] test asset_router::tests::asset_router_error_display ... ok [INFO] [stdout] test asset_router::tests::certify_asset_registers_aliases ... ok [INFO] [stdout] test asset_router::tests::certify_asset_full_returns_error ... ok [INFO] [stdout] test asset_router::tests::certify_asset_response_only_succeeds ... ok [INFO] [stdout] test asset_router::tests::delete_asset_nonexistent_is_noop ... ok [INFO] [stdout] test asset_router::tests::certify_asset_registers_fallback ... ok [INFO] [stdout] test asset_router::tests::certify_asset_uses_explicit_content_type ... ok [INFO] [stdout] test asset_router::tests::certify_asset_stores_encodings ... ok [INFO] [stdout] test asset_router::tests::certify_dynamic_asset_skip_succeeds ... ok [INFO] [stdout] test asset_router::tests::certify_asset_auto_detects_content_type ... ok [INFO] [stdout] test asset_router::tests::certify_asset_skip_succeeds ... ok [INFO] [stdout] test asset_router::tests::certify_dynamic_asset_response_only_succeeds ... ok [INFO] [stdout] test asset_router::tests::certify_dynamic_asset_full_succeeds ... ok [INFO] [stdout] test asset_router::tests::certify_asset_duplicate_path_replaces ... ok [INFO] [stdout] test asset_router::tests::certify_asset_with_additional_headers ... ok [INFO] [stdout] test asset_router::tests::delete_asset_removes_aliases ... ok [INFO] [stdout] test asset_router::tests::is_dynamic_false_when_not_marked_dynamic ... ok [INFO] [stdout] test asset_router::tests::get_asset_via_canonical_and_alias ... ok [INFO] [stdout] test asset_router::tests::get_asset_mut_works ... ok [INFO] [stdout] test asset_router::tests::mode_switching_certify_delete_recertify ... ok [INFO] [stdout] test asset_router::tests::is_expired_respects_certified_at_and_ttl ... ok [INFO] [stdout] test asset_router::tests::is_dynamic_true_without_ttl ... ok [INFO] [stdout] test asset_router::tests::delete_nonexistent_asset_is_noop ... ok [INFO] [stdout] test asset_router::tests::root_hash_changes_after_certify ... ok [INFO] [stdout] test asset_router::tests::get_asset_nonexistent_returns_none ... ok [INFO] [stdout] test asset_router::tests::is_expired_static_assets_never_expire ... ok [INFO] [stdout] test asset_router::tests::is_dynamic_true_when_marked_dynamic ... ok [INFO] [stdout] test asset_router::tests::root_hash_changes_after_delete ... ok [INFO] [stdout] test asset_router::tests::delete_asset_removes_fallback ... ok [INFO] [stdout] test asset_router::tests::delete_asset_via_alias_resolves_and_removes_canonical ... ok [INFO] [stdout] test asset_router::tests::delete_asset_removes_asset_and_tree_entry ... ok [INFO] [stdout] test asset_router::tests::recertification_replaces_old_hash ... ok [INFO] [stdout] test asset_router::tests::serve_asset_encoding_negotiation_gzip_fallback ... ok [INFO] [stdout] test asset_router::tests::new_router_is_empty ... ok [INFO] [stdout] test asset_router::tests::serve_asset_encoding_negotiation_brotli_preferred ... ok [INFO] [stdout] test asset_router::tests::serve_asset_encoding_negotiation_identity_fallback ... ok [INFO] [stdout] test asset_router::tests::serve_asset_fallback_match ... ok [INFO] [stdout] test asset_router::tests::serve_asset_includes_additional_headers ... ok [INFO] [stdout] test asset_router::tests::serve_asset_exact_match ... ok [INFO] [stdout] test asset_router::tests::serve_asset_skip_has_valid_witness_and_expr_path ... ok [INFO] [stdout] test asset_router::tests::serve_asset_includes_cel_expression_header ... ok [INFO] [stdout] test asset_router::tests::serve_asset_longest_prefix_fallback_wins ... ok [INFO] [stdout] test asset_router::tests::build_cel_expression_string_skip ... ok [INFO] [stdout] test asset_router::tests::serve_asset_alias_resolves ... ok [INFO] [stdout] test assets::tests::certified_asset_expired_ttl_detected ... ok [INFO] [stdout] test assets::tests::certified_asset_fresh_ttl_not_expired ... ok [INFO] [stdout] test assets::tests::certified_asset_no_ttl_never_expires ... ok [INFO] [stdout] test asset_router::tests::certify_asset_stores_certified_at_and_ttl ... ok [INFO] [stdout] test asset_router::tests::serve_asset_no_match_returns_none ... ok [INFO] [stdout] test assets::tests::invalidate_all_dynamic_clears_all ... ok [INFO] [stdout] test assets::tests::not_modified_resets_certified_at_with_ttl ... ok [INFO] [stdout] test assets::tests::invalidate_prefix_removes_matching_keeps_others ... ok [INFO] [stdout] test assets::tests::invalidate_prefix_does_not_over_match ... ok [INFO] [stdout] test assets::tests::invalidate_path_removes_dynamic_asset ... ok [INFO] [stdout] test assets::tests::last_certified_at_returns_some_for_cached ... ok [INFO] [stdout] test build::tests::camel_to_snake_acronym ... ok [INFO] [stdout] test build::tests::camel_to_snake_already_snake ... ok [INFO] [stdout] test assets::tests::static_assets_unaffected_by_invalidation ... ok [INFO] [stdout] test assets::tests::ttl_no_overflow_on_large_values ... ok [INFO] [stdout] test assets::tests::ttl_one_ns_before_expiry_is_not_expired ... ok [INFO] [stdout] test assets::tests::invalidate_all_dynamic_leaves_empty ... ok [INFO] [stdout] test assets::tests::ttl_zero_duration_immediately_expired ... ok [INFO] [stdout] test assets::tests::invalidate_path_double_removal_is_noop ... ok [INFO] [stdout] test build::tests::camel_to_snake_leading_upper ... ok [INFO] [stdout] test build::tests::camel_to_snake_multi_word ... ok [INFO] [stdout] test assets::tests::not_modified_preserves_asset_entry ... ok [INFO] [stdout] test assets::tests::last_certified_at_returns_none_for_uncached ... ok [INFO] [stdout] test build::tests::camel_to_snake_simple ... ok [INFO] [stdout] test build::tests::camel_to_snake_single_word ... ok [INFO] [stdout] test build::tests::camel_to_snake_user_id ... ok [INFO] [stdout] test build::tests::escape_json_backslash ... ok [INFO] [stdout] test build::tests::escape_json_plain ... ok [INFO] [stdout] test build::tests::escape_json_quote ... ok [INFO] [stdout] test build::tests::file_to_handler_path_nested ... ok [INFO] [stdout] test build::tests::file_to_handler_path_param_dir ... ok [INFO] [stdout] test build::tests::file_to_handler_path_root ... ok [INFO] [stdout] test build::tests::file_to_route_path_all_wildcard ... ok [INFO] [stdout] test build::tests::file_to_route_path_deeply_nested ... ok [INFO] [stdout] test build::tests::file_to_route_path_index ... ok [INFO] [stdout] test build::tests::file_to_route_path_nested ... ok [INFO] [stdout] test build::tests::file_to_route_path_param_dir ... ok [INFO] [stdout] test build::tests::generated_param_code_includes_url_decode ... ok [INFO] [stdout] test build::tests::file_to_route_path_static_name ... ok [INFO] [stdout] test build::tests::generated_wildcard_code_includes_url_decode ... ok [INFO] [stdout] test build::tests::name_to_route_segment_all ... ok [INFO] [stdout] test build::tests::name_to_route_segment_index ... ok [INFO] [stdout] test build::tests::has_search_params_returns_false_when_absent ... ok [INFO] [stdout] test build::tests::name_to_route_segment_param ... ok [INFO] [stdout] test build::tests::detect_method_exports_single_get ... ok [INFO] [stdout] test build::tests::detect_method_exports_private_fn_ignored ... ok [INFO] [stdout] test build::tests::detect_method_exports_multiple ... ok [INFO] [stdout] test build::tests::detect_method_exports_none ... ok [INFO] [stdout] test build::tests::detect_method_exports_no_false_match ... ok [INFO] [stdout] test build::tests::has_pub_fn_present ... ok [INFO] [stdout] test build::tests::has_search_params_detects_struct ... ok [INFO] [stdout] test build::tests::has_search_params_ignores_private_struct ... ok [INFO] [stdout] test build::tests::has_pub_fn_absent ... ok [INFO] [stdout] test build::tests::has_search_params_multiline_struct ... ok [INFO] [stdout] test build::tests::has_pub_fn_near_miss ... ok [INFO] [stdout] test build::tests::name_to_route_segment_static ... ok [INFO] [stdout] test build::tests::prefix_to_route_path_empty ... ok [INFO] [stdout] test build::tests::prefix_to_route_path_nested ... ok [INFO] [stdout] test build::tests::prefix_to_route_path_param ... ok [INFO] [stdout] test build::tests::process_directory_empty_dir ... ok [INFO] [stdout] test build::tests::process_directory_basic_index ... ok [INFO] [stdout] test build::tests::prefix_to_route_path_single ... ok [INFO] [stdout] test build::tests::process_directory_detects_certification_attribute ... ok [INFO] [stdout] test build::tests::process_directory_param_directory ... ok [INFO] [stdout] test build::tests::process_directory_not_found_detected ... ok [INFO] [stdout] test build::tests::process_directory_route_attribute_override ... ok [INFO] [stdout] test build::tests::process_directory_middleware_detected ... ok [INFO] [stdout] test build::tests::sanitize_mod_underscore_prefixed ... ok [INFO] [stdout] test build::tests::process_directory_no_certification_attribute ... ok [INFO] [stdout] test build::tests::reserved_files_contains_not_found ... ok [INFO] [stdout] test build::tests::reserved_files_contains_middleware ... ok [INFO] [stdout] test build::tests::process_directory_nested_structure ... ok [INFO] [stdout] test build::tests::process_directory_wildcard_all ... ok [INFO] [stdout] test build::tests::reserved_files_does_not_contain_all ... ok [INFO] [stdout] test build::tests::reserved_files_does_not_contain_index ... ok [INFO] [stdout] test build::tests::sanitize_mod_dot_replacement ... ok [INFO] [stdout] test build::tests::process_directory_static_route ... ok [INFO] [stdout] test build::tests::sanitize_mod_plain ... ok [INFO] [stdout] test build::tests::scan_certification_attribute_absent ... ok [INFO] [stdout] test build::tests::scan_certification_attribute_authenticated ... ok [INFO] [stdout] test build::tests::scan_certification_attribute_custom ... ok [INFO] [stdout] test build::tests::process_directory_search_params_detected ... ok [INFO] [stdout] test build::tests::scan_certification_attribute_fully_qualified_path ... ok [INFO] [stdout] test build::tests::scan_certification_attribute_multiline ... ok [INFO] [stdout] test build::tests::scan_certification_attribute_path_only ... ok [INFO] [stdout] test build::tests::scan_certification_attribute_response_only ... ok [INFO] [stdout] test build::tests::scan_certification_attribute_skip ... ok [INFO] [stdout] test build::tests::scan_certification_in_comment_ignored ... ok [INFO] [stdout] test build::tests::scan_pub_fns_handles_generics ... ok [INFO] [stdout] test build::tests::scan_pub_fns_handles_multiline_signature ... ok [INFO] [stdout] test build::tests::scan_pub_fns_ignores_private_functions ... ok [INFO] [stdout] test build::tests::scan_route_attribute_basic ... ok [INFO] [stdout] test certification::tests::builder_with_no_options ... ok [INFO] [stdout] test certification::tests::builder_with_partial_options ... ok [INFO] [stdout] test build::tests::scan_route_attribute_no_false_match_on_mypath ... ok [INFO] [stdout] test certification::tests::certification_mode_clone_and_debug ... ok [INFO] [stdout] test certification::tests::full_config_default ... ok [INFO] [stdout] test certification::tests::header_normalization_to_lowercase ... ok [INFO] [stdout] test build::tests::scan_route_attribute_with_spaces ... ok [INFO] [stdout] test certification::tests::response_only_config_default ... ok [INFO] [stdout] test certification::tests::response_only_has_correct_default_config ... ok [INFO] [stdout] test build::tests::scan_route_attribute_no_false_match_on_xpath ... ok [INFO] [stdout] test certification::tests::default_is_response_only ... ok [INFO] [stdout] test build::tests::scan_route_attribute_missing ... ok [INFO] [stdout] test build::tests::scan_route_attribute_multiline ... ok [INFO] [stdout] test certification::tests::authenticated_has_authorization_in_request_headers ... ok [INFO] [stdout] test certification::tests::builder_with_all_options ... ok [INFO] [stdout] test build::tests::scan_route_attribute_non_route_attribute ... ok [INFO] [stdout] test certification::tests::skip_produces_skip ... ok [INFO] [stdout] test config::tests::additional_headers_override_custom_and_security ... ok [INFO] [stdout] test config::tests::asset_config_default_includes_default_cache_control ... ok [INFO] [stdout] test config::tests::custom_dynamic_cache_control ... ok [INFO] [stdout] test config::tests::cache_config_default_has_none_and_empty ... ok [INFO] [stdout] test config::tests::custom_static_cache_control ... ok [INFO] [stdout] test config::tests::default_cache_control_reproduces_current_behavior ... ok [INFO] [stdout] test config::tests::custom_headers_override_security_headers ... ok [INFO] [stdout] test config::tests::merged_headers_later_overrides_earlier ... ok [INFO] [stdout] test config::tests::none_produces_zero_headers ... ok [INFO] [stdout] test config::tests::per_route_ttl_overrides_default_ttl ... ok [INFO] [stdout] test config::tests::permissive_produces_expected_headers ... ok [INFO] [stdout] test config::tests::strict_produces_expected_headers ... ok [INFO] [stdout] test config::tests::xss_protection_never_set ... ok [INFO] [stdout] test context::tests::body_to_str_empty ... ok [INFO] [stdout] test context::tests::body_to_str_invalid_utf8 ... ok [INFO] [stdout] test context::tests::body_to_str_valid_utf8 ... ok [INFO] [stdout] test context::tests::deserialize_search_params_empty_string ... ok [INFO] [stdout] test context::tests::deserialize_search_params_malformed_encoding_does_not_panic ... ok [INFO] [stdout] test config::tests::merged_headers_case_insensitive_override ... ok [INFO] [stdout] test context::tests::deserialize_search_params_missing_fields_default_to_none ... ok [INFO] [stdout] test context::tests::deserialize_search_params_type_mismatch_falls_back ... ok [INFO] [stdout] test context::tests::deserialize_search_params_valid ... ok [INFO] [stdout] test context::tests::deserialize_search_params_with_leading_question_mark ... ok [INFO] [stdout] test context::tests::form_data_basic ... ok [INFO] [stdout] test context::tests::form_data_empty ... ok [INFO] [stdout] test context::tests::form_data_url_encoded ... ok [INFO] [stdout] test context::tests::form_empty_body_with_optional_fields ... ok [INFO] [stdout] test context::tests::form_invalid_utf8 ... ok [INFO] [stdout] test context::tests::form_valid ... ok [INFO] [stdout] test context::tests::form_missing_field ... ok [INFO] [stdout] test config::tests::default_is_permissive ... ok [INFO] [stdout] test context::tests::header_missing ... ok [INFO] [stdout] test context::tests::json_empty_body ... ok [INFO] [stdout] test context::tests::json_invalid_json ... ok [INFO] [stdout] test context::tests::json_invalid_utf8 ... ok [INFO] [stdout] test context::tests::json_valid ... ok [INFO] [stdout] test context::tests::parse_form_body_basic_pairs ... ok [INFO] [stdout] test context::tests::parse_form_body_empty ... ok [INFO] [stdout] test context::tests::parse_form_body_encoded_values ... ok [INFO] [stdout] test context::tests::parse_form_body_plus_decoding ... ok [INFO] [stdout] test context::tests::parse_query_bare_query_string ... ok [INFO] [stdout] test context::tests::parse_query_basic ... ok [INFO] [stdout] test context::tests::parse_query_empty_query_string ... ok [INFO] [stdout] test context::tests::parse_query_empty_string_returns_empty_hashmap ... ok [INFO] [stdout] test context::tests::parse_query_empty_url ... ok [INFO] [stdout] test context::tests::parse_query_empty_value ... ok [INFO] [stdout] test context::tests::parse_query_multiple_equals ... ok [INFO] [stdout] test context::tests::parse_query_no_query_string ... ok [INFO] [stdout] test context::tests::header_first_match_wins ... ok [INFO] [stdout] test context::tests::header_case_insensitive ... ok [INFO] [stdout] test context::tests::parse_query_url_encoded_values ... ok [INFO] [stdout] test context::tests::parse_query_skips_malformed_pairs ... ok [INFO] [stdout] test context::tests::url_decode_empty_string ... ok [INFO] [stdout] test context::tests::url_decode_invalid_utf8_returns_valid_string ... ok [INFO] [stdout] test context::tests::url_decode_malformed_passthrough ... ok [INFO] [stdout] test context::tests::url_decode_null_byte ... ok [INFO] [stdout] test context::tests::url_decode_double_encoded ... ok [INFO] [stdout] test context::tests::url_decode_percent_one_hex_then_eof ... ok [INFO] [stdout] test context::tests::url_decode_plus_as_space ... ok [INFO] [stdout] test context::tests::url_decode_plain_passthrough ... ok [INFO] [stdout] test route_config::tests::default_route_config_uses_response_only ... ok [INFO] [stdout] test context::tests::url_decode_trailing_percent ... ok [INFO] [stdout] test route_config::tests::route_config_clone_and_debug ... ok [INFO] [stdout] test context::tests::url_decode_only_percent ... ok [INFO] [stdout] test context::tests::url_decode_percent_encoding ... ok [INFO] [stdout] test route_config::tests::route_config_with_authenticated_mode ... ok [INFO] [stdout] test router::tests::empty_path_resolves_to_root ... ok [INFO] [stdout] test router::tests::get_route_config_returns_none_for_unknown ... ok [INFO] [stdout] test router::tests::multiple_param_children_first_wins ... ok [INFO] [stdout] test context::tests::parse_query_with_fragment ... ok [INFO] [stdout] test router::tests::post_wildcard_segments_unreachable ... ok [INFO] [stdout] test router::tests::resolve_returns_correct_pattern_for_nested_param ... ok [INFO] [stdout] test router::tests::resolve_returns_correct_pattern_for_param_route ... ok [INFO] [stdout] test router::tests::from_http_response_for_handler_result ... ok [INFO] [stdout] test router::tests::resolve_returns_correct_pattern_for_root_route ... ok [INFO] [stdout] test router::tests::resolve_returns_correct_pattern_for_static_route ... ok [INFO] [stdout] test router::tests::resolve_returns_correct_pattern_for_wildcard_route ... ok [INFO] [stdout] test router::tests::route_config_lookup_via_pattern ... ok [INFO] [stdout] test router::tests::routes_without_config_default_to_response_only ... ok [INFO] [stdout] test router::tests::set_and_get_route_config ... ok [INFO] [stdout] test router::tests::set_route_config_replaces_existing ... ok [INFO] [stdout] test router::tests::test_all_seven_methods ... ok [INFO] [stdout] test router::tests::test_custom_404_returns_custom_response ... ok [INFO] [stdout] test router::tests::test_404_match ... ok [INFO] [stdout] test router::tests::test_custom_404_json_content_type ... ok [INFO] [stdout] test router::tests::test_default_404_without_custom_handler ... ok [INFO] [stdout] test router::tests::test_deep_wildcard_multi_segments ... ok [INFO] [stdout] test router::tests::test_double_slash_matches_normalized ... ok [INFO] [stdout] test router::tests::test_dynamic_match ... ok [INFO] [stdout] test router::tests::test_empty_segments_ignored ... ok [INFO] [stdout] test router::tests::test_custom_404_receives_full_request ... ok [INFO] [stdout] test router::tests::test_empty_wildcard_match ... ok [INFO] [stdout] test router::tests::test_exact_match ... ok [INFO] [stdout] test router::tests::test_get_or_create_node_root_path ... ok [INFO] [stdout] test router::tests::test_folder_root_wildcard_match ... ok [INFO] [stdout] test router::tests::test_get_or_create_node_idempotent ... ok [INFO] [stdout] test router::tests::test_get_or_create_node_creates_intermediate_nodes ... ok [INFO] [stdout] test router::tests::test_folder_wildcard_captures_tail ... ok [INFO] [stdout] test router::tests::test_match_path_returns_none ... ok [INFO] [stdout] test router::tests::test_method_dispatch_get_and_post ... ok [INFO] [stdout] test router::tests::test_insert_result_and_resolve ... ok [INFO] [stdout] test router::tests::test_many_parameters ... ok [INFO] [stdout] test router::tests::test_match_path_returns_handlers ... ok [INFO] [stdout] test router::tests::test_get_or_create_node_param_and_wildcard ... ok [INFO] [stdout] test router::tests::test_method_not_allowed ... ok [INFO] [stdout] test router::tests::test_middleware_chain_order ... ok [INFO] [stdout] test router::tests::test_middleware_ordering_independent_of_registration_order ... ok [INFO] [stdout] test router::tests::test_middleware_modifies_request_before_handler ... ok [INFO] [stdout] test router::tests::test_middleware_short_circuit ... ok [INFO] [stdout] test router::tests::test_no_middleware_handler_runs_directly ... ok [INFO] [stdout] test router::tests::test_normalize_prefix_canonical ... ok [INFO] [stdout] test router::tests::test_mixed_params_and_wildcard ... ok [INFO] [stdout] test router::tests::test_multiple_middleware_on_not_found ... ok [INFO] [stdout] test router::tests::test_not_found_only_root_middleware_for_non_api ... ok [INFO] [stdout] test router::tests::test_path_matches_prefix ... ok [INFO] [stdout] test router::tests::test_param_precedence_over_wildcard ... ok [INFO] [stdout] test router::tests::test_middleware_modifies_response ... ok [INFO] [stdout] test router::tests::test_root_middleware_runs_on_all_requests ... ok [INFO] [stdout] test router::tests::test_root_match ... ok [INFO] [stdout] test router::tests::test_posts_postid_edit ... ok [INFO] [stdout] test router::tests::test_pathless_layout_route_a ... ok [INFO] [stdout] test router::tests::test_root_not_found_when_only_nested ... ok [INFO] [stdout] test router::tests::test_root_wildcard_captures_full_path ... ok [INFO] [stdout] test router::tests::test_segment_count ... ok [INFO] [stdout] test router::tests::test_scoped_middleware_only_matching_prefix ... ok [INFO] [stdout] test router::tests::test_param_with_percent_encoded_space_resolves_raw ... ok [INFO] [stdout] test router::tests::test_set_middleware_replaces_previous ... ok [INFO] [stdout] test router::tests::test_static_precedence_over_param ... ok [INFO] [stdout] test router::tests::test_url_encoded_characters_in_param ... ok [INFO] [stdout] test router::tests::test_url_encoded_characters_in_static_path ... ok [INFO] [stdout] test router::tests::test_root_middleware_runs_before_custom_404 ... ok [INFO] [stdout] test router::tests::test_wildcard_match ... ok [INFO] [stdout] test router::tests::test_middleware_works_in_both_paths ... ok [INFO] [stdout] test router::tests::test_trailing_slash_static_match ... ok [INFO] [stdout] test router::tests::test_unknown_path_returns_not_found ... ok [INFO] [stdout] test router::tests::test_very_long_path ... ok [INFO] [stdout] test router::tests::trailing_slash_normalization ... ok [INFO] [stdout] test router::tests::wildcard_consumes_remaining_segments ... ok [INFO] [stdout] test router::tests::test_nested_dynamic_match ... ok [INFO] [stdout] test tests::asset_without_ttl_no_global_config_never_expires ... ok [INFO] [stdout] test tests::asset_without_ttl_uses_global_config ... ok [INFO] [stdout] test tests::asset_with_own_ttl_expired ... ok [INFO] [stdout] test tests::asset_with_own_ttl_not_expired ... ok [INFO] [stdout] test tests::extract_content_type_json ... ok [INFO] [stdout] test router::tests::test_very_long_path_not_found ... ok [INFO] [stdout] test tests::extract_content_type_missing_falls_back ... ok [INFO] [stdout] test tests::handler_without_content_type_does_not_trap ... ok [INFO] [stdout] test tests::http_request_malformed_url_returns_400 ... ok [INFO] [stdout] test router::tests::test_wildcard_with_percent_encoded_space_resolves_raw ... ok [INFO] [stdout] test tests::extract_content_type_case_insensitive ... ok [INFO] [stdout] test tests::extract_content_type_html ... ok [INFO] [stdout] test tests::http_request_update_malformed_url_returns_400 ... ok [INFO] [stdout] test tests::static_asset_never_expires ... ok [INFO] [stdout] test build::tests::process_directory_route_without_methods_panics - should panic ... ok [INFO] [stdout] test build::tests::process_directory_ambiguous_route_panics - should panic ... ok [INFO] [stdout] test router::tests::proptests::param_routes_capture_any_segment ... ok [INFO] [stdout] test router::tests::proptests::multi_param_routes_capture_all ... ok [INFO] [stdout] test router::tests::proptests::inserted_routes_are_always_found ... ok [INFO] [stdout] test router::tests::proptests::wildcard_routes_capture_remaining_path ... ok [INFO] [stdout] test router::tests::proptests::wrong_method_returns_method_not_allowed ... ok [INFO] [stdout] test router::tests::proptests::non_inserted_routes_are_not_found ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 318 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.22s [INFO] [stdout] [INFO] [stderr] Doc-tests ic_asset_router [INFO] [stdout] [INFO] [stdout] running 41 tests [INFO] [stdout] test src/assets.rs - assets::certify_assets (line 20) ... ignored [INFO] [stdout] test src/assets.rs - assets::certify_assets_with_mode (line 39) ... ignored [INFO] [stdout] test src/assets.rs - assets::invalidate_all_dynamic (line 240) ... ignored [INFO] [stdout] test src/assets.rs - assets::invalidate_path (line 189) ... ignored [INFO] [stdout] test src/assets.rs - assets::invalidate_prefix (line 214) ... ignored [INFO] [stdout] test src/assets.rs - assets::last_certified_at (line 271) ... ignored [INFO] [stdout] test src/build.rs - build::generate_routes (line 97) ... ignored [INFO] [stdout] test src/context.rs - context::RouteContext (line 83) ... ignored [INFO] [stdout] test src/context.rs - context::RouteContext (line 98) ... ignored [INFO] [stdout] test src/context.rs - context::RouteContext::body_to_str (line 161) ... ignored [INFO] [stdout] test src/context.rs - context::RouteContext::form (line 220) ... ignored [INFO] [stdout] test src/context.rs - context::RouteContext::form_data (line 204) ... ignored [INFO] [stdout] test src/context.rs - context::RouteContext::header (line 143) ... ignored [INFO] [stdout] test src/context.rs - context::RouteContext::json (line 178) ... ignored [INFO] [stdout] test src/lib.rs - (line 104) ... ignored [INFO] [stdout] test src/lib.rs - (line 127) ... ignored [INFO] [stdout] test src/lib.rs - (line 178) ... ignored [INFO] [stdout] test src/lib.rs - (line 217) ... ignored [INFO] [stdout] test src/lib.rs - (line 278) ... ignored [INFO] [stdout] test src/lib.rs - (line 294) ... ignored [INFO] [stdout] test src/lib.rs - (line 318) ... ignored [INFO] [stdout] test src/lib.rs - (line 340) ... ignored [INFO] [stdout] test src/lib.rs - (line 356) ... ignored [INFO] [stdout] test src/lib.rs - (line 374) ... ignored [INFO] [stdout] test src/lib.rs - (line 38) ... ignored [INFO] [stdout] test src/lib.rs - (line 48) ... ignored [INFO] [stdout] test src/lib.rs - (line 68) ... ignored [INFO] [stdout] test src/lib.rs - setup (line 605) ... ignored [INFO] [stdout] test src/middleware.rs - middleware::MiddlewareFn (line 13) ... ignored [INFO] [stdout] test src/route_config.rs - route_config::RouteConfig (line 27) ... ignored [INFO] [stdout] test src/router.rs - router::HandlerResult (line 65) ... ignored [INFO] [stdout] test src/config.rs - config::AssetConfig (line 272) ... ok [INFO] [stdout] test src/certification.rs - certification::CertificationMode::authenticated (line 147) ... ok [INFO] [stdout] test src/config.rs - config::SecurityHeaders::strict (line 122) ... ok [INFO] [stdout] test src/context.rs - context::url_decode (line 275) ... ok [INFO] [stdout] test src/config.rs - config::SecurityHeaders::permissive (line 160) ... ok [INFO] [stdout] test src/config.rs - config::SecurityHeaders::none (line 191) ... ok [INFO] [stdout] test src/certification.rs - certification::FullConfig (line 253) ... ok [INFO] [stdout] test src/context.rs - context::parse_form_body (line 340) ... ok [INFO] [stdout] test src/certification.rs - certification::FullConfigBuilder (line 300) ... ok [INFO] [stdout] test src/certification.rs - certification::CertificationMode (line 48) ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 10 passed; 0 failed; 31 ignored; 0 measured; 0 filtered out; finished in 1.41s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "953c2e478af83a1cf131a7a2cfb97ac6ce0eca08db5019ec952e1508a5430b3b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "953c2e478af83a1cf131a7a2cfb97ac6ce0eca08db5019ec952e1508a5430b3b", kill_on_drop: false }` [INFO] [stdout] 953c2e478af83a1cf131a7a2cfb97ac6ce0eca08db5019ec952e1508a5430b3b