[INFO] cloning repository https://github.com/Joey-Project/BBDown-rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Joey-Project/BBDown-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJoey-Project%2FBBDown-rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJoey-Project%2FBBDown-rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 57bd18d9e039b9370e36fa5676a539bc0e72081d
[INFO] testing Joey-Project/BBDown-rust against 1.98.0-beta.1 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJoey-Project%2FBBDown-rust" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-3-tc2/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/Joey-Project/BBDown-rust
[INFO] finished tweaking git repo https://github.com/Joey-Project/BBDown-rust
[INFO] tweaked toml for git repo https://github.com/Joey-Project/BBDown-rust written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Joey-Project/BBDown-rust on toolchain 1.98.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Joey-Project/BBDown-rust already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 97dd34946aab5059f2591533eca80f5f9158d090a625f47bfe0497171434782a
[INFO] running `Command { std: "docker" "start" "97dd34946aab5059f2591533eca80f5f9158d090a625f47bfe0497171434782a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "97dd34946aab5059f2591533eca80f5f9158d090a625f47bfe0497171434782a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "97dd34946aab5059f2591533eca80f5f9158d090a625f47bfe0497171434782a" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "97dd34946aab5059f2591533eca80f5f9158d090a625f47bfe0497171434782a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "97dd34946aab5059f2591533eca80f5f9158d090a625f47bfe0497171434782a" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling shlex v2.0.1
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling writeable v0.6.3
[INFO] [stderr]    Compiling cc v1.2.63
[INFO] [stderr]    Compiling litemap v0.8.2
[INFO] [stderr]    Compiling http v1.4.1
[INFO] [stderr]    Compiling icu_normalizer_data v2.2.0
[INFO] [stderr]    Compiling utf8_iter v1.0.4
[INFO] [stderr]    Compiling icu_properties_data v2.2.0
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling version_check v0.9.5
[INFO] [stderr]    Compiling rustls-pki-types v1.14.1
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]    Compiling rustls v0.23.40
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling mio v1.2.1
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling socket2 v0.6.4
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling memchr v2.8.1
[INFO] [stderr]    Compiling atomic-waker v1.1.2
[INFO] [stderr]    Compiling tower-service v0.3.3
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]    Compiling compression-core v0.4.32
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling compression-codecs v0.4.38
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling ipnet v2.12.0
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling either v1.16.0
[INFO] [stderr]    Compiling tower-layer v0.3.3
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling webpki-roots v1.0.7
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling encoding_rs v0.8.35
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling option-ext v0.2.0
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling log v0.4.32
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling md-5 v0.10.6
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling yoke v0.8.3
[INFO] [stderr]    Compiling prost-derive v0.14.4
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling prost v0.14.4
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling async-compression v0.4.42
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling h2 v0.4.14
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling hyper v1.10.1
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling bbdown-core v0.5.0 (/opt/rustwide/workdir/crates/bbdown)
[INFO] [stderr]    Compiling bbdown-cli v0.5.0 (/opt/rustwide/workdir/crates/bbdown-cli)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 15s
[INFO] running `Command { std: "docker" "inspect" "97dd34946aab5059f2591533eca80f5f9158d090a625f47bfe0497171434782a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "97dd34946aab5059f2591533eca80f5f9158d090a625f47bfe0497171434782a" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling parking v2.2.1
[INFO] [stderr]    Compiling cpufeatures v0.2.17
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling unicode-width v0.2.2
[INFO] [stderr]    Compiling path-tree v0.8.3
[INFO] [stderr]    Compiling tabwriter v1.4.1
[INFO] [stderr]    Compiling futures-timer v3.0.4
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling similar v2.7.0
[INFO] [stderr]    Compiling stringmetrics v2.2.2
[INFO] [stderr]    Compiling concurrent-queue v2.5.0
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling event-listener v5.4.1
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling event-listener-strategy v0.5.4
[INFO] [stderr]    Compiling normalize-line-endings v0.3.0
[INFO] [stderr]    Compiling async-lock v3.4.2
[INFO] [stderr]    Compiling difflib v0.4.0
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling assert_cmd v2.2.2
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling async-object-pool v0.2.0
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling prost-derive v0.14.4
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling yoke v0.8.3
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling assert-json-diff v2.0.2
[INFO] [stderr]    Compiling serde_regex v1.2.0
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling http v1.4.1
[INFO] [stderr]    Compiling prost v0.14.4
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling headers-core v0.3.0
[INFO] [stderr]    Compiling headers v0.4.1
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling async-compression v0.4.42
[INFO] [stderr]    Compiling h2 v0.4.14
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling hyper v1.10.1
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling httpmock v0.8.3
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling bbdown-core v0.5.0 (/opt/rustwide/workdir/crates/bbdown)
[INFO] [stderr]    Compiling bbdown-cli v0.5.0 (/opt/rustwide/workdir/crates/bbdown-cli)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 2m 33s
[INFO] running `Command { std: "docker" "inspect" "97dd34946aab5059f2591533eca80f5f9158d090a625f47bfe0497171434782a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "97dd34946aab5059f2591533eca80f5f9158d090a625f47bfe0497171434782a" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.42s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/bbdown-2665368aef41a1e9)
[INFO] [stdout] 
[INFO] [stdout] running 56 tests
[INFO] [stdout] test tests::access_key_login_file_guard_rejects_terminal_input ... ok
[INFO] [stdout] test tests::access_key_login_stdin_guard_rejects_terminal_input ... ok
[INFO] [stdout] test tests::archive_file_guard_rejects_symlink_target_sidecar_overlap ... ok
[INFO] [stdout] test tests::archive_file_guard_rejects_output_root_overlap ... ok
[INFO] [stdout] test tests::archive_file_guard_rejects_sidecar_output_root_overlap ... ok
[INFO] [stdout] test tests::archive_file_guard_rejects_lexical_symlink_inside_output_root ... ok
[INFO] [stdout] test tests::download_arg_validation_rejects_audio_language_for_video_only ... ok
[INFO] [stdout] test tests::duplicate_decision_prompt_state_tracks_displayed_preflight ... ok
[INFO] [stdout] test tests::download_ctrl_c_action_forces_exit_for_prompt_or_second_signal ... ok
[INFO] [stdout] test tests::duplicate_prompt_active_guard_restores_state ... ok
[INFO] [stdout] test tests::duplicate_decision_reports_cancelled_before_prompt ... ok
[INFO] [stdout] test tests::access_key_refresh_request_trims_stored_tokens ... ok
[INFO] [stdout] test tests::generic_access_key_retry_requires_failure_path_that_uses_access_key ... ok
[INFO] [stdout] test tests::access_key_lifecycle_metadata_records_absolute_and_relative_expiry ... ok
[INFO] [stdout] test tests::next_poll_sleep_caps_interval_by_deadline ... ok
[INFO] [stdout] test tests::media_preflight_playurl_mode_uses_fixed_source_for_intl_and_cheese_inputs ... ok
[INFO] [stdout] test tests::only_media_and_subtitle_download_modes_may_need_intl_access_key ... ok
[INFO] [stdout] test tests::parse_access_key_login_input_accepts_message_origins ... ok
[INFO] [stdout] test tests::parse_access_key_login_input_rejects_untrusted_or_mismatched_shapes ... ok
[INFO] [stdout] test tests::plan_failure_classifier_only_treats_auth_like_bad_request_as_credentials ... ok
[INFO] [stdout] test tests::plan_failure_classifier_requires_access_key_evidence_for_http_statuses ... ok
[INFO] [stdout] test tests::archive_file_guard_resolves_symlink_before_parent_components ... ok
[INFO] [stdout] test tests::credential_profile_cli_arg_builds_named_selection ... ok
[INFO] [stdout] test tests::passport_base_does_not_override_default_tv_poll_base ... ok
[INFO] [stdout] test tests::intl_passport_base_cli_arg_overrides_default ... ok
[INFO] [stdout] test tests::explicit_tv_passport_poll_base_wins ... ok
[INFO] [stdout] test tests::remaining_until_uses_total_deadline_without_poll_interval_cap ... ok
[INFO] [stdout] test tests::blank_credential_profile_cli_arg_is_rejected ... ok
[INFO] [stdout] test tests::restricted_area_proxy_ignores_empty_env_values ... ok
[INFO] [stdout] test tests::restricted_area_cli_builds_proxy_chain ... ok
[INFO] [stdout] test tests::restricted_area_proxy_bare_url_may_contain_query_equals ... ok
[INFO] [stdout] test tests::restricted_area_proxy_input_classifier_matches_pgc_planner_inputs ... ok
[INFO] [stdout] test tests::restricted_area_proxy_keeps_cli_source_before_env_area_match ... ok
[INFO] [stdout] test tests::restricted_area_proxy_invalid_scheme_parse_error_redacts_spec ... ok
[INFO] [stdout] test tests::app_grpc_cli_defaults_match_core_defaults ... ok
[INFO] [stdout] test tests::restricted_area_proxy_ignores_trailing_empty_env_segment ... ok
[INFO] [stdout] test tests::restricted_area_proxy_keeps_env_playurl_before_env_api_area_match ... ok
[INFO] [stdout] test tests::restricted_area_proxy_uppercase_scheme_may_contain_query_equals ... ok
[INFO] [stdout] test tests::restricted_area_proxy_uppercase_scheme_parse_error_redacts_spec ... ok
[INFO] [stdout] test tests::restricted_area_proxy_merges_cli_and_env_values ... ok
[INFO] [stdout] test tests::restricted_area_raw_arg_scan_ignores_non_utf8_non_proxy_values ... ok
[INFO] [stdout] test tests::restricted_area_proxy_preserves_cross_flag_cli_order ... ok
[INFO] [stdout] test tests::restricted_area_proxy_parse_error_redacts_spec ... ok
[INFO] [stdout] test tests::qr_login_lifecycle_metadata_records_source_and_acquisition_time ... ok
[INFO] [stdout] test tests::save_credentials_with_lifecycle_and_secrets_records_access_key_provider_secret ... ok
[INFO] [stdout] test tests::save_credentials_merges_with_selected_profile ... ok
[INFO] [stdout] test tests::save_credentials_merges_with_current_store ... ok
[INFO] [stdout] test tests::tv_passport_base_controls_tv_poll_when_poll_base_is_implicit ... ok
[INFO] [stdout] test tests::validate_media_host_spec_accepts_host_or_host_port_only ... ok
[INFO] [stdout] test tests::web_cookie_input_classifier_matches_account_scoped_feed_inputs ... ok
[INFO] [stdout] test tests::save_credentials_with_lifecycle_records_default_profile_metadata ... ok
[INFO] [stdout] test tests::save_credentials_with_lifecycle_and_secrets_clears_stale_provider_secret ... ok
[INFO] [stdout] test tests::stale_auto_refresh_save_skips_when_default_profile_changed ... ok
[INFO] [stdout] test tests::stale_auto_refresh_save_does_not_overwrite_newer_profile_secret ... ok
[INFO] [stdout] test tests::stale_auto_refresh_skip_does_not_recreate_logged_out_store ... ok
[INFO] [stderr]      Running tests/cli_e2e.rs (/opt/rustwide/target/debug/deps/cli_e2e-9293eda2f4f46bc2)
[INFO] [stdout] test tests::stale_auto_refresh_save_skips_when_provider_metadata_changed ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 56 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 119 tests
[INFO] [stdout] test auth_login_access_key_callback_url_saves_selected_profile ... ok
[INFO] [stdout] test auth_health_all_profiles_includes_selected_empty_profile ... ok
[INFO] [stdout] test auth_health_escapes_control_characters_in_human_probe_messages ... ok
[INFO] [stdout] test auth_login_access_key_message_saves_redacted_credentials ... ok
[INFO] [stdout] test auth_health_all_profiles_escapes_control_characters_in_human_profile_names ... ok
[INFO] [stdout] test auth_health_all_profiles_reports_profile_summaries_and_guidance ... ok
[INFO] [stdout] test auth_health_reports_redacted_credential_probe_statuses ... ok
[INFO] [stdout] test auth_import_status_and_logout_use_local_store ... ok
[INFO] [stdout] test auth_renew_access_key_auto_refresh_redacts_echoed_failure ... ok
[INFO] [stdout] test auth_renew_access_key_auto_refreshes_ready_provider_secret ... ok
[INFO] [stdout] test auth_renew_access_key_auto_refresh_keeps_old_refresh_token_when_response_omits_one ... ok
[INFO] [stdout] test auth_qr_login_web_and_tv_use_local_store ... ok
[INFO] [stdout] test auth_status_all_profiles_includes_selected_empty_profile ... ok
[INFO] [stdout] test auth_renew_access_key_reauthorizes_and_saves_redacted_credentials ... ok
[INFO] [stdout] test auth_renew_access_key_reports_fresh_no_action ... ok
[INFO] [stdout] test auth_profile_selection_isolates_named_profile ... ok
[INFO] [stdout] test auth_renew_access_key_treats_blank_stored_access_key_as_missing ... ok
[INFO] [stdout] test auth_switch_allows_empty_current_default_profile ... ok
[INFO] [stdout] test cli_version_reports_package_version ... ok
[INFO] [stdout] test auth_status_profiles_reports_default_selected_and_lifecycle_guidance ... ok
[INFO] [stdout] test credential_profile_arg_overrides_persistent_auth_switch ... ok
[INFO] [stdout] test auth_switch_persists_default_profile ... ok
[INFO] [stdout] test danmaku_update_archive_appends_xml_and_writes_ass ... ok
[INFO] [stdout] test danmaku_update_overlap_guard_ignores_non_danmaku_archive_entries ... ok
[INFO] [stdout] test auth_switch_rejects_missing_profile ... ok
[INFO] [stdout] test danmaku_update_rejects_archive_file_that_overlaps_ass_generated_temp_file ... ok
[INFO] [stdout] test auth_login_access_key_requires_explicit_input_source ... ok
[INFO] [stdout] test auth_login_access_key_failures_do_not_save_credentials ... ok
[INFO] [stdout] test danmaku_update_rejects_archive_file_that_overlaps_ass_replace_temp_file ... ok
[INFO] [stdout] test danmaku_update_rejects_archive_file_that_overlaps_source_replace_temp_file ... ok
[INFO] [stdout] test danmaku_update_rejects_archive_file_that_overlaps_source_download_temp_file ... ok
[INFO] [stdout] test danmaku_update_rejects_archive_file_that_overlaps_xml_sidecar ... ok
[INFO] [stdout] test download_archive_cancel_defers_credential_preflight_renewal ... ok
[INFO] [stdout] test download_archive_cancel_reports_preflight_json ... ok
[INFO] [stdout] test danmaku_update_rejects_archive_file_that_overlaps_source_temp_file ... ok
[INFO] [stdout] test danmaku_update_rejects_archive_file_that_overlaps_xml_generated_temp_file ... ok
[INFO] [stdout] test danmaku_update_rejects_archive_file_that_overlaps_xml_replace_temp_file ... ok
[INFO] [stdout] test download_archive_cancel_reports_duplicate_after_deferred_refresh ... ok
[INFO] [stdout] test download_archive_does_not_refresh_for_optional_web_api_auth_like_failure ... ok
[INFO] [stdout] test download_archive_does_not_complete_deferred_refresh_for_authenticated_feed_cookie_failure ... ok
[INFO] [stdout] test download_archive_does_not_refresh_for_pgc_web_failure_before_proxy ... ok
[INFO] [stdout] test download_archive_does_not_refresh_for_optional_web_api_not_logged_in ... ok
[INFO] [stdout] test download_archive_does_not_refresh_generic_key_for_authenticated_feed_cookie_failure ... ok
[INFO] [stdout] test download_archive_does_not_refresh_for_restricted_proxy_http_auth_status_without_key_evidence ... ok
[INFO] [stdout] test download_archive_does_not_refresh_generic_key_for_wbi_nav_http_status ... ok
[INFO] [stdout] test download_archive_does_not_refresh_for_app_area_restricted_status ... ok
[INFO] [stdout] test download_archive_does_not_refresh_for_generic_api_bad_request ... ok
[INFO] [stdout] test download_archive_does_not_refresh_generic_key_when_pgc_app_http_status_used_tv_key ... ok
[INFO] [stdout] test download_archive_keep_both_allows_archive_inside_old_output_root ... ok
[INFO] [stdout] test download_archive_keep_both_uses_suffixed_output_dir ... ok
[INFO] [stdout] test download_archive_progress_json_cancel_suppresses_plaintext_preflight ... ok
[INFO] [stdout] test download_archive_does_not_refresh_generic_key_when_app_uses_intl_tv_key ... ok
[INFO] [stdout] test download_archive_json_requires_explicit_duplicate_decision ... ok
[INFO] [stdout] test download_archive_does_not_refresh_generic_key_for_video_metadata_http_status ... ok
[INFO] [stdout] test download_archive_does_not_refresh_generic_key_for_authenticated_feed_http_status ... ok
[INFO] [stdout] test download_archive_progress_json_reports_plan_failure ... ok
[INFO] [stdout] test download_archive_progress_json_reports_save_failure_without_completion ... ok
[INFO] [stdout] test download_archive_replace_overwrites_existing_file ... ok
[INFO] [stdout] test download_archive_rejects_archive_file_as_output_root ... ok
[INFO] [stdout] test download_archive_rejects_archive_file_inside_output_root ... ok
[INFO] [stdout] test auth_qr_login_failures_do_not_save_credentials ... ok
[INFO] [stdout] test download_archive_rejects_archive_file_inside_keep_both_output_root ... ok
[INFO] [stdout] test download_archive_retries_plan_after_app_http_forbidden_with_fresh_refreshable_access_key ... ok
[INFO] [stdout] test download_archive_symlink_updates_target_archive ... ok
[INFO] [stdout] test download_archive_progress_json_reports_preflight_failure ... ok
[INFO] [stdout] test download_archive_retries_restricted_proxy_after_deferred_credential_refresh ... ok
[INFO] [stdout] test download_archive_retries_plan_after_auth_failure_with_fresh_refreshable_access_key ... ok
[INFO] [stdout] test download_archive_retries_app_access_key_after_http_unauthorized_status ... ok
[INFO] [stdout] test download_json_applies_path_templates ... ok
[INFO] [stdout] test download_archive_does_not_refresh_generic_key_when_pgc_app_grpc_status_used_tv_key ... ok
[INFO] [stdout] test download_json_writes_mock_media_files ... ok
[INFO] [stdout] test download_only_cover_skips_intl_access_key_credential_preflight ... ok
[INFO] [stdout] test download_no_cover_skips_cover_sidecar ... ok
[INFO] [stdout] test download_json_default_mux_keeps_stdout_valid ... ok
[INFO] [stdout] test download_archive_retries_app_access_key_when_required_cookie_is_stale_but_present ... ok
[INFO] [stdout] test download_only_danmaku_can_write_xml_and_ass_formats ... ok
[INFO] [stdout] test download_only_cover_skips_playurl_credential_preflight ... ok
[INFO] [stdout] test download_only_danmaku_can_write_ass_format ... ok
[INFO] [stdout] test download_only_cover_skips_playurl_resolution ... ok
[INFO] [stdout] test download_only_cover_with_archive_skips_playurl_resolution ... ok
[INFO] [stdout] test download_progress_json_writes_events_to_stderr ... ok
[INFO] [stdout] test download_only_archive_does_not_duplicate_full_download ... ok
[INFO] [stdout] test download_subtitle_ai_policy_excludes_ai_tracks ... ok
[INFO] [stdout] test download_archive_reruns_duplicate_preflight_after_deferred_refresh ... ok
[INFO] [stdout] test download_upos_host_rewrites_media_url_candidates ... ok
[INFO] [stdout] test download_upos_host_rejects_path_query_or_fragment ... ok
[INFO] [stdout] test info_json_resolves_mock_favorite_collection ... ok
[INFO] [stdout] test download_only_modes_write_selected_file_kind ... ok
[INFO] [stdout] test info_json_applies_video_index_range_selection ... ok
[INFO] [stdout] test info_json_resolves_mock_recommendation_collection ... ok
[INFO] [stdout] test info_json_resolves_mock_video ... ok
[INFO] [stdout] test info_json_resolves_mock_history_collection ... ok
[INFO] [stdout] test info_json_resolves_mock_following_collection ... ok
[INFO] [stdout] test info_json_resolves_mock_watch_later_collection ... ok
[INFO] [stdout] test info_json_uses_selected_credential_profile ... ok
[INFO] [stdout] test plan_credential_preflight_fail_allows_public_space_dynamic_without_cookie ... ok
[INFO] [stdout] test plan_credential_preflight_fail_allows_missing_restricted_access_key ... ok
[INFO] [stdout] test download_progress_json_reports_terminal_failure_events ... ok
[INFO] [stdout] test plan_credential_preflight_fail_allows_pgc_tv_with_restricted_proxy_configured ... ok
[INFO] [stdout] test download_progress_json_reports_cancelled_on_sigint ... ok
[INFO] [stdout] test plan_credential_preflight_renew_refreshes_restricted_access_key ... ok
[INFO] [stdout] test plan_credential_preflight_fail_warns_on_stale_optional_web_cookie ... ok
[INFO] [stdout] test plan_credential_preflight_fail_allows_public_video_with_restricted_proxy_configured ... ok
[INFO] [stdout] test download_only_rejects_conflicting_disable_flag ... ok
[INFO] [stdout] test download_subtitle_ai_policy_requires_subtitles ... ok
[INFO] [stdout] test plan_credential_preflight_warn_keeps_json_stdout_clean ... ok
[INFO] [stdout] test download_progress_json_reports_credential_preflight_failure ... ok
[INFO] [stdout] test plan_json_resolves_mock_favorite_collection_streams ... ok
[INFO] [stdout] test plan_json_uses_restricted_area_proxy_after_official_pgc_failure ... ok
[INFO] [stdout] test plan_json_applies_index_range_selection ... ok
[INFO] [stdout] test plan_credential_preflight_fail_blocks_stale_intl_access_key ... ok
[INFO] [stdout] test playback_json_resolves_media_request_specs ... ok
[INFO] [stdout] test plan_json_resolves_mock_video_streams ... ok
[INFO] [stdout] test playback_app_uses_tv_access_key_when_generic_key_is_intl_provider ... ok
[INFO] [stdout] test playback_json_uses_app_playurl_mode ... ok
[INFO] [stdout] test playback_json_uses_tv_playurl_mode ... ok
[INFO] [stdout] test plan_credential_preflight_renew_skips_access_key_refresh_when_required_cookie_is_missing ... ok
[INFO] [stdout] test plan_credential_preflight_fail_blocks_missing_cookie_for_history ... ok
[INFO] [stdout] test plan_selection_required_input_fails_before_credential_preflight_renewal ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 119 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.11s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/live_e2e.rs (/opt/rustwide/target/debug/deps/live_e2e-45b9afb409ebd857)
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test live_manifest_cases ... ignored, requires local live-e2e.samples.json
[INFO] [stdout] test manifest_expands_all_area_proxy_specs ... ok
[INFO] [stdout] test manifest_rejects_unknown_fields ... ok
[INFO] [stdout] test required_plan_sources_must_appear ... ok
[INFO] [stdout] test plan_error_allowance_requires_explicit_restricted_access ... ok
[INFO] [stdout] test credentials_support_telegram_auth_state_and_access_key_file ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/bbdown_core-d63653390358a236)
[INFO] [stdout] 
[INFO] [stdout] running 430 tests
[INFO] [stdout] test app_playurl::tests::grpc_frame_rejects_trailing_bytes ... ok
[INFO] [stdout] test app_playurl::tests::grpc_frame_decodes_uncompressed_payload ... ok
[INFO] [stdout] test app_playurl::tests::grpc_frame_decodes_compressed_payload ... ok
[INFO] [stdout] test app_playurl::tests::pgc_preview_only_streams_map_to_access_restricted ... ok
[INFO] [stdout] test app_playurl::tests::normal_app_field_3_does_not_trigger_preview_only ... ok
[INFO] [stdout] test app_playurl::tests::pgc_view_info_limit_maps_to_access_restricted ... ok
[INFO] [stdout] test app_playurl::tests::pgc_preview_only_streams_keep_stable_prefix_with_access_message ... ok
[INFO] [stdout] test app_playurl::tests::pgc_view_info_field_9_limit_maps_to_access_restricted ... ok
[INFO] [stdout] test app_playurl::tests::play_view_headers_use_configured_grpc_timeout ... ok
[INFO] [stdout] test bv::tests::decodes_known_bv ... ok
[INFO] [stdout] test app_playurl::tests::play_view_reply_maps_to_stream_set ... ok
[INFO] [stdout] test app_playurl::tests::play_view_reply_preserves_repeated_dolby_audio ... ok
[INFO] [stdout] test cancellation::tests::cancellation_reason_is_available_after_cancel ... ok
[INFO] [stdout] test app_playurl::tests::play_view_request_asks_pgc_for_view_info ... ok
[INFO] [stdout] test app_playurl::tests::pgc_view_info_limit_with_audio_only_maps_to_access_restricted ... ok
[INFO] [stdout] test cancellation::tests::cancelled_returns_for_late_subscriber ... ok
[INFO] [stdout] test cancellation::tests::cancelled_returns_for_waiting_subscriber ... ok
[INFO] [stdout] test app_playurl::tests::play_view_request_omits_view_info_for_normal_video ... ok
[INFO] [stdout] test client::tests::app_grpc_trailing_status_error_is_reported ... ok
[INFO] [stdout] test client::tests::app_playurl_access_key_falls_back_when_legacy_tv_key_is_blank ... ok
[INFO] [stdout] test app_playurl::tests::play_view_reply_keeps_one_flv_quality ... ok
[INFO] [stdout] test client::tests::app_playurl_access_key_keeps_generic_key_before_main_provider_tv_key ... ok
[INFO] [stdout] test client::tests::app_playurl_access_key_uses_legacy_tv_key_before_unclassified_access_key ... ok
[INFO] [stdout] test client::tests::app_playurl_access_key_uses_tv_key_before_intl_provider_access_key ... ok
[INFO] [stdout] test client::tests::collection_all_selection_allows_empty_items ... ok
[INFO] [stdout] test client::tests::collection_index_selection_selects_list_and_ranges ... ok
[INFO] [stdout] test client::tests::collection_current_selection_is_rejected ... ok
[INFO] [stdout] test client::tests::collection_index_fetch_mode_stops_after_max_requested_index ... ok
[INFO] [stdout] test client::tests::collection_latest_selects_first_parsed_item ... ok
[INFO] [stdout] test client::tests::app_playurl_access_key_keeps_generic_key_before_bilibili_main_tv_key ... ok
[INFO] [stdout] test client::tests::credential_health_oauth2_info_params_are_scope_specific_and_signed ... ok
[INFO] [stdout] test client::tests::app_grpc_status_error_is_reported ... ok
[INFO] [stdout] test client::tests::app_playurl_access_key_falls_back_when_main_provider_key_is_blank ... ok
[INFO] [stdout] test client::tests::cheese_episode_non_current_selection_refetches_from_first_page ... ok
[INFO] [stdout] test client::tests::credential_health_checks_configured_credentials_redacted ... ok
[INFO] [stdout] test client::tests::credential_health_redacts_short_exact_cookie_values ... ok
[INFO] [stdout] test client::tests::credential_health_cookie_probe_does_not_require_wbi_image ... ok
[INFO] [stdout] test client::tests::credential_health_treats_blank_credentials_as_missing ... ok
[INFO] [stdout] test client::tests::credential_health_uses_tv_passport_poll_base_for_tv_access_key ... ok
[INFO] [stdout] test client::tests::endpoint_defaults_use_app_grpc_playurl_host ... ok
[INFO] [stdout] test client::tests::credential_health_reports_missing_credentials ... ok
[INFO] [stdout] test client::tests::credential_health_trims_stored_access_key_value ... ok
[INFO] [stdout] test client::tests::endpoint_client_and_restricted_area_builders_configure_embedding_inputs ... ok
[INFO] [stdout] test client::tests::endpoint_url_preserves_path_prefix ... ok
[INFO] [stdout] test client::tests::favorite_collection_skips_non_video_entries ... ok
[INFO] [stdout] test client::tests::intl_access_key_is_redacted_from_http_errors ... ok
[INFO] [stdout] test client::tests::favorite_collection_accepts_null_media_list_as_empty ... ok
[INFO] [stdout] test client::tests::intl_ogv_playurl_params_are_signed_in_helper_order ... ok
[INFO] [stdout] test client::tests::cheese_episode_current_uses_global_index_from_loaded_order ... ok
[INFO] [stdout] test client::tests::medialist_desc_matches_bbdown_parity ... ok
[INFO] [stdout] test client::tests::json_status_path_matching_accepts_endpoint_prefixes ... ok
[INFO] [stdout] test client::tests::latest_ignores_section_extras ... ok
[INFO] [stdout] test client::tests::intl_region_limit_returns_access_restricted_error ... ok
[INFO] [stdout] test client::tests::dynamic_feed_stops_when_next_offset_is_missing ... ok
[INFO] [stdout] test client::tests::deduplicates_medialist_current_item_cursor_pages ... ok
[INFO] [stdout] test client::tests::pgc_bilibili_api_proxy_preserves_base_query_for_web_and_v2_paths ... ok
[INFO] [stdout] test client::tests::latest_uses_filtered_main_episode_count ... ok
[INFO] [stdout] test client::tests::pgc_restricted_area_failure_redacts_sensitive_messages ... ok
[INFO] [stdout] test client::tests::pgc_app_streams_fall_back_to_restricted_area_proxy ... ok
[INFO] [stdout] test client::tests::pgc_app_body_limit_falls_back_to_restricted_area_proxy ... ok
[INFO] [stdout] test client::tests::pgc_proxy_fallback_requires_area_restriction ... ok
[INFO] [stdout] test client::tests::pgc_bilibili_api_proxy_falls_back_to_v2_path ... ok
[INFO] [stdout] test client::tests::pgc_app_preview_only_body_falls_back_to_restricted_area_proxy ... ok
[INFO] [stdout] test client::tests::pgc_app_status_code_falls_back_to_restricted_area_proxy ... ok
[INFO] [stdout] test client::tests::plans_cheese_download_with_pugv_source ... ok
[INFO] [stdout] test client::tests::plans_pgc_download_with_app_playurl_mode ... ok
[INFO] [stdout] test client::tests::pgc_streams_fall_back_to_restricted_area_proxy ... ok
[INFO] [stdout] test client::tests::plans_history_latest_as_normal_video_entry ... ok
[INFO] [stdout] test client::tests::plans_pgc_download_from_video_info_payload ... ok
[INFO] [stdout] test client::tests::pgc_proxy_invalid_candidate_diagnostics_redact_endpoint ... ok
[INFO] [stdout] test client::tests::plans_pgc_download_with_tv_playurl_mode ... ok
[INFO] [stdout] test client::tests::plans_recommendation_latest_as_normal_video_entry ... ok
[INFO] [stdout] test client::tests::playurl_accepts_intl_mobile_video_info_shape ... ok
[INFO] [stdout] test client::tests::playurl_accepts_null_durl_with_dash_streams ... ok
[INFO] [stdout] test client::tests::playurl_accepts_nullable_dash_lists_with_flv_fallback ... ok
[INFO] [stdout] test client::tests::playurl_accepts_top_level_bpplayurl_flv_shape ... ok
[INFO] [stdout] test client::tests::playurl_accepts_top_level_mobile_dash_shape ... ok
[INFO] [stdout] test client::tests::playurl_query_params_trim_or_omit_access_keys ... ok
[INFO] [stdout] test client::tests::playurl_uses_non_empty_camel_media_fields_when_snake_fields_are_empty ... ok
[INFO] [stdout] test client::tests::plans_space_dynamic_latest_as_normal_video_entry ... ok
[INFO] [stdout] test client::tests::plans_watch_later_latest_as_normal_video_entry ... ok
[INFO] [stdout] test client::tests::plans_video_download_with_tv_playurl_mode ... ok
[INFO] [stdout] test client::tests::plans_video_download_with_streams_subtitles_and_danmaku ... ok
[INFO] [stdout] test client::tests::propagates_watch_later_item_fallback_auth_error ... ok
[INFO] [stdout] test client::tests::plans_video_download_with_app_playurl_mode ... ok
[INFO] [stdout] test client::tests::resolver_error_message_marks_access_token_spelling_as_access_key_diagnostic ... ok
[INFO] [stdout] test client::tests::resolver_error_message_redacts_mixed_case_urls ... ok
[INFO] [stdout] test client::tests::resolver_error_message_redacts_sensitive_values ... ok
[INFO] [stdout] test client::tests::plan_video_ignores_tag_failure ... ok
[INFO] [stdout] test client::tests::plans_intl_download_with_access_key_for_subtitles ... ok
[INFO] [stdout] test client::tests::resolves_episode_from_section ... ok
[INFO] [stdout] test client::tests::resolver_error_message_does_not_mark_proxy_credentials_as_access_key ... ok
[INFO] [stdout] test client::tests::request_headers_trim_stored_cookie ... ok
[INFO] [stdout] test client::tests::pugv_pagination_uses_stable_page_size_when_size_is_missing ... ok
[INFO] [stdout] test client::tests::resolve_collection_selection_keeps_full_items_while_plan_fetches_selected_item ... ok
[INFO] [stdout] test client::tests::resolves_favorite_collection_and_plans_selected_item ... ok
[INFO] [stdout] test client::tests::resolves_medialist_item_without_pages_from_video_metadata ... ok
[INFO] [stdout] test client::tests::resolves_favorite_item_without_first_cid_from_video_metadata ... ok
[INFO] [stdout] test client::tests::resolves_following_feed_archive_items ... ok
[INFO] [stdout] test client::tests::resolves_intl_episode_from_module_episodes ... ok
[INFO] [stdout] test client::tests::resolves_recommendation_feed_items ... ok
[INFO] [stdout] test client::tests::resolves_paginated_cheese_season_latest ... ok
[INFO] [stdout] test client::tests::resolves_recommendation_latest_keeps_batch_metadata ... ok
[INFO] [stdout] test client::tests::resolves_recommendation_latest_retries_after_filtered_batch ... ok
[INFO] [stdout] test client::tests::resolves_medialist_collection_after_filtered_cursor_page ... ok
[INFO] [stdout] test client::tests::resolves_history_archive_items_from_cursor ... ok
[INFO] [stdout] test client::tests::resolves_season_latest ... ok
[INFO] [stdout] test client::tests::resolves_recommendation_page_selection_across_refresh_batches ... ok
[INFO] [stdout] test client::tests::resolves_short_link_input_from_redirect_target ... ok
[INFO] [stdout] test client::tests::resolves_space_series_with_owner_mid_endpoint ... ok
[INFO] [stdout] test client::tests::resolves_video_metadata_with_tags ... ok
[INFO] [stdout] test client::tests::restricted_area_message_accepts_common_chinese_unavailable_phrasing ... ok
[INFO] [stdout] test client::tests::resolves_watch_later_items ... ok
[INFO] [stdout] test client::tests::season_index_selection_selects_episode_indices ... ok
[INFO] [stdout] test client::tests::season_links_require_selection ... ok
[INFO] [stdout] test client::tests::resolves_space_videos_from_wbi_response_shape ... ok
[INFO] [stdout] test client::tests::video_index_selection_preserves_selector_order_and_deduplicates ... ok
[INFO] [stdout] test client::tests::video_index_selection_rejects_partial_hits ... ok
[INFO] [stdout] test client::tests::restricted_area_proxies_are_ordered_by_hint_then_generic_then_area ... ok
[INFO] [stdout] test client::tests::skips_watch_later_item_when_fallback_page_is_missing ... ok
[INFO] [stdout] test client::tests::skips_watch_later_item_when_cid_fallback_fails ... ok
[INFO] [stdout] test credential_preflight::tests::app_requirement_accepts_fresh_tv_access_key_when_generic_key_is_absent ... ok
[INFO] [stdout] test credential_preflight::tests::app_requirement_checks_main_provider_access_key_before_fresh_tv_access_key ... ok
[INFO] [stdout] test credential_preflight::tests::app_requirement_prefers_tv_access_key_when_generic_key_has_no_provider ... ok
[INFO] [stdout] test credential_preflight::tests::app_requirement_prefers_tv_access_key_when_generic_key_is_intl_provider ... ok
[INFO] [stdout] test credential_preflight::tests::app_requirement_reports_all_alternatives_when_missing ... ok
[INFO] [stdout] test client::tests::video_tag_failure_is_not_silent ... ok
[INFO] [stdout] test client::tests::space_collection_latest_requests_newest_first ... ok
[INFO] [stdout] test credential_preflight::tests::client_context_does_not_require_access_key_for_restricted_area_hint_without_proxy ... ok
[INFO] [stdout] test credential_preflight::tests::client_context_marks_web_cookie_and_restricted_area_proxy_access_key_optional ... ok
[INFO] [stdout] test credential_preflight::tests::fail_mode_blocks_missing_authenticated_web_api_cookie ... ok
[INFO] [stdout] test credential_preflight::tests::fail_mode_blocks_non_fresh_authenticated_web_api_cookie ... ok
[INFO] [stdout] test credential_preflight::tests::fail_mode_blocks_non_fresh_optional_restricted_area_access_key ... ok
[INFO] [stdout] test credential_preflight::tests::fail_mode_blocks_required_intl_access_key ... ok
[INFO] [stdout] test credential_preflight::tests::fail_mode_treats_missing_restricted_area_access_key_as_optional ... ok
[INFO] [stdout] test credential_preflight::tests::fail_mode_treats_missing_optional_web_cookie_as_satisfied ... ok
[INFO] [stdout] test credential_preflight::tests::fail_mode_warns_about_non_fresh_optional_web_cookie_without_blocking ... ok
[INFO] [stdout] test credential_preflight::tests::media_paths_context_can_check_intl_without_web_cookie ... ok
[INFO] [stdout] test credential_preflight::tests::media_paths_report_can_check_intl_without_web_cookie_issue ... ok
[INFO] [stdout] test credential_preflight::tests::media_request_context_can_skip_restricted_area_proxy_requirement_for_non_pgc_input ... ok
[INFO] [stdout] test client::tests::video_info_applies_page_selection ... ok
[INFO] [stdout] test credential_preflight::tests::media_request_context_requires_access_key_for_intl_input ... ok
[INFO] [stdout] test credential_preflight::tests::media_request_context_skips_restricted_area_proxy_requirement_for_tv_playurl ... ok
[INFO] [stdout] test credential_preflight::tests::renew_mode_refreshes_stale_generic_app_access_key_when_tv_key_is_also_stale ... ok
[INFO] [stdout] test client::tests::video_info_rejects_missing_page_selection ... ok
[INFO] [stdout] test credential_preflight::tests::renew_mode_allows_access_key_refresh_when_required_cookie_is_stale_but_present ... ok
[INFO] [stdout] test credential_preflight::tests::renew_mode_requests_ready_stale_access_key_refresh ... ok
[INFO] [stdout] test credential_preflight::tests::renew_mode_skips_access_key_refresh_when_required_cookie_is_missing ... ok
[INFO] [stdout] test credentials::tests::credential_profiles_debug_is_redacted ... ok
[INFO] [stdout] test client::tests::resolves_recommendation_page_selection_after_filtered_cards ... ok
[INFO] [stdout] test credentials::tests::credential_health_report_summary_counts_probe_statuses ... ok
[INFO] [stdout] test credentials::tests::credentials_debug_is_redacted ... ok
[INFO] [stdout] test credentials::tests::lifecycle_status_treats_far_future_expiry_as_stale_when_last_seen_is_old ... ok
[INFO] [stdout] test credentials::tests::legacy_flat_credentials_with_profile_like_unknown_fields_are_not_profiles ... ok
[INFO] [stdout] test credentials::tests::lifecycle_statuses_include_default_and_named_profiles ... ok
[INFO] [stdout] test client::tests::resolves_watch_later_item_cid_from_video_metadata ... ok
[INFO] [stdout] test credentials::tests::empty_lifecycle_entries_are_not_serialized ... ok
[INFO] [stdout] test credentials::tests::load_profiles_wraps_legacy_flat_credentials ... ok
[INFO] [stdout] test credentials::tests::empty_profile_metadata_is_not_serialized ... ok
[INFO] [stdout] test credentials::tests::invalid_profile_document_default_profile_is_rejected ... ok
[INFO] [stdout] test credentials::tests::malformed_existing_store_is_not_overwritten_by_save ... ok
[INFO] [stdout] test credentials::tests::blank_profile_metadata_key_is_dropped_on_load ... ok
[INFO] [stdout] test credentials::tests::lock_release_recovers_dead_owner_coordination_guard ... ok
[INFO] [stdout] test credentials::tests::malformed_profile_document_does_not_fall_back_to_flat_credentials ... ok
[INFO] [stdout] test credentials::tests::malformed_known_lifecycle_metadata_payload_is_ignored ... ok
[INFO] [stdout] test credentials::tests::malformed_lifecycle_source_is_ignored ... ok
[INFO] [stdout] test credentials::tests::malformed_profile_metadata_payload_is_ignored ... ok
[INFO] [stdout] test credentials::tests::malformed_profile_metadata_document_is_ignored ... ok
[INFO] [stdout] test credentials::tests::missing_refresh_secret_reports_false_when_provider_metadata_exists ... ok
[INFO] [stdout] test credentials::tests::process_liveness_reports_current_process ... ok
[INFO] [stdout] test credentials::tests::profile_lifecycle_status_evaluates_policy_without_secrets ... ok
[INFO] [stdout] test credentials::tests::profile_names_reject_blank_values ... ok
[INFO] [stdout] test credentials::tests::lock_release_waits_for_lock_coordination_guard ... ok
[INFO] [stdout] test credentials::tests::removing_profile_removes_profile_metadata ... ok
[INFO] [stdout] test credentials::tests::remove_missing_profile_does_not_create_store ... ok
[INFO] [stdout] test credentials::tests::orphan_profile_metadata_is_dropped_on_save ... ok
[INFO] [stdout] test credentials::tests::profile_metadata_round_trips_lifecycle_fields ... ok
[INFO] [stdout] test credentials::tests::profile_secrets_round_trip_without_debug_leakage ... ok
[INFO] [stdout] test credentials::tests::save_allows_bare_relative_path ... ok
[INFO] [stdout] test credentials::tests::remove_missing_profile_keeps_legacy_flat_store ... ok
[INFO] [stdout] test credentials::tests::profile_document_default_profile_controls_load_and_save ... ok
[INFO] [stdout] test credentials::tests::save_tightens_existing_file_permissions ... ok
[INFO] [stdout] test credentials::tests::save_profile_drops_provider_secrets_for_changed_access_key ... ok
[INFO] [stdout] test credentials::tests::save_profile_drops_metadata_for_changed_credential_value ... ok
[INFO] [stdout] test credentials::tests::selected_profile_rejects_blank_named_profile ... ok
[INFO] [stdout] test credentials::tests::save_profile_preserves_profile_metadata ... ok
[INFO] [stdout] test credentials::tests::save_profile_migrates_legacy_flat_file ... ok
[INFO] [stdout] test credentials::tests::save_profile_prunes_metadata_for_removed_credential_kind ... ok
[INFO] [stdout] test credentials::tests::save_without_profiles_keeps_legacy_flat_format ... ok
[INFO] [stdout] test credentials::tests::set_profile_drops_in_memory_metadata_for_changed_credential_value ... ok
[INFO] [stdout] test credentials::tests::set_profile_metadata_filters_missing_credential_kinds_in_memory ... ok
[INFO] [stdout] test credentials::tests::set_profile_metadata_drops_metadata_without_profile ... ok
[INFO] [stdout] test credentials::tests::set_profile_prunes_in_memory_metadata_for_removed_credential_kind ... ok
[INFO] [stdout] test credentials::tests::stale_lock_reclaim_contention_preserves_existing_lock ... ok
[INFO] [stdout] test credentials::tests::set_default_profile_allows_empty_current_default_profile ... ok
[INFO] [stdout] test credentials::tests::selected_profile_helpers_preserve_default_and_named_profiles ... ok
[INFO] [stdout] test credentials::tests::stores_credentials_without_leaking_values_in_summary ... ok
[INFO] [stdout] test credentials::tests::unknown_lifecycle_source_deserializes_as_unknown ... ok
[INFO] [stdout] test credentials::tests::stale_lock_owner_drop_does_not_remove_reclaimed_lock ... ok
[INFO] [stdout] test credentials::tests::try_create_lock_file_cleans_up_after_metadata_write_error ... ok
[INFO] [stdout] test credentials::tests::set_default_profile_rejects_missing_profile ... ok
[INFO] [stdout] test credentials::tests::update_profiles_keeps_stale_lock_with_live_owner ... ok
[INFO] [stdout] test credentials::tests::unsupported_profile_document_version_is_rejected ... ok
[INFO] [stdout] test credentials::tests::set_default_profile_persists_existing_profile ... ok
[INFO] [stdout] test credentials::tests::unknown_metadata_credential_kind_with_invalid_payload_is_ignored ... ok
[INFO] [stdout] test credentials::tests::stale_lock_owner_resume_after_reclaim_does_not_write_stale_snapshot ... ok
[INFO] [stdout] test credentials::tests::update_profiles_noop_does_not_create_missing_store ... ok
[INFO] [stdout] test client::tests::request_timeout_bounds_hung_endpoint ... ok
[INFO] [stdout] test credentials::tests::unknown_metadata_credential_kind_is_ignored ... ok
[INFO] [stdout] test credentials::tests::update_profiles_reports_lock_contention ... ok
[INFO] [stdout] test credentials::tests::update_profiles_waits_for_lock_coordination_guard ... ok
[INFO] [stdout] test credentials::tests::update_profiles_releases_lock_after_update_error ... ok
[INFO] [stdout] test credentials::tests::update_profiles_reclaims_stale_lock_with_dead_owner ... ok
[INFO] [stdout] test credentials::tests::whitespace_only_credentials_are_treated_as_missing ... ok
[INFO] [stdout] test credentials::tests::update_profiles_reclaims_stale_lock ... ok
[INFO] [stdout] test credentials::tests::whitespace_refresh_token_secret_is_not_lifecycle_ready ... ok
[INFO] [stdout] test danmaku::tests::converts_common_xml_comments_to_ass_dialogues ... ok
[INFO] [stdout] test danmaku::tests::decodes_numeric_entities_and_single_quoted_attributes ... ok
[INFO] [stdout] test danmaku::tests::merge_xml_append_only_adds_new_comments_before_root_close ... ok
[INFO] [stdout] test danmaku::tests::merge_xml_append_only_deduplicates_equivalent_entities ... ok
[INFO] [stdout] test danmaku::tests::merge_xml_append_only_does_not_insert_comments_into_chatserver ... ok
[INFO] [stdout] test danmaku::tests::merge_xml_append_only_inserts_after_last_complete_comment_when_existing_has_dangling_tail ... ok
[INFO] [stdout] test danmaku::tests::merge_xml_append_only_keeps_existing_when_no_new_comments ... ok
[INFO] [stdout] test danmaku::tests::merge_xml_append_only_uses_fetched_xml_when_existing_is_empty ... ok
[INFO] [stdout] test danmaku::tests::merge_xml_append_only_uses_fetched_xml_when_existing_root_is_self_closing ... ok
[INFO] [stdout] test credentials::tests::version_only_legacy_flat_credentials_are_not_profiles ... ok
[INFO] [stdout] test credentials::tests::update_profiles_reclaims_stale_reclaim_lock ... ok
[INFO] [stdout] test credentials::tests::update_profiles_noop_preserves_flat_store_format ... ok
[INFO] [stdout] test download::tests::accepts_unknown_total_content_range_when_expected_size_matches ... ok
[INFO] [stdout] test credentials::tests::update_profile_preserves_other_profiles_and_secret_metadata ... ok
[INFO] [stdout] test credentials::tests::update_selected_profile_preserves_flat_default_store_format ... ok
[INFO] [stdout] test download::tests::archive_decision_replace_forces_fresh_writes ... ok
[INFO] [stdout] test download::tests::archive_decision_keep_both_uses_new_output_root ... ok
[INFO] [stdout] test credentials::tests::update_selected_profile_uses_current_default_profile ... ok
[INFO] [stdout] test download::tests::archive_entry_danmaku_update_target_requires_danmaku_eligible_archive_mode ... ok
[INFO] [stdout] test download::tests::archive_decision_keep_both_avoids_archive_only_output_root ... ok
[INFO] [stdout] test credentials::tests::write_credentials_fences_after_temp_file_write_before_replace ... ok
[INFO] [stdout] test download::tests::archive_preflight_cancel_rejects_late_output_conflict ... ok
[INFO] [stdout] test download::tests::archive_preflight_keep_both_rejects_stale_archive_reservations ... ok
[INFO] [stdout] test download::tests::archive_decision_keep_both_skips_broken_symlink_output_root ... ok
[INFO] [stdout] test download::tests::archive_decision_keep_both_avoids_unrelated_archive_output_root ... ok
[INFO] [stdout] test download::tests::cancelled_download_plan_reports_plan_cancelled_before_start ... ok
[INFO] [stdout] test download::tests::archive_cancellation_after_plan_completed_keeps_archive_record ... ok
[INFO] [stdout] test download::tests::cancelled_single_url_retry_backoff_does_not_duplicate_file_failed ... ok
[INFO] [stdout] test download::tests::cancelled_started_file_does_not_retry_or_duplicate_file_failed ... ok
[INFO] [stdout] test download::tests::cancelled_started_file_rolls_back_and_reports_cancelled ... ok
[INFO] [stdout] test download::tests::candidate_urls_do_not_rewrite_local_ports_for_cli_default ... ok
[INFO] [stdout] test download::tests::candidate_urls_force_replace_ordinary_hosts ... ok
[INFO] [stdout] test download::tests::candidate_urls_preserve_explicit_replacement_default_port ... ok
[INFO] [stdout] test download::tests::candidate_urls_preserve_explicit_replacement_default_port_from_url_like_input ... ok
[INFO] [stdout] test download::tests::candidate_urls_preserve_media_hosts_by_default ... ok
[INFO] [stdout] test download::tests::candidate_urls_rewrite_custom_ipv6_upos_host ... ok
[INFO] [stdout] test download::tests::candidate_urls_rewrite_custom_upos_hosts_and_dedupe ... ok
[INFO] [stdout] test download::tests::candidate_urls_rewrite_remote_pcdn_hosts_for_cli_default ... ok
[INFO] [stdout] test download::tests::danmaku_archive_key_refresh_preserves_stream_selection_prefix ... ok
[INFO] [stdout] test download::tests::danmaku_archive_key_refresh_preserves_subtitle_ai_token_order ... ok
[INFO] [stdout] test download::tests::ass_only_danmaku_progress_excludes_internal_source_file ... ok
[INFO] [stdout] test download::tests::cancelled_retry_backoff_does_not_duplicate_file_failed ... ok
[INFO] [stdout] test download::tests::cancellation_after_entry_completion_reports_completed_entries ... ok
[INFO] [stdout] test download::tests::can_skip_cover_sidecar_downloads ... ok
[INFO] [stdout] test download::tests::default_entry_template_preserves_existing_title_sanitization ... ok
[INFO] [stdout] test download::tests::default_path_templates_preserve_existing_names ... ok
[INFO] [stdout] test download::tests::default_path_templates_preserve_existing_truncation_budgets ... ok
[INFO] [stdout] test download::tests::download_archive_distinguishes_danmaku_format_outputs ... ok
[INFO] [stdout] test download::tests::archive_decision_replace_validates_templates_before_removing_output ... ok
[INFO] [stdout] test download::tests::archive_preflight_replace_removes_late_output_conflict ... ok
[INFO] [stdout] test download::tests::download_archive_keeps_same_output_stream_variants_when_files_remain ... ok
[INFO] [stdout] test download::tests::download_archive_record_resolves_symlink_parent_output_path ... ok
[INFO] [stdout] test download::tests::download_archive_record_stores_absolute_paths ... ok
[INFO] [stdout] test download::tests::download_archive_matches_audio_language_aliases_by_selected_stream ... ok
[INFO] [stdout] test download::tests::archive_decision_replace_removes_broken_symlink_output_root ... ok
[INFO] [stdout] test download::tests::download_archive_round_trips_without_urls ... ok
[INFO] [stdout] test download::tests::download_archive_save_rejects_directory_path ... ok
[INFO] [stdout] test download::tests::download_archive_save_preserves_symlink_target ... ok
[INFO] [stdout] test download::tests::download_archive_save_replaces_existing_file ... ok
[INFO] [stdout] test download::tests::download_content_key_distinguishes_explicit_audio_language_selection ... ok
[INFO] [stdout] test download::tests::download_archive_records_can_be_queried_by_download_mode ... ok
[INFO] [stdout] test download::tests::download_content_key_distinguishes_subtitle_ai_policy ... ok
[INFO] [stdout] test download::tests::danmaku_update_archive_appends_xml_and_regenerates_ass ... ok
[INFO] [stdout] test download::tests::download_entry_content_key_ignores_display_index ... ok
[INFO] [stdout] test download::tests::download_audio_only_skips_video_sidecars_and_mux ... ok
[INFO] [stdout] test download::tests::download_input_reports_parse_failure_terminal_event ... ok
[INFO] [stdout] test download::tests::download_danmaku_multiple_formats_writes_xml_and_ass_sidecars ... ok
[INFO] [stdout] test download::tests::download_options_builders_configure_embedding_controls ... ok
[INFO] [stdout] test download::tests::danmaku_update_partial_selection_keeps_record_content_key_conservative ... ok
[INFO] [stdout] test download::tests::danmaku_update_skips_archive_entries_without_danmaku_sidecars ... ok
[INFO] [stdout] test download::tests::download_danmaku_only_can_generate_ass_sidecar ... ok
[INFO] [stdout] test download::tests::download_plan_reports_setup_failure_terminal_event ... ok
[INFO] [stdout] test download::tests::download_preflight_matches_legacy_bvid_entry_key ... ok
[INFO] [stdout] test download::tests::download_preflight_matches_symlink_parent_archive_output ... ok
[INFO] [stdout] test download::tests::download_preflight_reports_archive_hit_and_output_conflict ... ok
[INFO] [stdout] test download::tests::download_preflight_reports_broken_symlink_output_conflict ... ok
[INFO] [stdout] test download::tests::download_plan_reports_failure_terminal_events ... ok
[INFO] [stdout] test download::tests::download_media_rewrites_custom_upos_host ... ok
[INFO] [stdout] test download::tests::download_plan_reports_progress_events ... ok
[INFO] [stdout] test download::tests::download_preflight_round_trip_preserves_reserved_output_dirs ... ok
[INFO] [stdout] test download::tests::download_report_summary_counts_files_mux_and_bytes ... ok
[INFO] [stdout] test download::tests::download_video_only_skips_audio_sidecars_and_mux ... ok
[INFO] [stdout] test download::tests::download_entry_content_key_matches_episode_and_video_forms ... ok
[INFO] [stdout] test download::tests::download_preflight_reports_entry_overlap_after_index_change ... ok
[INFO] [stdout] test download::tests::downloads_media_sidecars_and_danmaku ... ok
[INFO] [stdout] test download::tests::download_archive_records_can_be_queried_by_stream_selection_variant ... ok
[INFO] [stdout] test download::tests::download_plan_reports_entry_setup_failure_terminal_event ... ok
[INFO] [stdout] test download::tests::download_preflight_reports_entry_overlap_from_archive ... ok
[INFO] [stdout] test download::tests::entry_dir_name_distinguishes_content_identity ... ok
[INFO] [stdout] test download::tests::entry_dir_name_limits_final_component_bytes ... ok
[INFO] [stdout] test download::tests::duplicate_cancel_reports_plan_cancelled_progress ... ok
[INFO] [stdout] test download::tests::ffmpeg_chapter_metadata_escapes_values ... ok
[INFO] [stdout] test download::tests::download_preflight_reports_same_output_archive_record ... ok
[INFO] [stdout] test download::tests::falls_back_to_backup_media_url ... ok
[INFO] [stdout] test download::tests::ffmpeg_mux_cancel_after_process_removes_temporary_output ... ok
[INFO] [stdout] test download::tests::ffmpeg_mux_requires_output_file ... ok
[INFO] [stdout] test download::tests::ffmpeg_mux_sigint_exit_code_maps_to_delayed_cancellation ... ok
[INFO] [stdout] test download::tests::ffmpeg_mux_includes_chapter_metadata ... ok
[INFO] [stdout] test download::tests::ffmpeg_mux_failure_is_reported ... ok
[INFO] [stdout] test download::tests::ffmpeg_mux_failure_preserves_existing_output ... ok
[INFO] [stdout] test download::tests::invalid_audio_selection_fails_before_media_writes ... ok
[INFO] [stdout] test download::tests::ffmpeg_mux_success_is_reported ... ok
[INFO] [stdout] test download::tests::ffmpeg_mux_rejects_stale_output_file ... ok
[INFO] [stdout] test download::tests::ffmpeg_mux_rejects_empty_output_file ... ok
[INFO] [stdout] test download::tests::ffmpeg_mux_sigint_status_maps_to_delayed_cancellation ... ok
[INFO] [stdout] test download::tests::media_file_name_distinguishes_non_ascii_language_doc_only_streams ... ok
[INFO] [stdout] test download::tests::media_download_does_not_send_cookie_header ... ok
[INFO] [stdout] test download::tests::media_file_name_distinguishes_stream_identity_without_query ... ok
[INFO] [stdout] test download::tests::multi_entry_invalid_selection_fails_before_any_media_writes ... ok
[INFO] [stdout] test download::tests::generated_danmaku_failure_reports_file_failed_progress ... ok
[INFO] [stdout] test download::tests::matching_416_resume_response_is_treated_as_complete ... ok
[INFO] [stdout] test download::tests::path_templates_escape_literal_braces_and_sanitize_paths ... ok
[INFO] [stdout] test download::tests::path_templates_reject_duplicate_entry_directories ... ok
[INFO] [stdout] test download::tests::path_templates_reject_excessive_number_width ... ok
[INFO] [stdout] test download::tests::path_templates_reject_string_placeholder_formats ... ok
[INFO] [stdout] test download::tests::path_templates_reject_unknown_placeholders ... ok
[INFO] [stdout] test download::tests::path_templates_render_known_placeholders ... ok
[INFO] [stdout] test download::tests::no_resume_preserves_existing_file_when_fresh_write_fails ... ok
[INFO] [stdout] test download::tests::preserves_partial_file_when_full_retry_fails_after_ignored_range ... ok
[INFO] [stdout] test download::tests::no_resume_replaces_existing_file_after_fresh_write_validates ... ok
[INFO] [stdout] test download::tests::rejects_content_range_on_non_partial_response ... ok
[INFO] [stdout] test download::tests::rejects_empty_unknown_size_media_response ... ok
[INFO] [stdout] test download::tests::rejects_content_range_total_mismatch_on_resume ... ok
[INFO] [stdout] test download::tests::rejects_empty_zero_size_media_response ... ok
[INFO] [stdout] test download::tests::rejects_empty_cover_sidecar_response ... ok
[INFO] [stdout] test download::tests::rejects_expected_media_size_mismatch ... ok
[INFO] [stdout] test download::tests::rejects_incomplete_dash_without_flv_fallback ... ok
[INFO] [stdout] test download::tests::rejects_ignored_range_without_length_proof ... ok
[INFO] [stdout] test download::tests::rejects_unknown_total_content_range_without_expected_size ... ok
[INFO] [stdout] test download::tests::rejects_short_content_range_body_on_resume ... ok
[INFO] [stdout] test download::tests::rejects_mismatched_content_range_on_resume ... ok
[INFO] [stdout] test download::tests::replaces_existing_file_when_ignored_range_has_content_length ... ok
[INFO] [stdout] test download::tests::rejects_unsatisfied_content_range_on_non_partial_response ... ok
[INFO] [stdout] test download::tests::retries_failed_downloads ... ok
[INFO] [stdout] test download::tests::safe_file_name_limits_utf8_bytes ... ok
[INFO] [stdout] test download::tests::safe_file_name_with_tiny_budget_stays_in_budget ... ok
[INFO] [stdout] test download::tests::select_audio_stream_reports_available_languages ... ok
[INFO] [stdout] test download::tests::select_audio_stream_supports_language_metadata ... ok
[INFO] [stdout] test download::tests::select_media_stream_reports_available_ids ... ok
[INFO] [stdout] test download::tests::resumes_partial_files_with_range_request ... ok
[INFO] [stdout] test download::tests::replaces_partial_file_when_full_retry_succeeds_after_ignored_range ... ok
[INFO] [stdout] test download::tests::sidecar_only_modes_reject_stream_quality_selection ... ok
[INFO] [stdout] test download::tests::sidecar_only_modes_do_not_require_media_streams ... ok
[INFO] [stdout] test download::tests::subtitle_ai_policy_filters_tracks ... ok
[INFO] [stdout] test download::tests::skips_duplicate_subtitle_urls ... ok
[INFO] [stdout] test download::tests::subtitle_ai_policy_prefers_regioned_manual_track_over_generic_ai_track ... ok
[INFO] [stdout] test download::tests::subtitle_dedup_key_ignores_url_fragment ... ok
[INFO] [stdout] test download::tests::subtitle_file_name_distinguishes_duplicate_languages ... ok
[INFO] [stdout] test download::tests::subtitle_file_name_limits_unknown_extension_bytes ... ok
[INFO] [stdout] test download::tests::started_primary_candidate_failure_is_closed_before_backup ... ok
[INFO] [stdout] test download::tests::temporary_file_names_reserve_suffix_budget ... ok
[INFO] [stdout] test download::tests::write_generated_text_file_replaces_existing_target ... ok
[INFO] [stdout] test download::tests::download_archive_load_reports_metadata_errors ... FAILED
[INFO] [stdout] test download::tests::uses_flv_segments_when_dash_pair_is_incomplete ... ok
[INFO] [stdout] test download::tests::subtitle_ai_policy_prefers_non_ai_tracks ... ok
[INFO] [stdout] test feed_list::tests::feed_list_index_fetch_mode_stops_after_max_requested_index ... ok
[INFO] [stdout] test feed_list::tests::feed_list_current_selection_is_rejected ... ok
[INFO] [stdout] test feed_list::tests::feed_list_items_can_be_deduplicated_and_renumbered ... ok
[INFO] [stdout] test feed_list::tests::feed_list_selection_preserves_selector_order_and_deduplicates ... ok
[INFO] [stdout] test input::tests::parses_collection_inputs ... ok
[INFO] [stdout] test feed_list::tests::feed_list_all_selection_allows_empty_items ... ok
[INFO] [stdout] test input::tests::parses_common_inputs ... ok
[INFO] [stdout] test input::tests::parses_feed_inputs ... ok
[INFO] [stdout] test login::tests::access_key_login_ticket_revalidates_public_config_fields ... ok
[INFO] [stdout] test login::tests::access_key_login_ticket_debug_redacts_auth_url ... ok
[INFO] [stdout] test login::tests::access_key_login_config_builds_biliplus_ticket ... ok
[INFO] [stdout] test login::tests::access_key_refresh_request_debug_redacts_tokens ... ok
[INFO] [stdout] test login::tests::access_key_login_ticket_validates_message_origin ... ok
[INFO] [stdout] test login::tests::access_key_renewal_decision_keeps_fresh_credentials ... ok
[INFO] [stdout] test login::tests::access_key_renewal_decision_reauthorizes_expired_metadata_only_token ... ok
[INFO] [stdout] test login::tests::access_key_renewal_decision_reauthorizes_missing_access_key ... ok
[INFO] [stdout] test login::tests::access_key_renewal_decision_reports_ready_refresh_secret ... ok
[INFO] [stdout] test login::tests::builds_intl_access_key_refresh_params_without_app_signature ... ok
[INFO] [stdout] test login::tests::builds_main_access_key_refresh_params_for_keypairs ... ok
[INFO] [stdout] test login::tests::converts_set_cookie_headers_to_cookie ... ok
[INFO] [stdout] test login::tests::extracts_qrcode_key_from_login_url ... ok
[INFO] [stdout] test login::tests::parses_balh_json_access_key_credentials ... ok
[INFO] [stdout] test login::tests::parses_balh_raw_query_callback ... ok
[INFO] [stdout] test login::tests::converts_web_success_url_query_to_cookie ... ok
[INFO] [stdout] test login::tests::parses_balh_url_callback_with_access_token_alias ... ok
[INFO] [stdout] test login::tests::parses_balh_fragment_callback_with_access_token_alias ... ok
[INFO] [stdout] test login::tests::preferred_balh_expiry_fields_skip_invalid_fallbacks ... ok
[INFO] [stdout] test login::tests::qr_login_ticket_debug_is_redacted ... ok
[INFO] [stdout] test login::tests::qr_login_ticket_output_exposes_scan_payload_but_redacts_debug ... ok
[INFO] [stdout] test login::tests::refresh_credentials_ignore_zero_expiry_aliases_when_falling_back ... ok
[INFO] [stdout] test login::tests::refreshes_intl_access_key_with_intl_passport_endpoint ... ok
[INFO] [stdout] test login::tests::refreshes_tv_access_key_with_tv_oauth_endpoint ... ok
[INFO] [stdout] test login::tests::rejects_balh_payload_without_access_key ... ok
[INFO] [stdout] test login::tests::signs_stable_tv_login_params_after_auth_code ... ok
[INFO] [stdout] test login::tests::refreshes_android_access_key_with_main_oauth_endpoint ... ok
[INFO] [stdout] test login::tests::tv_login_context_reuses_device_identity_for_poll ... ok
[INFO] [stdout] test login::tests::polls_web_qr_login_states ... ok
[INFO] [stdout] test models::tests::download_entry_defaults_missing_cover_url ... ok
[INFO] [stdout] test playback::tests::abr_groups_isolate_missing_video_codecs ... ok
[INFO] [stdout] test playback::tests::abr_groups_separate_other_video_codec_strings ... ok
[INFO] [stdout] test playback::tests::abr_order_treats_partial_combined_bandwidth_as_unknown ... ok
[INFO] [stdout] test playback::tests::builds_flv_playback_variant_with_segment_specs ... ok
[INFO] [stdout] test playback::tests::codec_family_distinguishes_mp4a_object_types ... ok
[INFO] [stdout] test playback::tests::builds_dash_playback_variants_from_download_plan ... ok
[INFO] [stdout] test playback::tests::codec_family_keeps_family_only_app_audio_visible ... ok
[INFO] [stdout] test playback::tests::codec_family_keeps_family_only_app_streams_selectable ... ok
[INFO] [stdout] test playback::tests::deserializes_legacy_avplayer_h264_aac_hint_by_rebuilding_current_hint ... ok
[INFO] [stdout] test playback::tests::codec_preference_can_prioritize_non_h264_variants ... ok
[INFO] [stdout] test login::tests::creates_and_polls_tv_qr_login ... ok
[INFO] [stdout] test playback::tests::source_hash_preserves_query_identity_and_ignores_fragments ... ok
[INFO] [stdout] test playback::tests::deserializes_legacy_variant_without_selection_hints ... ok
[INFO] [stdout] test playback::tests::deserializes_legacy_entry_without_cache_or_abr_metadata ... ok
[INFO] [stdout] test selection::tests::parses_single_bare_index_as_page_selection ... ok
[INFO] [stdout] test selection::tests::parses_page_range_and_list_selection ... ok
[INFO] [stdout] test selection::tests::rejects_zero_and_reversed_ranges ... ok
[INFO] [stdout] test download::tests::flv_mux_concat_file_uses_paths_relative_to_entry_dir ... FAILED
[INFO] [stdout] test download::tests::media_download_request_timeout_still_bounds_response_headers ... ok
[INFO] [stdout] test download::tests::media_download_uses_idle_timeout_instead_of_request_total_timeout ... ok
[INFO] [stdout] test download::tests::output_occupancy_reports_metadata_errors ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- download::tests::download_archive_load_reports_metadata_errors stdout ----
[INFO] [stdout] Error: expected archive load permission error, got 0 records
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <anyhow::Error>::msg::<alloc::string::String>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.102/src/backtrace.rs:10:14
[INFO] [stdout]    1: bbdown_core::download::tests::download_archive_load_reports_metadata_errors
[INFO] [stdout]              at ./src/download.rs:11087:17
[INFO] [stdout]    2: bbdown_core::download::tests::download_archive_load_reports_metadata_errors::{closure#0}
[INFO] [stdout]              at ./src/download.rs:11071:59
[INFO] [stdout]    3: <bbdown_core::download::tests::download_archive_load_reports_metadata_errors::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    4: <fn() -> core::result::Result<(), alloc::string::String> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    5: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:724:18
[INFO] [stdout]    6: test::run_test_in_process::{closure#0}
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:747:74
[INFO] [stdout]    7: <core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]    8: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:576:43
[INFO] [stdout]    9: std::panicking::catch_unwind::<core::result::Result<(), alloc::string::String>, core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:544:19
[INFO] [stdout]   10: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panic.rs:359:14
[INFO] [stdout]   11: test::run_test_in_process
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:747:27
[INFO] [stdout]   12: test::run_test::{closure#0}
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:668:43
[INFO] [stdout]   13: test::run_test::{closure#1}
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:698:41
[INFO] [stdout]   14: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   15: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   16: <core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   17: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:576:43
[INFO] [stdout]   18: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:544:19
[INFO] [stdout]   19: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panic.rs:359:14
[INFO] [stdout]   20: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   21: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22: <alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output = ()> + core::marker::Send> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2319:9
[INFO] [stdout]   23: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/thread/unix.rs:123:17
[INFO] [stdout]   24: <unknown>
[INFO] [stdout]   25: clone
[INFO] [stdout] 
[INFO] [stdout] ---- download::tests::flv_mux_concat_file_uses_paths_relative_to_entry_dir stdout ----
[INFO] [stdout] Error: Read-only file system (os error 30) at path "/opt/rustwide/workdir/crates/bbdown/./.bbdown-flv-mux-zrxzR9"
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <anyhow::Error as core::convert::From<core::io::error::Error>>::from
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.102/src/backtrace.rs:10:14
[INFO] [stdout]    1: <core::result::Result<(), anyhow::Error> as core::ops::try_trait::FromResidual<core::result::Result<core::convert::Infallible, core::io::error::Error>>>::from_residual
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/result.rs:2192:27
[INFO] [stdout]    2: bbdown_core::download::tests::flv_mux_concat_file_uses_paths_relative_to_entry_dir::{closure#0}
[INFO] [stdout]              at ./src/download.rs:9451:20
[INFO] [stdout]    3: <core::pin::Pin<&mut dyn core::future::future::Future<Output = core::result::Result<(), anyhow::Error>>> as core::future::future::Future>::poll
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/future/future.rs:133:9
[INFO] [stdout]    4: <core::pin::Pin<&mut core::pin::Pin<&mut dyn core::future::future::Future<Output = core::result::Result<(), anyhow::Error>>>> as core::future::future::Future>::poll
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/future/future.rs:133:9
[INFO] [stdout]    5: <tokio::runtime::scheduler::current_thread::CoreGuard>::block_on::<core::pin::Pin<&mut core::pin::Pin<&mut dyn core::future::future::Future<Output = core::result::Result<(), anyhow::Error>>>>>::{closure#0}::{closure#0}::{closure#0}
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.3/src/runtime/scheduler/current_thread/mod.rs:778:70
[INFO] [stdout]    6: tokio::task::coop::with_budget::<core::task::poll::Poll<core::result::Result<(), anyhow::Error>>, <tokio::runtime::scheduler::current_thread::CoreGuard>::block_on<core::pin::Pin<&mut core::pin::Pin<&mut dyn core::future::future::Future<Output = core::result::Result<(), anyhow::Error>>>>>::{closure#0}::{closure#0}::{closure#0}>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.3/src/task/coop/mod.rs:167:5
[INFO] [stdout]    7: tokio::task::coop::budget::<core::task::poll::Poll<core::result::Result<(), anyhow::Error>>, <tokio::runtime::scheduler::current_thread::CoreGuard>::block_on<core::pin::Pin<&mut core::pin::Pin<&mut dyn core::future::future::Future<Output = core::result::Result<(), anyhow::Error>>>>>::{closure#0}::{closure#0}::{closure#0}>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.3/src/task/coop/mod.rs:133:5
[INFO] [stdout]    8: <tokio::runtime::scheduler::current_thread::CoreGuard>::block_on::<core::pin::Pin<&mut core::pin::Pin<&mut dyn core::future::future::Future<Output = core::result::Result<(), anyhow::Error>>>>>::{closure#0}::{closure#0}
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.3/src/runtime/scheduler/current_thread/mod.rs:778:25
[INFO] [stdout]    9: <tokio::runtime::scheduler::current_thread::Context>::enter::<core::task::poll::Poll<core::result::Result<(), anyhow::Error>>, <tokio::runtime::scheduler::current_thread::CoreGuard>::block_on<core::pin::Pin<&mut core::pin::Pin<&mut dyn core::future::future::Future<Output = core::result::Result<(), anyhow::Error>>>>>::{closure#0}::{closure#0}>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.3/src/runtime/scheduler/current_thread/mod.rs:451:19
[INFO] [stdout]   10: <tokio::runtime::scheduler::current_thread::CoreGuard>::block_on::<core::pin::Pin<&mut core::pin::Pin<&mut dyn core::future::future::Future<Output = core::result::Result<(), anyhow::Error>>>>>::{closure#0}
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.3/src/runtime/scheduler/current_thread/mod.rs:777:44
[INFO] [stdout]   11: <tokio::runtime::scheduler::current_thread::CoreGuard>::enter::<<tokio::runtime::scheduler::current_thread::CoreGuard>::block_on<core::pin::Pin<&mut core::pin::Pin<&mut dyn core::future::future::Future<Output = core::result::Result<(), anyhow::Error>>>>>::{closure#0}, core::option::Option<core::result::Result<(), anyhow::Error>>>::{closure#0}
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.3/src/runtime/scheduler/current_thread/mod.rs:865:68
[INFO] [stdout]   12: <tokio::runtime::context::scoped::Scoped<tokio::runtime::scheduler::Context>>::set::<<tokio::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio::runtime::scheduler::current_thread::CoreGuard>::block_on<core::pin::Pin<&mut core::pin::Pin<&mut dyn core::future::future::Future<Output = core::result::Result<(), anyhow::Error>>>>>::{closure#0}, core::option::Option<core::result::Result<(), anyhow::Error>>>::{closure#0}, (alloc::boxed::Box<tokio::runtime::scheduler::current_thread::Core>, core::option::Option<core::result::Result<(), anyhow::Error>>)>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.3/src/runtime/context/scoped.rs:40:9
[INFO] [stdout]   13: tokio::runtime::context::set_scheduler::<(alloc::boxed::Box<tokio::runtime::scheduler::current_thread::Core>, core::option::Option<core::result::Result<(), anyhow::Error>>), <tokio::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio::runtime::scheduler::current_thread::CoreGuard>::block_on<core::pin::Pin<&mut core::pin::Pin<&mut dyn core::future::future::Future<Output = core::result::Result<(), anyhow::Error>>>>>::{closure#0}, core::option::Option<core::result::Result<(), anyhow::Error>>>::{closure#0}>::{closure#0}
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.3/src/runtime/context.rs:181:38
[INFO] [stdout]   14: <std::thread::local::LocalKey<tokio::runtime::context::Context>>::try_with::<tokio::runtime::context::set_scheduler<(alloc::boxed::Box<tokio::runtime::scheduler::current_thread::Core>, core::option::Option<core::result::Result<(), anyhow::Error>>), <tokio::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio::runtime::scheduler::current_thread::CoreGuard>::block_on<core::pin::Pin<&mut core::pin::Pin<&mut dyn core::future::future::Future<Output = core::result::Result<(), anyhow::Error>>>>>::{closure#0}, core::option::Option<core::result::Result<(), anyhow::Error>>>::{closure#0}>::{closure#0}, (alloc::boxed::Box<tokio::runtime::scheduler::current_thread::Core>, core::option::Option<core::result::Result<(), anyhow::Error>>)>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/local.rs:463:12
[INFO] [stdout]   15: <std::thread::local::LocalKey<tokio::runtime::context::Context>>::with::<tokio::runtime::context::set_scheduler<(alloc::boxed::Box<tokio::runtime::scheduler::current_thread::Core>, core::option::Option<core::result::Result<(), anyhow::Error>>), <tokio::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio::runtime::scheduler::current_thread::CoreGuard>::block_on<core::pin::Pin<&mut core::pin::Pin<&mut dyn core::future::future::Future<Output = core::result::Result<(), anyhow::Error>>>>>::{closure#0}, core::option::Option<core::result::Result<(), anyhow::Error>>>::{closure#0}>::{closure#0}, (alloc::boxed::Box<tokio::runtime::scheduler::current_thread::Core>, core::option::Option<core::result::Result<(), anyhow::Error>>)>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/local.rs:427:20
[INFO] [stdout]   16: tokio::runtime::context::set_scheduler::<(alloc::boxed::Box<tokio::runtime::scheduler::current_thread::Core>, core::option::Option<core::result::Result<(), anyhow::Error>>), <tokio::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio::runtime::scheduler::current_thread::CoreGuard>::block_on<core::pin::Pin<&mut core::pin::Pin<&mut dyn core::future::future::Future<Output = core::result::Result<(), anyhow::Error>>>>>::{closure#0}, core::option::Option<core::result::Result<(), anyhow::Error>>>::{closure#0}>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.3/src/runtime/context.rs:181:17
[INFO] [stdout]   17: <tokio::runtime::scheduler::current_thread::CoreGuard>::enter::<<tokio::runtime::scheduler::current_thread::CoreGuard>::block_on<core::pin::Pin<&mut core::pin::Pin<&mut dyn core::future::future::Future<Output = core::result::Result<(), anyhow::Error>>>>>::{closure#0}, core::option::Option<core::result::Result<(), anyhow::Error>>>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.3/src/runtime/scheduler/current_thread/mod.rs:865:27
[INFO] [stdout]   18: <tokio::runtime::scheduler::current_thread::CoreGuard>::block_on::<core::pin::Pin<&mut core::pin::Pin<&mut dyn core::future::future::Future<Output = core::result::Result<(), anyhow::Error>>>>>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.3/src/runtime/scheduler/current_thread/mod.rs:765:24
[INFO] [stdout]   19: <tokio::runtime::scheduler::current_thread::CurrentThread>::block_on::<core::pin::Pin<&mut dyn core::future::future::Future<Output = core::result::Result<(), anyhow::Error>>>>::{closure#0}
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.3/src/runtime/scheduler/current_thread/mod.rs:205:33
[INFO] [stdout]   20: tokio::runtime::context::runtime::enter_runtime::<<tokio::runtime::scheduler::current_thread::CurrentThread>::block_on<core::pin::Pin<&mut dyn core::future::future::Future<Output = core::result::Result<(), anyhow::Error>>>>::{closure#0}, core::result::Result<(), anyhow::Error>>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.3/src/runtime/context/runtime.rs:65:16
[INFO] [stdout]   21: <tokio::runtime::scheduler::current_thread::CurrentThread>::block_on::<core::pin::Pin<&mut dyn core::future::future::Future<Output = core::result::Result<(), anyhow::Error>>>>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.3/src/runtime/scheduler/current_thread/mod.rs:193:9
[INFO] [stdout]   22: <tokio::runtime::runtime::Runtime>::block_on_inner::<core::pin::Pin<&mut dyn core::future::future::Future<Output = core::result::Result<(), anyhow::Error>>>>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.3/src/runtime/runtime.rs:371:52
[INFO] [stdout]   23: <tokio::runtime::runtime::Runtime>::block_on::<core::pin::Pin<&mut dyn core::future::future::Future<Output = core::result::Result<(), anyhow::Error>>>>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.3/src/runtime/runtime.rs:345:18
[INFO] [stdout]   24: bbdown_core::download::tests::flv_mux_concat_file_uses_paths_relative_to_entry_dir
[INFO] [stdout]              at ./src/download.rs:9497:11
[INFO] [stdout]   25: bbdown_core::download::tests::flv_mux_concat_file_uses_paths_relative_to_entry_dir::{closure#0}
[INFO] [stdout]              at ./src/download.rs:9445:72
[INFO] [stdout]   26: <bbdown_core::download::tests::flv_mux_concat_file_uses_paths_relative_to_entry_dir::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   27: <fn() -> core::result::Result<(), alloc::string::String> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   28: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:724:18
[INFO] [stdout]   29: test::run_test_in_process::{closure#0}
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:747:74
[INFO] [stdout]   30: <core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   31: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:576:43
[INFO] [stdout]   32: std::panicking::catch_unwind::<core::result::Result<(), alloc::string::String>, core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:544:19
[INFO] [stdout]   33: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panic.rs:359:14
[INFO] [stdout]   34: test::run_test_in_process
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:747:27
[INFO] [stdout]   35: test::run_test::{closure#0}
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:668:43
[INFO] [stdout]   36: test::run_test::{closure#1}
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:698:41
[INFO] [stdout]   37: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   38: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   39: <core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   40: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:576:43
[INFO] [stdout]   41: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:544:19
[INFO] [stdout]   42: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panic.rs:359:14
[INFO] [stdout]   43: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   44: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   45: <alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output = ()> + core::marker::Send> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2319:9
[INFO] [stdout]   46: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/thread/unix.rs:123:17
[INFO] [stdout]   47: <unknown>
[INFO] [stdout]   48: clone
[INFO] [stdout] 
[INFO] [stdout] ---- download::tests::output_occupancy_reports_metadata_errors stdout ----
[INFO] [stdout] Error: expected metadata permission error, got occupied=false
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <anyhow::Error>::msg::<alloc::string::String>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.102/src/backtrace.rs:10:14
[INFO] [stdout]    1: anyhow::__private::format_err
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.102/src/lib.rs:690:13
[INFO] [stdout]    2: bbdown_core::download::tests::output_occupancy_reports_metadata_errors
[INFO] [stdout]              at ./src/download.rs:9578:17
[INFO] [stdout]    3: bbdown_core::download::tests::output_occupancy_reports_metadata_errors::{closure#0}
[INFO] [stdout]              at ./src/download.rs:9562:54
[INFO] [stdout]    4: <bbdown_core::download::tests::output_occupancy_reports_metadata_errors::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    5: <fn() -> core::result::Result<(), alloc::string::String> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    6: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:724:18
[INFO] [stdout]    7: test::run_test_in_process::{closure#0}
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:747:74
[INFO] [stdout]    8: <core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]    9: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:576:43
[INFO] [stdout]   10: std::panicking::catch_unwind::<core::result::Result<(), alloc::string::String>, core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:544:19
[INFO] [stdout]   11: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panic.rs:359:14
[INFO] [stdout]   12: test::run_test_in_process
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:747:27
[INFO] [stdout]   13: test::run_test::{closure#0}
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:668:43
[INFO] [stdout]   14: test::run_test::{closure#1}
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:698:41
[INFO] [stdout]   15: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   16: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   17: <core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   18: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:576:43
[INFO] [stdout]   19: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:544:19
[INFO] [stdout]   20: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panic.rs:359:14
[INFO] [stdout]   21: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   22: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23: <alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output = ()> + core::marker::Send> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2319:9
[INFO] [stdout]   24: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]              at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/thread/unix.rs:123:17
[INFO] [stdout]   25: <unknown>
[INFO] [stdout]   26: clone
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     download::tests::download_archive_load_reports_metadata_errors
[INFO] [stdout]     download::tests::flv_mux_concat_file_uses_paths_relative_to_entry_dir
[INFO] [stdout]     download::tests::output_occupancy_reports_metadata_errors
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 427 passed; 3 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.62s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `-p bbdown-core --lib`
[INFO] running `Command { std: "docker" "inspect" "97dd34946aab5059f2591533eca80f5f9158d090a625f47bfe0497171434782a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "97dd34946aab5059f2591533eca80f5f9158d090a625f47bfe0497171434782a", kill_on_drop: false }`
[INFO] [stdout] 97dd34946aab5059f2591533eca80f5f9158d090a625f47bfe0497171434782a
