[INFO] cloning repository https://github.com/tamatebox/revolver [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/tamatebox/revolver" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftamatebox%2Frevolver", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftamatebox%2Frevolver'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] ebaf863644077bd429ece143a889ec36aa9e4b7e [INFO] testing tamatebox/revolver against try#28f95933dc0727396c07b48d0a8cb5211b7fb472 for pr-154065-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftamatebox%2Frevolver" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/tamatebox/revolver [INFO] finished tweaking git repo https://github.com/tamatebox/revolver [INFO] tweaked toml for git repo https://github.com/tamatebox/revolver written to /workspace/builds/worker-7-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/tamatebox/revolver on toolchain 28f95933dc0727396c07b48d0a8cb5211b7fb472 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/tamatebox/revolver 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" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/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" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 97d36107fe17a3e3aa2e14e931a81686b6f06f0da9a634ce9b51e00661dbd590 [INFO] running `Command { std: "docker" "start" "-a" "97d36107fe17a3e3aa2e14e931a81686b6f06f0da9a634ce9b51e00661dbd590", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "97d36107fe17a3e3aa2e14e931a81686b6f06f0da9a634ce9b51e00661dbd590", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "97d36107fe17a3e3aa2e14e931a81686b6f06f0da9a634ce9b51e00661dbd590", kill_on_drop: false }` [INFO] [stdout] 97d36107fe17a3e3aa2e14e931a81686b6f06f0da9a634ce9b51e00661dbd590 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/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" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 06d141c1606da316032894249f9b19e0b4abd7c6d853aaa1851104a936aac154 [INFO] running `Command { std: "docker" "start" "-a" "06d141c1606da316032894249f9b19e0b4abd7c6d853aaa1851104a936aac154", kill_on_drop: false }` [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling zerocopy v0.8.48 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Compiling cc v1.2.62 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling tokio v1.52.3 [INFO] [stderr] Compiling zerofrom v0.1.8 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling simd-adler32 v0.3.9 [INFO] [stderr] Compiling rand v0.10.1 [INFO] [stderr] Compiling scheduled-thread-pool v0.2.7 [INFO] [stderr] Compiling fallible-iterator v0.3.0 [INFO] [stderr] Compiling fallible-streaming-iterator v0.1.9 [INFO] [stderr] Compiling ogg_pager v0.7.2 [INFO] [stderr] Compiling r2d2 v0.8.10 [INFO] [stderr] Compiling yoke v0.8.2 [INFO] [stderr] Compiling tinyvec v1.11.0 [INFO] [stderr] Compiling clap_derive v4.6.1 [INFO] [stderr] Compiling lofty_attr v0.12.0 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling thread_local v1.1.9 [INFO] [stderr] Compiling zerovec v0.11.6 [INFO] [stderr] Compiling zerotrie v0.2.4 [INFO] [stderr] Compiling nu-ansi-term v0.50.3 [INFO] [stderr] Compiling flate2 v1.1.9 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling tinystr v0.8.3 [INFO] [stderr] Compiling potential_utf v0.1.5 [INFO] [stderr] Compiling uuid v1.23.1 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling data-encoding v2.11.0 [INFO] [stderr] Compiling icu_collections v2.2.0 [INFO] [stderr] Compiling matchit v0.8.4 [INFO] [stderr] Compiling icu_locale_core v2.2.0 [INFO] [stderr] Compiling rayon v1.12.0 [INFO] [stderr] Compiling unicode-normalization v0.1.25 [INFO] [stderr] Compiling quick-xml v0.36.2 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling libsqlite3-sys v0.30.1 [INFO] [stderr] Compiling lofty v0.24.0 [INFO] [stderr] Compiling socket2 v0.5.10 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling axum-core v0.5.6 [INFO] [stderr] Compiling clap v4.6.1 [INFO] [stderr] Compiling icu_provider v2.2.0 [INFO] [stderr] Compiling icu_properties v2.2.0 [INFO] [stderr] Compiling icu_normalizer v2.2.0 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling serde_path_to_error v0.1.20 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling idna_adapter v1.2.2 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling rand v0.8.6 [INFO] [stderr] Compiling hashlink v0.9.1 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling hyper v1.9.0 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling tower-http v0.6.11 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling axum v0.8.9 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling rusqlite v0.32.1 [INFO] [stderr] Compiling r2d2_sqlite v0.25.0 [INFO] [stderr] Compiling revolver v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 08s [INFO] running `Command { std: "docker" "inspect" "06d141c1606da316032894249f9b19e0b4abd7c6d853aaa1851104a936aac154", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "06d141c1606da316032894249f9b19e0b4abd7c6d853aaa1851104a936aac154", kill_on_drop: false }` [INFO] [stdout] 06d141c1606da316032894249f9b19e0b4abd7c6d853aaa1851104a936aac154 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/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" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] c3e870a886ee25faf7fa2646527b40c06356763ec5e6c7e25016bab9275e10da [INFO] running `Command { std: "docker" "start" "-a" "c3e870a886ee25faf7fa2646527b40c06356763ec5e6c7e25016bab9275e10da", kill_on_drop: false }` [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling rusqlite v0.32.1 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling bit-vec v0.8.0 [INFO] [stderr] Compiling unarray v0.1.4 [INFO] [stderr] Compiling tower-http v0.6.11 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling bit-set v0.8.0 [INFO] [stderr] Compiling rusty-fork v0.3.1 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling rand v0.9.4 [INFO] [stderr] Compiling rand_xorshift v0.4.0 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling proptest v1.11.0 [INFO] [stderr] Compiling r2d2_sqlite v0.25.0 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling revolver v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 37.52s [INFO] running `Command { std: "docker" "inspect" "c3e870a886ee25faf7fa2646527b40c06356763ec5e6c7e25016bab9275e10da", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c3e870a886ee25faf7fa2646527b40c06356763ec5e6c7e25016bab9275e10da", kill_on_drop: false }` [INFO] [stdout] c3e870a886ee25faf7fa2646527b40c06356763ec5e6c7e25016bab9275e10da [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/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" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] a44cd357eb0d41a20f495bf1aa5f6f233e030af45487f20b743c05bff9e64496 [INFO] running `Command { std: "docker" "start" "-a" "a44cd357eb0d41a20f495bf1aa5f6f233e030af45487f20b743c05bff9e64496", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.37s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/revolver-e77811f52fde3f27) [INFO] [stdout] [INFO] [stdout] running 455 tests [INFO] [stdout] test art::cache::tests::c3_overwrite_same_key_keeps_one_entry ... ok [INFO] [stdout] test art::cache::tests::c2_get_miss_returns_none ... ok [INFO] [stdout] test art::cache::tests::ev1_exceeding_budget_clears_all_then_adds_new ... ok [INFO] [stdout] test art::cache::tests::c1_put_then_get_returns_same_bytes ... ok [INFO] [stdout] test art::cache::tests::ev3_zero_size_entry_does_not_evict ... ok [INFO] [stdout] test art::cache::tests::ev2_overwriting_same_key_does_not_trigger_clear ... ok [INFO] [stdout] test art::extract::tests::ee1_extract_embedded_on_missing_file_returns_none ... ok [INFO] [stdout] test art::extract::tests::ef3_empty_folder_returns_none ... ok [INFO] [stdout] test art::extract::tests::ef2_folder_with_only_random_jpg_falls_back ... ok [INFO] [stdout] test art::extract::tests::ef1_folder_with_cover_jpg_picks_it ... ok [INFO] [stdout] test art::extract::tests::ef4_case_insensitive_stem_and_ext ... ok [INFO] [stdout] test art::extract::tests::ef6_non_image_files_ignored ... ok [INFO] [stdout] test art::extract::tests::ef5_png_only_returned_with_image_png ... ok [INFO] [stdout] test browse::categories::tests::ar1_album_artists_children_borrows_min_album_id_per_artist_for_icon ... ok [INFO] [stdout] test browse::categories::tests::cr2_root_facets_carry_per_facet_icon_album_art_uri ... ok [INFO] [stdout] test browse::albums::unknown_bucket_tests::ub_alb3_unknown_decade_is_separate_parent_with_same_filter ... ok [INFO] [stdout] test browse::categories::tests::cr4_top_level_drops_unknown_and_duplicates ... ok [INFO] [stdout] test browse::artist_tracks::tests::at2_children_ordered_by_album_then_track ... ok [INFO] [stdout] test browse::categories::tests::cr3_top_level_order_drives_root ... ok [INFO] [stdout] test browse::artist_tracks::tests::at3_metadata_picks_aa_parent_when_album_artist_exists ... ok [INFO] [stdout] test browse::categories::tests::cr1_root_children_with_defaults_returns_10 ... ok [INFO] [stdout] test browse::albums::unknown_bucket_tests::ub_alb1_unknown_genre_contains_only_fully_untagged_albums ... ok [INFO] [stdout] test browse::categories::tests::ar2_person_rep_album_id_resolves_each_variant ... ok [INFO] [stdout] test browse::artist_tracks::tests::at5_children_normalizes_input_for_fuzzy_match ... ok [INFO] [stdout] test browse::artist_tracks::tests::at3b_metadata_falls_back_to_ar_for_track_only_artist ... ok [INFO] [stdout] test browse::categories::tests::cr5_quality_categories_hidden_via_top_level ... ok [INFO] [stdout] test browse::artist_tracks::tests::at1_children_returns_only_x_tracks_across_albums ... ok [INFO] [stdout] test browse::artist_tracks::tests::at4_track_count_helper_returns_zero_when_no_tracks ... ok [INFO] [stdout] test browse::albums::unknown_bucket_tests::ub_alb2_unknown_year_uses_same_rule_against_year_column ... ok [INFO] [stdout] test browse::categories::tests::cr7_empty_top_level_returns_no_children ... ok [INFO] [stdout] test browse::categories::tests::cr6_classical_facets_self_hide_when_empty ... ok [INFO] [stdout] test browse::categories::tests::ub2_year_enumeration_appends_unknown_when_any_album_yearless ... ok [INFO] [stdout] test browse::categories::tests::ub1_genre_enumeration_appends_unknown_when_any_album_untagged ... ok [INFO] [stdout] test browse::categories::tests::ub3_decade_enumeration_appends_unknown_when_any_album_yearless ... ok [INFO] [stdout] test browse::played::tests::pb4_parent_id_is_cat_played ... ok [INFO] [stdout] test browse::categories::tests::yr2_decades_children_returns_distinct_decades_desc ... ok [INFO] [stdout] test browse::categories::tests::yr1_years_children_returns_distinct_years_desc ... ok [INFO] [stdout] test browse::categories::tests::yr3_root_self_hides_year_and_decade_when_empty ... ok [INFO] [stdout] test browse::categories::tests::yr4_root_surfaces_year_and_decade_when_any_track_has_year ... ok [INFO] [stdout] test browse::played::tests::pb2_unplayed_albums_are_excluded ... ok [INFO] [stdout] test browse::categories::tests::ub5_unknown_bucket_lands_on_correct_page ... ok [INFO] [stdout] test browse::played::tests::pb1_orders_by_max_last_played_at_desc ... ok [INFO] [stdout] test browse::categories::tests::ub4_no_unknown_bucket_when_all_albums_tagged ... ok [INFO] [stdout] test browse::random::tests::rb2_pagination_offset_and_count ... ok [INFO] [stdout] test browse::quality::tests::qb2_lossy_returns_only_lossy_albums ... ok [INFO] [stdout] test browse::quality::tests::qb1_hires_returns_only_hires_albums ... ok [INFO] [stdout] test browse::quality::tests::qb5_empty_quality_returns_zero ... ok [INFO] [stdout] test browse::random::tests::rb1_random_follows_state_order ... ok [INFO] [stdout] test browse::played::tests::pb3_pagination ... ok [INFO] [stdout] test browse::random::tests::rb3_empty_state_returns_zero ... ok [INFO] [stdout] test browse::quality::tests::qb3_mixed_returns_only_mixed_albums ... ok [INFO] [stdout] test browse::played::tests::pb5_empty_history_returns_zero ... ok [INFO] [stdout] test browse::random::tests::rb5_stale_album_id_in_state_is_skipped ... ok [INFO] [stdout] test browse::random::tests::rb6_total_matches_respects_reshuffle_limit ... ok [INFO] [stdout] test browse::quality::tests::qb4_pagination_offset_and_count ... ok [INFO] [stdout] test browse::recent::tests::rr1_no_age_cap_returns_all_albums_in_recency_order ... ok [INFO] [stdout] test browse::random::tests::rb4_parent_id_is_cat_random ... ok [INFO] [stdout] test browse::recent::tests::rr3_parent_id_is_cat_recent ... ok [INFO] [stdout] test browse::recent::tests::rr5_empty_library_returns_empty ... ok [INFO] [stdout] test browse::recent::tests::rr2_age_cap_excludes_older_albums ... ok [INFO] [stdout] test browse::search::tests::fz2_artist_search_strips_diacritics_either_direction ... ok [INFO] [stdout] test browse::recent::tests::rr4_pagination_offset_and_count ... ok [INFO] [stdout] test browse::recent::tests::rr7_limit_caps_total_matches_and_rows ... ok [INFO] [stdout] test browse::recent::tests::rr8_none_limit_returns_full_window ... ok [INFO] [stdout] test browse::search::tests::fz1_album_search_strips_accents ... ok [INFO] [stdout] test browse::recent::tests::rr6_existing_album_with_new_track_resurfaces ... ok [INFO] [stdout] test browse::search::tests::fz3_fullwidth_search_input_matches_fullwidth_tag ... ok [INFO] [stdout] test browse::search::tests::fz5_halfwidth_katakana_search_input_matches_katakana_tag ... ok [INFO] [stdout] test browse::search::tests::fz4_hiragana_search_input_matches_katakana_tag ... ok [INFO] [stdout] test browse::search::tests::fz6_case_is_folded_at_query_and_column ... ok [INFO] [stdout] test browse::search::tests::st1_album_class_finds_album_by_title ... ok [INFO] [stdout] test browse::search::tests::st1b_album_class_title_matches_album_artist ... ok [INFO] [stdout] test browse::search::tests::st1c_album_class_title_matches_track_level_artist_via_exists ... ok [INFO] [stdout] test browse::search::tests::st2c_artist_class_finds_track_only_artist_as_ar_container ... ok [INFO] [stdout] test browse::search::tests::st1d_album_class_upnp_album_stays_album_name_only ... ok [INFO] [stdout] test browse::search::tests::st3c_track_class_or_matches_genre ... ok [INFO] [stdout] test browse::search::tests::st2_artist_class_finds_album_artist_by_title ... ok [INFO] [stdout] test browse::search::tests::st2b_artist_class_returns_distinct_artists ... ok [INFO] [stdout] test browse::search::tests::st2d_artist_class_dedupes_album_and_track_artist_to_aa ... ok [INFO] [stdout] test browse::search::tests::st3_track_class_or_matches_any_field ... ok [INFO] [stdout] test browse::search::tests::st3b_track_class_or_matches_track_title ... ok [INFO] [stdout] test browse::search::tests::st4d_track_class_role_composer_routes_to_composer_column ... ok [INFO] [stdout] test browse::search::tests::st4b_conductor_role_returns_conductor_container ... ok [INFO] [stdout] test browse::search::tests::st4_composer_role_returns_composer_container ... ok [INFO] [stdout] test browse::search::tests::st6_derivedfrom_only_returns_empty ... ok [INFO] [stdout] test browse::search::tests::st4c_performer_role_returns_performer_container ... ok [INFO] [stdout] test browse::search::tests::st5_wildcard_returns_empty_didl ... ok [INFO] [stdout] test browse::search::tests::tz2_like_hit_excludes_fuzzy_candidates ... ok [INFO] [stdout] test browse::search::tests::tz3_short_query_uses_like_only_path ... ok [INFO] [stdout] test browse::search::tests::st7_pagination_offset_count ... ok [INFO] [stdout] test browse::search::tests::tz6_track_class_single_title_typo_via_trigram ... ok [INFO] [stdout] test browse::search::tests::st1e_album_class_dc_title_orders_by_rank_buckets ... ok [INFO] [stdout] test browse::search::tests::tz1_album_typo_via_trigram_hits_below_exact ... ok [INFO] [stdout] test browse::search::tests::tz7_composer_role_typo_via_trigram ... ok [INFO] [stdout] test browse::search::tests::tz5_artist_class_typo_via_trigram ... ok [INFO] [stdout] test browse::search::tests::tz4_fuzzy_disabled_drops_typo_hit ... ok [INFO] [stdout] test browse::search::tests::tz9_trigger_sync_insert_update_delete ... ok [INFO] [stdout] test browse::search::tests::tz8_track_class_or_composition_unchanged_by_fuzzy ... ok [INFO] [stdout] test browse::search::tests::tza_album_class_noise_decoys_are_cut_by_jaccard ... ok [INFO] [stdout] test browse::tests::br10_unknown_aa_name_children_returns_zero ... ok [INFO] [stdout] test browse::search::tests::tzb_album_class_typo_still_hits_with_noise_present ... ok [INFO] [stdout] test browse::search::tests::tzd_track_class_like_hit_excludes_fuzzy ... ok [INFO] [stdout] test browse::tests::br13_year_children_filters_to_matching_album ... ok [INFO] [stdout] test browse::tests::br11_browse_track_object_returns_empty_children ... ok [INFO] [stdout] test browse::tests::br14_decade_children_bucketizes_by_ten_years ... ok [INFO] [stdout] test browse::search::tests::tzc_jaccard_tiebreak_orders_closer_typo_first ... ok [INFO] [stdout] test browse::tests::br15_year_with_no_matches_returns_zero ... ok [INFO] [stdout] test browse::tests::br1_root_children_returns_twelve_categories ... ok [INFO] [stdout] test browse::tests::br3_aa_name_children_returns_artist_albums ... ok [INFO] [stdout] test browse::tests::br2_cat_aa_children_returns_distinct_album_artists ... ok [INFO] [stdout] test config::tests::c1_parse_example ... ok [INFO] [stdout] test config::tests::c2_defaults_applied ... ok [INFO] [stdout] test config::tests::c3_missing_required_field_errors ... ok [INFO] [stdout] test config::tests::c4_wrong_type_errors ... ok [INFO] [stdout] test browse::tests::br12_cat_yr_returns_both_distinct_years ... ok [INFO] [stdout] test config::tests::c5_port_zero_and_over_65535_handled ... ok [INFO] [stdout] test config::tests::c6_load_returns_clear_error_for_missing_file ... ok [INFO] [stdout] test config_catalog::tests::cc10_validate_string_array_rejects_non_array_and_non_string ... ok [INFO] [stdout] test config_catalog::tests::cc11_validate_string_array_caps_length ... ok [INFO] [stdout] test config::tests::c7_browse_limits_apply_serde_defaults_when_omitted ... ok [INFO] [stdout] test browse::tests::br3c_aa_name_pagination_start_one_skips_shortcut ... ok [INFO] [stdout] test browse::tests::br3d_aa_name_count_one_returns_shortcut_only ... ok [INFO] [stdout] test config_catalog::tests::cc1_find_known_key ... ok [INFO] [stdout] test config_catalog::tests::cc2_validate_positive_int_accepts_positive ... ok [INFO] [stdout] test config_catalog::tests::cc3_validate_positive_int_rejects_zero_and_negative ... ok [INFO] [stdout] test browse::tests::br8_unknown_album_metadata_returns_not_found ... ok [INFO] [stdout] test browse::tests::br3b_ar_name_children_also_prepends_at_shortcut ... ok [INFO] [stdout] test browse::tests::br6_browse_metadata_for_root ... ok [INFO] [stdout] test browse::tests::br5_cat_al_children_returns_all_albums ... ok [INFO] [stdout] test config_catalog::tests::cc9_validate_string_array_accepts_and_dedupes ... ok [INFO] [stdout] test browse::tests::br9_unknown_track_metadata_returns_not_found ... ok [INFO] [stdout] test browse::tests::br4_alb_id_children_returns_tracks_in_order ... ok [INFO] [stdout] test browse::tracks::tests::bt1_single_disc_album_no_dividers_no_disc_number ... ok [INFO] [stdout] test browse::tracks::tests::bt4_multi_disc_pagination_spans_divider ... ok [INFO] [stdout] test browse::tracks::tests::bt2_multi_disc_album_injects_dividers_with_clean_titles ... ok [INFO] [stdout] test config_catalog::tests::cc13_build_browse_settings_uses_serde_defaults_when_keys_missing ... ok [INFO] [stdout] test browse::tracks::tests::bt5_disc_tracks_children_returns_only_that_disc ... ok [INFO] [stdout] test browse::tracks::tests::bt3_track_metadata_keeps_title_clean_on_multi_disc ... ok [INFO] [stdout] test config_catalog::tests::cc12_top_level_override_picked_up ... ok [INFO] [stdout] test browse::tests::br7_empty_db_categories_return_zero_total ... ok [INFO] [stdout] test config_catalog::tests::cc14_admin_can_clear_a_set_limit_with_null ... ok [INFO] [stdout] test config_catalog::tests::cc6_effective_value_uses_override_when_present ... ok [INFO] [stdout] test db::albums::tests::a4_first_seen_at_is_preserved_across_upserts ... ok [INFO] [stdout] test config_catalog::tests::cc5_effective_value_falls_back_to_default_when_no_override ... ok [INFO] [stdout] test db::albums::tests::a2_same_key_returns_same_id ... ok [INFO] [stdout] test config_catalog::tests::cc8_build_browse_settings_uses_toml_defaults_when_no_overrides ... ok [INFO] [stdout] test db::albums::tests::a1_insert_returns_positive_id ... ok [INFO] [stdout] test config_catalog::tests::cc7_build_browse_settings_applies_overrides ... ok [INFO] [stdout] test db::albums::tests::a3_compilation_flag_differentiates_albums ... ok [INFO] [stdout] test db::albums::tests::os1_album_and_track_ids_stable_across_rescan ... ok [INFO] [stdout] test db::albums::tests::lp1_bump_album_last_played_at_sets_value ... ok [INFO] [stdout] test db::albums::tests::la1_recalc_last_added_at_uses_max_of_tracks ... ok [INFO] [stdout] test db::albums::tests::q2_all_hires_24_96_quality_is_hires ... ok [INFO] [stdout] test db::albums::tests::la2_recalc_last_added_at_is_null_for_album_without_tracks ... ok [INFO] [stdout] test db::albums::tests::o2_delete_orphans_keeps_everything_when_all_have_tracks ... ok [INFO] [stdout] test db::albums::tests::o1_delete_orphans_removes_albums_without_tracks ... ok [INFO] [stdout] test db::albums::tests::q5_hires_plus_lossless_is_mixed ... ok [INFO] [stdout] test db::albums::tests::q1_all_lossless_cd_quality_is_lossless ... ok [INFO] [stdout] test db::albums::tests::q4_flac_plus_mp3_is_mixed ... ok [INFO] [stdout] test db::albums::tests::q6_unknown_codec_only_falls_back_to_unknown ... ok [INFO] [stdout] test db::albums::tests::q3_all_mp3_quality_is_lossy ... ok [INFO] [stdout] test db::albums::tests::rep1_get_representative_track_path_returns_lowest_disc_track ... ok [INFO] [stdout] test db::albums::tests::r1_recalc_counts_sets_track_count ... ok [INFO] [stdout] test db::albums::tests::r2_recalc_counts_sets_total_duration_ms ... ok [INFO] [stdout] test db::config_overrides::tests::co2_set_then_get ... ok [INFO] [stdout] test db::config_overrides::tests::co6_list_all_returns_all_rows ... ok [INFO] [stdout] test db::albums::tests::rep2_get_representative_track_path_unknown_album_returns_none ... ok [INFO] [stdout] test db::config_overrides::tests::co1_get_missing_returns_none ... ok [INFO] [stdout] test db::config_overrides::tests::co4_delete_returns_true_when_present ... ok [INFO] [stdout] test db::schema::tests::s11_rg_columns_exist_after_migrate ... ok [INFO] [stdout] test db::config_overrides::tests::co5_delete_returns_false_when_missing ... ok [INFO] [stdout] test db::config_overrides::tests::co3_set_overwrites_and_updates_timestamp ... ok [INFO] [stdout] test db::schema::tests::s1_tables_created ... ok [INFO] [stdout] test db::schema::tests::sv3_ensure_compatible_passes_when_recorded_is_missing ... ok [INFO] [stdout] test db::schema::tests::s12_v8_capture_only_columns_exist_after_migrate ... ok [INFO] [stdout] test db::schema::tests::s10_backfill_is_idempotent_and_skips_already_set ... ok [INFO] [stdout] test db::schema::tests::s2_migrate_is_idempotent ... ok [INFO] [stdout] test db::schema::tests::s6_albums_denormalized_columns_exist ... ok [INFO] [stdout] test db::schema::tests::s3_foreign_key_enforced ... ok [INFO] [stdout] test db::schema::tests::s8_norm_columns_exist_after_migrate ... ok [INFO] [stdout] test db::schema::tests::sv1_migrate_writes_schema_version ... ok [INFO] [stdout] test db::state_kv::tests::k2_set_then_get ... ok [INFO] [stdout] test db::state_kv::tests::k3_set_overwrites ... ok [INFO] [stdout] test db::state_kv::tests::k1_get_missing_returns_none ... ok [INFO] [stdout] test db::schema::tests::s4_play_count_and_last_played_at_columns_exist ... ok [INFO] [stdout] test db::schema::tests::sv2_ensure_compatible_passes_on_fresh_db ... ok [INFO] [stdout] test db::schema::tests::sv4_ensure_compatible_rejects_newer_db ... ok [INFO] [stdout] test db::tracks::tests::d1_detect_deleted_removes_paths_not_in_enumerated ... ok [INFO] [stdout] test db::tracks::tests::d2_detect_deleted_keeps_everything_when_all_enumerated ... ok [INFO] [stdout] test db::udf::tests::j1_identical_strings_score_one ... ok [INFO] [stdout] test db::udf::tests::j2_disjoint_strings_score_zero ... ok [INFO] [stdout] test db::udf::tests::j3_typo_swap_scores_high_enough_for_default_threshold ... ok [INFO] [stdout] test db::udf::tests::j4_one_trigram_overlap_scores_below_threshold ... ok [INFO] [stdout] test db::udf::tests::j5_substring_relationship_scores_well ... ok [INFO] [stdout] test db::udf::tests::j6_short_input_returns_zero ... ok [INFO] [stdout] test db::udf::tests::j7_repeated_trigrams_dedupe_in_union ... ok [INFO] [stdout] test db::tracks::tests::t1_insert_new ... ok [INFO] [stdout] test db::tracks::tests::u1_first_upsert_returns_inserted ... ok [INFO] [stdout] test db::tracks::tests::t3_tag_and_mtime_updated_on_conflict ... ok [INFO] [stdout] test db::tracks::tests::g1_get_mtimes_returns_path_to_mtime_map ... ok [INFO] [stdout] test db::tracks::tests::fm1_file_move_is_delete_plus_insert_with_fresh_added_at ... ok [INFO] [stdout] test db::tracks::tests::t4_album_id_can_change_on_conflict ... ok [INFO] [stdout] test db::schema::tests::s5_migrate_upgrades_existing_pre_play_count_db ... ok [INFO] [stdout] test db::tracks::tests::t2_added_at_is_preserved_on_conflict ... ok [INFO] [stdout] test db::schema::tests::s13_v8_columns_added_to_pre_v8_db_via_alter ... ok [INFO] [stdout] test db::tracks::tests::u2_second_upsert_on_same_path_returns_updated ... ok [INFO] [stdout] test db::schema::tests::s7_migrate_upgrades_existing_pre_denormalize_db ... ok [INFO] [stdout] test db::tracks::tests::rg1_replaygain_values_round_trip_via_upsert ... ok [INFO] [stdout] test db::tracks::tests::v8_capture_only_fields_round_trip_via_upsert ... ok [INFO] [stdout] test db::schema::tests::s9_backfill_populates_norm_from_existing_rows ... ok [INFO] [stdout] test http::admin::tests::h1_scan_report_returns_404_when_no_report ... ok [INFO] [stdout] test http::admin::tests::h4_rescan_returns_conflict_when_lock_held ... ok [INFO] [stdout] test http::admin::tests::ui1_admin_ui_returns_html ... ok [INFO] [stdout] test http::admin::tests::h3_rescan_returns_202_immediately_and_completes_in_background ... ok [INFO] [stdout] test http::admin::tests::st1_empty_library_returns_zeros ... ok [INFO] [stdout] test http::admin::tests::st6_uptime_is_non_negative ... ok [INFO] [stdout] test http::admin::tests::st4_last_scan_extracted_from_state_kv ... ok [INFO] [stdout] test http::admin::tests::st6b_observability_fields_present ... ok [INFO] [stdout] test http::admin::tests::h5_reshuffle_returns_200_with_count ... ok [INFO] [stdout] test http::admin::tests::st2_counts_match_after_seed ... ok [INFO] [stdout] test http::admin::tests::st3_play_stats_reflect_in_response ... ok [INFO] [stdout] test http::admin::tests::st5_malformed_last_scan_json_returns_null ... ok [INFO] [stdout] test http::admin::tests::st_rg1_replaygain_coverage_counts_track_gain_only ... ok [INFO] [stdout] test http::admin_config::tests::ac1_get_returns_all_keys_with_defaults ... ok [INFO] [stdout] test http::admin::tests::ui2_old_admin_paths_redirect_to_root ... ok [INFO] [stdout] test http::admin_config::tests::ac3_post_unknown_key_returns_422 ... ok [INFO] [stdout] test http::admin_config::tests::ac1b_top_level_carries_choices_metadata ... ok [INFO] [stdout] test http::admin::tests::ui3_html_references_backend_endpoints ... ok [INFO] [stdout] test http::admin_config::tests::ac2_post_partial_update_succeeds ... ok [INFO] [stdout] test http::admin_config::tests::ac6_delete_reverts_to_default ... ok [INFO] [stdout] test http::art::tests::ah1_get_art_returns_200_with_folder_jpg ... ok [INFO] [stdout] test http::admin_config::tests::ac8_post_updates_browse_snapshot ... ok [INFO] [stdout] test http::gena::tests::pc1_parse_first_callback_single_url ... ok [INFO] [stdout] test http::gena::tests::pc2_parse_first_callback_takes_first_of_many ... ok [INFO] [stdout] test http::gena::tests::pc3_parse_first_callback_rejects_malformed ... ok [INFO] [stdout] test http::admin_config::tests::ac5_post_is_all_or_nothing ... ok [INFO] [stdout] test http::admin_config::tests::ac4_post_invalid_value_returns_422 ... ok [INFO] [stdout] test http::gena::tests::pt1_parse_timeout_normal ... ok [INFO] [stdout] test http::gena::tests::pt2_parse_timeout_clamped ... ok [INFO] [stdout] test http::gena::tests::pt3_parse_timeout_infinite_falls_back_to_default ... ok [INFO] [stdout] test http::gena::tests::pt4_parse_timeout_missing_or_malformed_falls_back ... ok [INFO] [stdout] test http::admin_config::tests::ac7_delete_unknown_key_returns_404 ... ok [INFO] [stdout] test http::art::tests::ah2_get_art_unknown_album_returns_404 ... ok [INFO] [stdout] test http::art::tests::ah4_second_call_serves_from_cache ... ok [INFO] [stdout] test http::admin::tests::h2_scan_report_returns_saved_json ... ok [INFO] [stdout] test http::art::tests::ah3_get_art_no_picture_serves_placeholder ... ok [INFO] [stdout] test http::gena::tests::h_sub4_missing_callback_returns_400 ... ok [INFO] [stdout] test http::gena::tests::h_sub2_refresh_with_existing_sid_returns_same_sid ... ok [INFO] [stdout] test http::stream::tests::range_edge_end_beyond_total_is_clamped ... ok [INFO] [stdout] test http::stream::tests::range_edge_missing_bytes_prefix_is_malformed ... ok [INFO] [stdout] test http::stream::tests::range_edge_multi_range_is_rejected ... ok [INFO] [stdout] test http::stream::tests::range_edge_suffix_larger_than_total_clamps_to_full_file ... ok [INFO] [stdout] test http::stream::tests::range_edge_total_zero_makes_any_range_unsatisfiable ... ok [INFO] [stdout] test http::admin::tests::h6_reshuffle_does_not_bump_system_update_id ... ok [INFO] [stdout] test http::gena::tests::h_sub3_refresh_unknown_sid_returns_412 ... ok [INFO] [stdout] test http::gena::tests::h_unsub1_existing_sid_removes_from_registry ... ok [INFO] [stdout] test http::gena::tests::h_sub1_new_subscribe_returns_200_with_sid_and_timeout ... ok [INFO] [stdout] test http::soap_ctrl::tests::sc2_control_cm_get_protocol_info_returns_source_list ... ok [INFO] [stdout] test http::soap_ctrl::tests::sc3_control_cm_unknown_action_returns_invalid_action ... ok [INFO] [stdout] test http::stream::tests::pc1_no_range_increments_play_count ... ok [INFO] [stdout] test http::stream::tests::pc2_range_starting_at_zero_increments_play_count ... ok [INFO] [stdout] test http::stream::tests::pc3_non_zero_start_range_does_not_count ... ok [INFO] [stdout] test http::stream::tests::rp1_parse_range_never_panics ... ok [INFO] [stdout] test http::soap_ctrl::tests::sc1_control_cd_browse_root_returns_categories ... ok [INFO] [stdout] test http::stream::tests::rp2_ok_range_bounds_invariant ... ok [INFO] [stdout] test http::stream::tests::pc4_suffix_range_does_not_count ... ok [INFO] [stdout] test http::stream::tests::pc5_multiple_plays_increment_correctly ... ok [INFO] [stdout] test http::stream::tests::st1_no_range_returns_200_full_body ... ok [INFO] [stdout] test http::stream::tests::st2_closed_range_returns_206 ... ok [INFO] [stdout] test http::tests::ag_mdns1_is_mdns_hostname_matches_dotlocal_and_trailing_dot ... ok [INFO] [stdout] test http::tests::ag_mdns2_is_mdns_hostname_rejects_substrings_and_empty ... ok [INFO] [stdout] test http::stream::tests::st4_suffix_range_returns_last_n_bytes ... ok [INFO] [stdout] test http::tests::ag2_admin_with_lan_origin_passes_through ... ok [INFO] [stdout] test http::stream::tests::st3_open_ended_range_returns_206 ... ok [INFO] [stdout] test http::tests::eo1_extract_origin_host_basic ... ok [INFO] [stdout] test normalize::tests::n1_accents_are_stripped ... ok [INFO] [stdout] test normalize::tests::n2_halfwidth_and_fullwidth_latin_fold_to_ascii ... ok [INFO] [stdout] test normalize::tests::n3_case_is_folded ... ok [INFO] [stdout] test normalize::tests::n4_katakana_normalizes_to_hiragana ... ok [INFO] [stdout] test normalize::tests::n5_halfwidth_katakana_normalizes_to_hiragana ... ok [INFO] [stdout] test normalize::tests::n6_hiragana_unchanged ... ok [INFO] [stdout] test http::tests::ag1_admin_without_origin_header_passes_through ... ok [INFO] [stdout] test normalize::tests::n8_empty_string_round_trip ... ok [INFO] [stdout] test normalize::tests::n7_idempotent_on_mixed_input ... ok [INFO] [stdout] test http::stream::tests::st6_unknown_track_returns_404 ... ok [INFO] [stdout] test http::stream::tests::st5_out_of_range_returns_416 ... ok [INFO] [stdout] test random::tests::ra1_new_page_returns_empty ... ok [INFO] [stdout] test http::tests::ag4_admin_with_localhost_origin_passes_through ... ok [INFO] [stdout] test http::stream::tests::st7_malformed_range_returns_400 ... ok [INFO] [stdout] test http::tests::ag3_admin_with_external_origin_returns_403 ... ok [INFO] [stdout] test http::stream::tests::st8_path_outside_library_root_returns_404 ... ok [INFO] [stdout] test http::tests::ag5_non_admin_routes_are_not_gated ... ok [INFO] [stdout] test http::tests::ag6_admin_with_mdns_origin_passes_through ... ok [INFO] [stdout] test random::tests::ra10_maybe_reshuffle_runs_on_first_call_with_interval ... ok [INFO] [stdout] test http::tests::ag7_admin_with_fakelocal_origin_rejected ... ok [INFO] [stdout] test scan::matcher::tests::m1_compilation_overrides_everything ... ok [INFO] [stdout] test random::tests::ra4_page_out_of_range_returns_empty_no_panic ... ok [INFO] [stdout] test scan::matcher::tests::m2_album_artist_takes_precedence_over_artist ... ok [INFO] [stdout] test scan::matcher::tests::m3_falls_back_to_artist_when_album_artist_empty_or_missing ... ok [INFO] [stdout] test random::tests::ra5_empty_library_reshuffle_returns_zero ... ok [INFO] [stdout] test scan::matcher::tests::m4_unknown_when_all_empty_or_missing ... ok [INFO] [stdout] test scan::matcher::tests::m5_initial_with_both_returns_min ... ok [INFO] [stdout] test scan::matcher::tests::m6_initial_with_only_btime ... ok [INFO] [stdout] test scan::matcher::tests::m7_not_initial_returns_now ... ok [INFO] [stdout] test scan::matcher::tests::m8_initial_future_btime_is_clamped_to_now ... ok [INFO] [stdout] test scan::progress::tests::sp1_default_is_idle ... ok [INFO] [stdout] test scan::progress::tests::sp4_tick_and_advance_increment ... ok [INFO] [stdout] test scan::progress::tests::sp2_begin_scan_sets_walking ... ok [INFO] [stdout] test scan::progress::tests::sp3_enter_resets_current_and_sets_total ... ok [INFO] [stdout] test scan::progress::tests::sp5_finish_returns_to_idle ... ok [INFO] [stdout] test scan::report::tests::rp2_issue_and_skipped_serialize_correctly ... ok [INFO] [stdout] test scan::report::tests::rp1_scan_report_serializes_with_expected_keys ... ok [INFO] [stdout] test scan::report::tests::rp3_error_field_is_omitted_when_none ... ok [INFO] [stdout] test scan::tagger::tests::cf2_codec_for_mp4_falls_back_to_aac_when_file_missing ... ok [INFO] [stdout] test scan::tagger::tests::cf3_codec_for_unknown_returns_unknown ... ok [INFO] [stdout] test scan::tagger::tests::cl1_codec_is_lossless_includes_all_three_lossless_codecs ... ok [INFO] [stdout] test scan::tagger::tests::cl2_codec_is_lossless_rejects_lossy_and_unknown ... ok [INFO] [stdout] test scan::tagger::tests::mf1_mime_for_known_filetypes ... ok [INFO] [stdout] test scan::tagger::tests::mf2_mime_for_unknown_falls_back_to_octet_stream ... ok [INFO] [stdout] test scan::tagger::tests::pb1_parse_bool_flag_true_variants ... ok [INFO] [stdout] test scan::tagger::tests::pb2_parse_bool_flag_false_variants ... ok [INFO] [stdout] test scan::tagger::tests::pn1_parse_num_prefix_extracts_first_number ... ok [INFO] [stdout] test scan::tagger::tests::pn2_parse_num_prefix_returns_none_on_garbage ... ok [INFO] [stdout] test scan::tagger::tests::pr1_parse_rg_gain_accepts_suffix_variants ... ok [INFO] [stdout] test scan::tagger::tests::pr2_parse_rg_peak_accepts_linear_amplitude ... ok [INFO] [stdout] test scan::tagger::tests::pr3_parse_rg_rejects_garbage_and_nonfinite ... ok [INFO] [stdout] test scan::tagger::tests::cf1_codec_for_known_filetypes ... ok [INFO] [stdout] test scan::tagger::tests::py1_parse_year_accepts_bare_and_iso_forms ... ok [INFO] [stdout] test scan::tagger::tests::py2_parse_year_rejects_empty_and_out_of_range ... ok [INFO] [stdout] test scan::report::tests::rp4_error_field_serializes_when_some ... ok [INFO] [stdout] test scan::tests::b1_should_bump_when_inserted ... ok [INFO] [stdout] test scan::tests::b3_should_bump_when_updated ... ok [INFO] [stdout] test scan::tests::b2_should_bump_when_deleted ... ok [INFO] [stdout] test http::tests::bl2_normal_soap_body_still_works ... ok [INFO] [stdout] test scan::tests::b4_should_not_bump_when_all_zero ... ok [INFO] [stdout] test scan::tests::b5_should_not_bump_when_only_unchanged_or_tag_failed ... ok [INFO] [stdout] test scan::tests::mt1_partition_by_mtime_matches_skip_else_re_read ... ok [INFO] [stdout] test scan::tests::mt2_partition_all_matched_skips_everything ... ok [INFO] [stdout] test scan::tests::mt3_partition_all_new_re_reads_everything ... ok [INFO] [stdout] test random::tests::ra2_after_reshuffle_page_contains_all_ids ... ok [INFO] [stdout] test random::tests::ra6_reshuffle_truncates_to_limit ... ok [INFO] [stdout] test scan::tests::rl1_relativize_path_strips_library_root_prefix ... ok [INFO] [stdout] test scan::tests::rl2_relativize_path_falls_back_to_filename_when_prefix_mismatch ... ok [INFO] [stdout] test scan::walker::tests::w10_symlink_outside_library_is_skipped ... ok [INFO] [stdout] test http::tests::bl1_soap_body_exceeding_64k_returns_4xx ... ok [INFO] [stdout] test random::tests::ra8_none_limit_keeps_full_population ... ok [INFO] [stdout] test scan::walker::tests::w11_unicode_filenames_collected ... ok [INFO] [stdout] test http::upnp::tests::uh1_description_xml_returns_200_with_uuid ... ok [INFO] [stdout] test scan::walker::tests::w1_empty_dir ... ok [INFO] [stdout] test scan::walker::tests::w2_single_flac ... ok [INFO] [stdout] test scan::walker::tests::w12_companion_files_counted_not_skipped ... ok [INFO] [stdout] test scan::walker::tests::w4_hidden_file_pruned ... ok [INFO] [stdout] test scan::walker::tests::w5_hidden_dir_pruned ... ok [INFO] [stdout] test scan::walker::tests::w3_flac_and_unrelated_binary ... ok [INFO] [stdout] test scan::walker::tests::w6_zero_size_flac ... ok [INFO] [stdout] test scan::walker::tests::w7_nested_dirs ... ok [INFO] [stdout] test ssdp::tests::p1_parse_valid_msearch ... ok [INFO] [stdout] test ssdp::tests::p2_parse_msearch_without_mx_defaults_to_zero ... ok [INFO] [stdout] test scan::walker::tests::w8_case_insensitive_ext ... ok [INFO] [stdout] test scan::walker::tests::w9_symlink_inside_library_is_accepted ... ok [INFO] [stdout] test upnp::connection_manager::tests::cm2_get_protocol_info_has_empty_sink ... ok [INFO] [stdout] test upnp::connection_manager::tests::cm3_get_current_connection_ids_returns_zero ... ok [INFO] [stdout] test upnp::connection_manager::tests::cm4_get_current_connection_info_returns_all_fixed_fields ... ok [INFO] [stdout] test upnp::connection_manager::tests::cm5_unknown_action_returns_invalid_action_fault ... ok [INFO] [stdout] test upnp::connection_manager::tests::cm6_connection_complete_returns_invalid_action_fault ... ok [INFO] [stdout] test upnp::connection_manager::tests::cm7_arbitrary_unknown_action_returns_401 ... ok [INFO] [stdout] test ssdp::tests::p3_parse_msearch_clamps_mx_to_cap ... ok [INFO] [stdout] test upnp::connection_manager::tests::cm1_get_protocol_info_lists_all_five_mimes ... ok [INFO] [stdout] test upnp::device::tests::d1_description_contains_uuid_friendly_name_and_services ... ok [INFO] [stdout] test upnp::device::tests::d2_friendly_name_is_xml_escaped ... ok [INFO] [stdout] test upnp::device::tests::d3_description_advertises_icon_list ... ok [INFO] [stdout] test upnp::didl::tests::dl1_empty_didl_has_envelope ... ok [INFO] [stdout] test upnp::didl::tests::dl2_container_has_required_fields ... ok [INFO] [stdout] test upnp::didl::tests::dl3_item_has_res_attributes ... ok [INFO] [stdout] test random::tests::ra7_limit_greater_than_population_returns_full_population ... ok [INFO] [stdout] test upnp::didl::tests::dl3b_item_omits_original_disc_number_when_none ... ok [INFO] [stdout] test upnp::didl::tests::dl4_xml_escape_in_title_and_attribute ... ok [INFO] [stdout] test upnp::didl::tests::dl5_xml_escape_preserves_apostrophe_in_title ... ok [INFO] [stdout] test upnp::didl::tests::dl6_xml_escape_drops_disallowed_control_chars ... ok [INFO] [stdout] test upnp::gena::tests::gn1_register_creates_uuid_sid_and_zero_seq ... ok [INFO] [stdout] test upnp::gena::tests::gn3_sweep_expired_removes_past_subscriptions ... ok [INFO] [stdout] test upnp::gena::tests::gn4_propertyset_xml_has_system_update_id ... ok [INFO] [stdout] test upnp::gena::tests::gn4b_propertyset_xml_escapes_values ... ok [INFO] [stdout] test upnp::gena::tests::gn_register_returns_none_at_cap ... ok [INFO] [stdout] test upnp::gena::tests::gn2_refresh_extends_expires_at_and_returns_true ... ok [INFO] [stdout] test upnp::gena::tests::gn_take_next_seq_increments ... ok [INFO] [stdout] test upnp::gena::tests::gn_snapshot_filters_by_service_and_increments ... ok [INFO] [stdout] test upnp::icon::tests::ic1_category_icons_slugs_are_sorted_for_easy_diffing ... ok [INFO] [stdout] test upnp::icon::tests::ic2_category_icon_lookup_round_trips_and_misses_return_none ... ok [INFO] [stdout] test upnp::notify::tests::n1_parse_http_url_with_port_and_path ... ok [INFO] [stdout] test upnp::notify::tests::n2_parse_http_url_without_port_defaults_80 ... ok [INFO] [stdout] test upnp::notify::tests::n3_parse_http_url_without_path ... ok [INFO] [stdout] test upnp::notify::tests::n4_parse_http_url_rejects_invalid ... ok [INFO] [stdout] test upnp::notify::tests::n10_send_notify_returns_err_on_404_response ... ok [INFO] [stdout] test upnp::notify::tests::n6_send_notify_returns_err_on_invalid_url ... ok [INFO] [stdout] test upnp::notify::tests::n7_is_lan_host_accepts_private_ranges ... ok [INFO] [stdout] test upnp::notify::tests::n7b_is_lan_host_accepts_aws_metadata_address_explicitly ... ok [INFO] [stdout] test upnp::notify::tests::n8_is_lan_host_rejects_public_and_hostnames ... ok [INFO] [stdout] test upnp::notify::tests::n5_send_notify_to_local_listener_succeeds ... ok [INFO] [stdout] test upnp::notify::tests::n9_send_notify_rejects_public_callback ... ok [INFO] [stdout] test upnp::object_id::tests::o2_parse_categories ... ok [INFO] [stdout] test upnp::object_id::tests::o3_parse_album_artist_via_roundtrip ... ok [INFO] [stdout] test upnp::object_id::tests::o4_parse_alb_and_trk_id ... ok [INFO] [stdout] test upnp::object_id::tests::o5_invalid_returns_none ... ok [INFO] [stdout] test upnp::object_id::tests::o5b_legacy_recent_range_ids_return_none ... ok [INFO] [stdout] test upnp::object_id::tests::o6_roundtrip_all_variants ... ok [INFO] [stdout] test upnp::object_id::tests::o7_year_and_decade_parse_and_round_trip ... ok [INFO] [stdout] test upnp::object_id::tests::o8_unknown_sentinels_parse_and_round_trip ... ok [INFO] [stdout] test upnp::object_id::tests::o1_parse_root ... ok [INFO] [stdout] test http::art::tests::ah5_non_numeric_album_id_in_path_returns_4xx ... ok [INFO] [stdout] test random::tests::ra9_maybe_reshuffle_none_interval_is_noop ... ok [INFO] [stdout] test upnp::scpd::tests::sc1_content_directory_has_required_actions ... ok [INFO] [stdout] test upnp::scpd::tests::sc2_connection_manager_has_required_actions ... ok [INFO] [stdout] test upnp::search::tests::sp10_derivedfrom_only_yields_class_without_predicate ... ok [INFO] [stdout] test upnp::search::tests::sp11_unknown_class_derivedfrom_becomes_any ... ok [INFO] [stdout] test upnp::search::tests::sp1_dc_title_contains_only ... ok [INFO] [stdout] test upnp::search::tests::sp2_class_album_with_title ... ok [INFO] [stdout] test upnp::search::tests::sp3_class_artist_with_title ... ok [INFO] [stdout] test upnp::search::tests::sp4_track_with_or_composition ... ok [INFO] [stdout] test upnp::search::tests::sp5_composer_role_attribute ... ok [INFO] [stdout] test upnp::search::tests::sp6_wildcard_and_empty_are_noop ... ok [INFO] [stdout] test upnp::search::tests::sp7_unsupported_property_dropped_to_true ... ok [INFO] [stdout] test upnp::search::tests::sp8_unterminated_string_returns_true_noop ... ok [INFO] [stdout] test upnp::search::tests::sp9_escaped_quote_in_value ... ok [INFO] [stdout] test upnp::soap::tests::sp1_parse_browse_envelope ... ok [INFO] [stdout] test upnp::soap::tests::sp2_malformed_returns_none ... ok [INFO] [stdout] test upnp::soap::tests::sp3_build_response_body_escapes_values ... ok [INFO] [stdout] test upnp::object_id::tests::op2_id_roundtrip_any_i64 ... ok [INFO] [stdout] test upnp::soap::tests::sp_parse_envelope_never_panics ... ok [INFO] [stdout] test upnp::soap::tests::sp_self_closing_action_with_no_args ... ok [INFO] [stdout] test upnp::usn::tests::u1_nt_and_usn_strings ... ok [INFO] [stdout] test upnp::usn::tests::u2_matches_st ... ok [INFO] [stdout] test upnp::usn::tests::u3_empty_uuid_does_not_panic_and_produces_valid_strings ... ok [INFO] [stdout] test upnp::usn::tests::u4_uuid_with_dashes_is_preserved_in_usn ... ok [INFO] [stdout] test upnp::usn::tests::u5_matches_st_with_unrelated_target_returns_false ... ok [INFO] [stdout] test upnp::xml::tests::attr_escapes_quote_too ... ok [INFO] [stdout] test upnp::xml::tests::attr_preserves_apostrophe ... ok [INFO] [stdout] test upnp::xml::tests::text_drops_disallowed_control_chars_keeps_tab_newline_cr ... ok [INFO] [stdout] test upnp::xml::tests::text_escapes_amp_lt_gt ... ok [INFO] [stdout] test upnp::xml::tests::text_preserves_apostrophe_and_quote ... ok [INFO] [stdout] test upnp::content_directory::tests::cd1_get_system_update_id_returns_value_from_state_kv ... ok [INFO] [stdout] test upnp::content_directory::tests::cd2_get_search_capabilities_returns_supported_props ... ok [INFO] [stdout] test random::tests::ra11_maybe_reshuffle_skips_when_interval_not_elapsed ... ok [INFO] [stdout] test random::tests::ra12_maybe_reshuffle_runs_when_interval_zero ... ok [INFO] [stdout] test scan::tests::pf1_write_failure_report_persists_error ... ok [INFO] [stdout] test upnp::content_directory::tests::cd3_search_with_unsupported_criteria_returns_empty_didl ... ok [INFO] [stdout] test scan::tests::b7_no_op_scan_does_not_bump_system_update_id ... ok [INFO] [stdout] test scan::tests::pf2_successful_scan_does_not_write_error_field ... ok [INFO] [stdout] test random::tests::ra3_reshuffle_produces_different_order_with_high_probability ... ok [INFO] [stdout] test scan::tests::i1_orchestrator_deletes_orphaned_tracks_and_albums ... ok [INFO] [stdout] test scan::tests::b6_scan_with_deletion_bumps_system_update_id ... ok [INFO] [stdout] test upnp::soap::tests::sp_parse_envelope_with_action_name ... ok [INFO] [stdout] test upnp::object_id::tests::op3_parse_never_panics ... ok [INFO] [stdout] test db::tracks::tests::d3_detect_deleted_handles_large_enumerated_set ... ok [INFO] [stdout] test upnp::object_id::tests::op1_name_roundtrip_any_string ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 455 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.32s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/revolver-147e2bca2aad3d31) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/http_e2e.rs (/opt/rustwide/target/debug/deps/http_e2e-7bb3a14ecec5322d) [INFO] [stdout] [INFO] [stdout] running 7 tests [INFO] [stdout] test e2e1_description_xml_returns_200_with_uuid ... ok [INFO] [stdout] test e2e6_admin_scan_report_404_before_any_scan ... ok [INFO] [stdout] test e2e2_stream_with_range_returns_206_and_exact_bytes ... ok [INFO] [stdout] test e2e3_stream_suffix_range_returns_last_n_bytes ... ok [INFO] [stdout] test e2e4_concurrent_range_requests_do_not_corrupt_each_other ... ok [INFO] [stdout] test e2e6_rescan_returns_202_then_scan_completes_in_background ... ok [INFO] [stdout] test e2e5_stream_during_rescan_still_succeeds ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.94s [INFO] [stdout] [INFO] [stderr] Doc-tests revolver [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" "a44cd357eb0d41a20f495bf1aa5f6f233e030af45487f20b743c05bff9e64496", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a44cd357eb0d41a20f495bf1aa5f6f233e030af45487f20b743c05bff9e64496", kill_on_drop: false }` [INFO] [stdout] a44cd357eb0d41a20f495bf1aa5f6f233e030af45487f20b743c05bff9e64496