[INFO] fetching crate univoice 0.1.6...
[INFO] testing univoice-0.1.6 against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate univoice 0.1.6 into /workspace/builds/worker-7-tc2/source
[INFO] started tweaking crates.io crate univoice 0.1.6
[INFO] removed 0 missing examples
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate univoice 0.1.6
[INFO] tweaked toml for crates.io crate univoice 0.1.6 written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate univoice 0.1.6 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate univoice 0.1.6 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.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:248:12
[INFO] [stderr]     |
[INFO] [stderr] 248 | homepage = "https://github.com/shenjingnan/univoice"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 254 | repository = "https://github.com/shenjingnan/univoice"
[INFO] [stderr]     |              -----------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `univoice` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 3b08fadcc78ede1708e0536e2cf536f4ace8f6ee4a6d80d0001bbf8546fd8b87
[INFO] running `Command { std: "docker" "start" "3b08fadcc78ede1708e0536e2cf536f4ace8f6ee4a6d80d0001bbf8546fd8b87", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3b08fadcc78ede1708e0536e2cf536f4ace8f6ee4a6d80d0001bbf8546fd8b87", 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" "3b08fadcc78ede1708e0536e2cf536f4ace8f6ee4a6d80d0001bbf8546fd8b87" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3b08fadcc78ede1708e0536e2cf536f4ace8f6ee4a6d80d0001bbf8546fd8b87", 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" "3b08fadcc78ede1708e0536e2cf536f4ace8f6ee4a6d80d0001bbf8546fd8b87" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:248:12
[INFO] [stderr]     |
[INFO] [stderr] 248 | homepage = "https://github.com/shenjingnan/univoice"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 254 | repository = "https://github.com/shenjingnan/univoice"
[INFO] [stderr]     |              -----------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `univoice` (manifest) generated 1 warning
[INFO] [stderr]    Compiling futures-core v0.3.33
[INFO] [stderr]    Compiling cc v1.3.0
[INFO] [stderr]    Compiling futures-sink v0.3.33
[INFO] [stderr]    Compiling http v1.4.2
[INFO] [stderr]    Compiling hybrid-array v0.4.13
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling mio v1.2.2
[INFO] [stderr]    Compiling socket2 v0.6.5
[INFO] [stderr]    Compiling syn v3.0.0
[INFO] [stderr]    Compiling futures-channel v0.3.33
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]    Compiling futures-util v0.3.33
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling clap_builder v4.6.2
[INFO] [stderr]    Compiling clap_derive v4.6.3
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling rand v0.10.2
[INFO] [stderr]    Compiling data-encoding v2.11.0
[INFO] [stderr]    Compiling winnow v1.0.4
[INFO] [stderr]    Compiling tokio v1.53.1
[INFO] [stderr]    Compiling rustls-pki-types v1.15.0
[INFO] [stderr]    Compiling crypto-common v0.2.2
[INFO] [stderr]    Compiling block-buffer v0.12.1
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling toml_writer v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling digest v0.11.3
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]    Compiling sha1 v0.11.0
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling http-body v1.1.0
[INFO] [stderr]    Compiling regex-automata v0.4.16
[INFO] [stderr]    Compiling http-body-util v0.1.4
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling openssl-sys v0.9.117
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling libopus_sys v0.3.3
[INFO] [stderr]    Compiling toml v1.1.3+spec-1.1.0
[INFO] [stderr]    Compiling openssl v0.10.81
[INFO] [stderr]    Compiling clap v4.6.3
[INFO] [stderr]    Compiling clap_complete v4.6.7
[INFO] [stderr]    Compiling sha2 v0.11.0
[INFO] [stderr]    Compiling hmac v0.13.0
[INFO] [stderr]    Compiling async-stream v0.3.6
[INFO] [stderr]    Compiling uuid v1.24.0
[INFO] [stderr]    Compiling base64 v0.23.0
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling thiserror-impl v2.0.19
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling async-trait v0.1.91
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling hyper v1.10.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tokio-stream v0.1.19
[INFO] [stderr]    Compiling thiserror v2.0.19
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tungstenite v0.30.0
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling reqwest v0.13.4
[INFO] [stderr]    Compiling tokio-tungstenite v0.30.0
[INFO] [stderr]    Compiling opus2 v0.4.0
[INFO] [stderr]    Compiling univoice v0.1.6 (/opt/rustwide/workdir)
[INFO] [stderr] warning: unused dependency `anyhow`
[INFO] [stderr]  --> Cargo.toml:5:15
[INFO] [stderr]   |
[INFO] [stderr] 5 | [dependencies.anyhow]
[INFO] [stderr]   |               ^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `anyhow`
[INFO] [stderr] warning: unused dependency `dotenvy`
[INFO] [stderr]   --> Cargo.toml:30:15
[INFO] [stderr]    |
[INFO] [stderr] 30 | [dependencies.dotenvy]
[INFO] [stderr]    |               ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `dotenvy`
[INFO] [stderr] warning: unused dependency `tokio-stream`
[INFO] [stderr]   --> Cargo.toml:72:15
[INFO] [stderr]    |
[INFO] [stderr] 72 | [dependencies.tokio-stream]
[INFO] [stderr]    |               ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `tokio-stream`
[INFO] [stderr] warning: `univoice` (manifest) generated 3 warnings
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 40s
[INFO] running `Command { std: "docker" "inspect" "3b08fadcc78ede1708e0536e2cf536f4ace8f6ee4a6d80d0001bbf8546fd8b87", 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" "3b08fadcc78ede1708e0536e2cf536f4ace8f6ee4a6d80d0001bbf8546fd8b87" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:248:12
[INFO] [stderr]     |
[INFO] [stderr] 248 | homepage = "https://github.com/shenjingnan/univoice"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 254 | repository = "https://github.com/shenjingnan/univoice"
[INFO] [stderr]     |              -----------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `univoice` (manifest) generated 1 warning
[INFO] [stderr]    Compiling openssl v0.10.81
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tungstenite v0.30.0
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling reqwest v0.13.4
[INFO] [stderr]    Compiling tokio-tungstenite v0.30.0
[INFO] [stderr]    Compiling univoice v0.1.6 (/opt/rustwide/workdir)
[INFO] [stderr] warning: unused dependency `anyhow`
[INFO] [stderr]  --> Cargo.toml:5:15
[INFO] [stderr]   |
[INFO] [stderr] 5 | [dependencies.anyhow]
[INFO] [stderr]   |               ^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `anyhow`
[INFO] [stderr] warning: unused dependency `dotenvy`
[INFO] [stderr]   --> Cargo.toml:30:15
[INFO] [stderr]    |
[INFO] [stderr] 30 | [dependencies.dotenvy]
[INFO] [stderr]    |               ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `dotenvy`
[INFO] [stderr] help: to still use for development builds, move to `dev-dependencies`
[INFO] [stderr] warning: unused dependency `tokio-stream`
[INFO] [stderr]   --> Cargo.toml:72:15
[INFO] [stderr]    |
[INFO] [stderr] 72 | [dependencies.tokio-stream]
[INFO] [stderr]    |               ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `tokio-stream`
[INFO] [stderr] warning: `univoice` (manifest) generated 3 warnings
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 53s
[INFO] running `Command { std: "docker" "inspect" "3b08fadcc78ede1708e0536e2cf536f4ace8f6ee4a6d80d0001bbf8546fd8b87", 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" "3b08fadcc78ede1708e0536e2cf536f4ace8f6ee4a6d80d0001bbf8546fd8b87" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:248:12
[INFO] [stderr]     |
[INFO] [stderr] 248 | homepage = "https://github.com/shenjingnan/univoice"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 254 | repository = "https://github.com/shenjingnan/univoice"
[INFO] [stderr]     |              -----------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `univoice` (manifest) generated 1 warning
[INFO] [stderr] warning: unused dependency `anyhow`
[INFO] [stderr]  --> Cargo.toml:5:15
[INFO] [stderr]   |
[INFO] [stderr] 5 | [dependencies.anyhow]
[INFO] [stderr]   |               ^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `anyhow`
[INFO] [stderr] warning: unused dependency `dotenvy`
[INFO] [stderr]   --> Cargo.toml:30:15
[INFO] [stderr]    |
[INFO] [stderr] 30 | [dependencies.dotenvy]
[INFO] [stderr]    |               ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `dotenvy`
[INFO] [stderr] help: to still use for development builds, move to `dev-dependencies`
[INFO] [stderr] warning: unused dependency `tokio-stream`
[INFO] [stderr]   --> Cargo.toml:72:15
[INFO] [stderr]    |
[INFO] [stderr] 72 | [dependencies.tokio-stream]
[INFO] [stderr]    |               ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `tokio-stream`
[INFO] [stderr] warning: `univoice` (manifest) generated 3 warnings
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.37s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/build/univoice/4ff04c6641255085/out/univoice-4ff04c6641255085)
[INFO] [stdout] 
[INFO] [stdout] running 951 tests
[INFO] [stdout] test asr::protocol::dashscope::tests::test_p11_null_optional_fields ... ok
[INFO] [stdout] test asr::protocol::dashscope::tests::test_p15_empty_input ... ok
[INFO] [stdout] test asr::protocol::dashscope::tests::test_p14_extra_unknown_fields ... ok
[INFO] [stdout] test asr::protocol::dashscope::tests::test_p2_result_generated_full ... ok
[INFO] [stdout] test asr::protocol::dashscope::tests::test_p18_empty_text ... ok
[INFO] [stdout] test asr::protocol::dashscope::tests::test_p3_result_generated_minimal ... ok
[INFO] [stdout] test asr::protocol::dashscope::tests::test_p1_task_started ... ok
[INFO] [stdout] test asr::protocol::dashscope::tests::test_p10_run_task_message_minimal ... ok
[INFO] [stdout] test asr::protocol::dashscope::tests::test_p5_task_finished_no_sentence ... ok
[INFO] [stdout] test asr::protocol::dashscope::tests::test_p6_task_failed ... ok
[INFO] [stdout] test asr::protocol::dashscope::tests::test_p8_finish_task_message ... ok
[INFO] [stdout] test asr::protocol::dashscope::tests::test_p9_run_task_message_full ... ok
[INFO] [stdout] test asr::protocol::dashscope::tests::test_p7_unexpected_event ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_b1_auth_headers_all_fields ... ok
[INFO] [stdout] test asr::error::tests::test_e2_from_elapsed_seconds ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_b3_auth_headers_connect_id_is_uuid ... ok
[INFO] [stdout] test asr::protocol::dashscope::tests::test_p12_unicode_text ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_a4_encode_audio_empty_middle ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_e3_error_message_empty_audio ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_e4_error_message_timeout ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_e5_error_message_invalid_format ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_a5_encode_audio_max_sequence ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_e10_error_message_unknown ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_e7_error_message_internal ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_e9_error_message_internal_edge_high ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_e2_error_message_invalid_request ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_e8_error_message_internal_edge_low ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_b2_auth_headers_default_resource_id ... ok
[INFO] [stdout] test asr::protocol::dashscope::tests::test_p13_confidence_boundaries ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_a2_encode_audio_last_frame ... ok
[INFO] [stdout] test asr::error::tests::test_e3_from_elapsed_zero ... ok
[INFO] [stdout] test asr::protocol::dashscope::tests::test_p17_missing_required_field ... ok
[INFO] [stdout] test asr::protocol::dashscope::tests::test_p16_malformed_json ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_h2_encode_header_audio ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_e1_error_message_success ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_a3_encode_audio_sequence_increment ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_f1_encode_full_client_with_gzip ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_e6_error_message_server_busy ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_h4_encode_header_no_compression ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_p10_parse_response_no_sequence ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_f2_encode_full_client_no_gzip ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_h1_encode_header_default ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_p12_parse_response_payload_overflow ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_h3_encode_header_last_frame ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_h6_encode_header_neg_only ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_p14_parse_response_event_only ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_p13_parse_response_neg_sequence_only ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_h5_encode_header_no_sequence ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_a1_encode_audio_normal ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_p11_parse_response_client_full_echo ... ok
[INFO] [stdout] test asr::protocol::dashscope::tests::test_p4_task_finished_with_sentence ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_f3_encode_full_client_minimal ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_p15_parse_response_unexpected_type ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_p1_parse_full_response_with_text ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_p6_parse_response_with_event ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_auth_url_base64_valid ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_extract_text_empty_ws ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_p4_parse_error_response_with_payload ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_extract_text_mixed ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_auth_url_date_format ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_p8_parse_response_with_audio_info ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_p7_parse_response_last_with_event ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_auth_url_empty_key ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_auth_url_special_chars ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_p3_parse_error_response ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_p9_parse_invalid_json_payload ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_auth_url_different_params ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_auth_url_format ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_p2_parse_full_response_with_utterances ... ok
[INFO] [stdout] test asr::protocol::sauc::tests::test_p5_parse_response_too_short ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_extract_text_simple ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_first_frame_all_optionals ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_first_frame_large_audio ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_extract_text_single_word ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_extract_text_unicode ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_first_frame_encoding_lame ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_first_frame_sample_rate ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_has_result_payload_no ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_is_success_response_ok ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_last_frame_structure ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_middle_frame_sample_rate ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_first_frame_no_optionals ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_middle_frame_structure ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_has_result_payload_no_data ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_parse_complete_response ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_first_frame_partial_optionals ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_has_result_payload_yes ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_parse_intermediate_response ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_is_finished_response_mid ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_parse_response_extra_fields ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_parse_invalid_json ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_is_success_response_negative ... ok
[INFO] [stdout] test asr::provider::doubao::tests::test_c1_constructor_defaults ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_parse_response_no_message ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_parse_response_no_sid ... ok
[INFO] [stdout] test asr::provider::doubao::tests::test_c2_constructor_api_key_fallback ... ok
[INFO] [stdout] test asr::provider::doubao::tests::test_c3_constructor_mode_default ... ok
[INFO] [stdout] test asr::provider::doubao::tests::test_r1_build_params_default ... ok
[INFO] [stdout] test asr::provider::doubao::tests::test_r2_build_params_ogg_opus ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_first_frame_structure ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_frame_chain_order ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_parse_response_empty_ws ... ok
[INFO] [stdout] test asr::provider::doubao::tests::test_r3_build_params_with_vad ... ok
[INFO] [stdout] test asr::provider::doubao::tests::test_r4_build_params_without_vad ... ok
[INFO] [stdout] test asr::provider::doubao::tests::test_s1_connection_state_new ... ok
[INFO] [stdout] test asr::provider::doubao::tests::test_s2_connection_close_idempotent ... ok
[INFO] [stdout] test asr::provider::doubao::tests::test_s4_connection_close_no_ws ... ok
[INFO] [stdout] test asr::provider::doubao::tests::test_u2_url_async ... ok
[INFO] [stdout] test asr::provider::doubao::tests::test_s3_connection_listen_after_close ... ok
[INFO] [stdout] test asr::provider::doubao::tests::test_u1_url_streaming ... ok
[INFO] [stdout] test asr::provider::doubao::tests::test_u3_url_nostream ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_is_finished_response_ok ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_api_key_inheritance ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_is_success_response_error ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_consecutive_done_signals ... ok
[INFO] [stdout] test asr::provider::doubao::tests::test_u4_url_custom_base ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_api_key_custom ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_collect_empty ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_crlf_endings ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_empty_lines ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_ensure_valid_passes ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_defaults ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_collect_multiple_chunks ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_done_signal ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_context_some ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_cr_only_line_endings ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_collect_exceeds_limit ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_is_finished_response_no_data ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_ensure_valid_rejects_default ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_error_empty_body ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_ensure_valid_rejects_empty ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_collect_single_chunk ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_buffer_reuse_after_partial ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_error_flat ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_error_no_json ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_error_standard ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_hotwords_empty_vec ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_hotwords_multiple ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_newline_in_json_value ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_mixed_format_stream ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_no_newline_trailing ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_non_data_line ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_partial_line_accumulation ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_model_custom ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_multiple_events ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_response_with_only_comments ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_single_delta ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_single_done ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_sse_delta ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_sse_delta_with_timestamps ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_sse_done ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_sse_empty_object ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_sse_empty_text ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_sse_invalid_json ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_sse_old_format_camel ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_sse_unknown_type ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_trailing_spaces ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_unicode_chinese ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_unknown_type_error_event ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_utf8_across_3byte_chunk_boundary ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_sse_old_format_not_final ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_sse_old_format_partial_segment ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_zero_length_chunk ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_a01_collect_single_chunk ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_very_long_line ... ok
[INFO] [stdout] test asr::protocol::xfyun::tests::test_parse_error_response ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_error_both_levels ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_error_unknown_status ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_hotwords_none ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_a04_collect_exceeds_limit ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_a05_collect_boundary_at_limit ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_sse_old_format_snake ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_a06_collect_zero_length_chunks ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_b02_base64_empty ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_sse_partial_json ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_custom_options ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_sse_old_format_with_segment ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_a02_collect_multiple_chunks ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_b01_base64_known_input ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_unicode_emoji ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_b03_base64_binary_data ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_b04_data_url_format ... ok
[INFO] [stdout] test asr::provider::doubao::tests::test_v1_validate_empty_api_key_listen_stream ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_c04_api_key_none ... ok
[INFO] [stdout] test asr::provider::glm::tests::test_utf8_across_4byte_chunk_boundary ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_c01_defaults ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_c02_custom_options ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_a03_collect_empty ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_c03_api_key_from_base ... ok
[INFO] [stdout] test asr::provider::doubao::tests::test_v2_validate_empty_api_key_connect ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_e01_error_standard ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_c13_format_default ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_e04_error_invalid_json ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_c05_model_from_base ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_c10_language_default ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_c06_model_default ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_e05_error_unknown_status ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_e02_error_no_error_object ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_e03_error_empty_body ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_c12_format_from_base ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_m01_mime_wav ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_m02_mime_mp3 ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_c07_base_url_default ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_c08_base_url_custom ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_m04_mime_pcm ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_c09_language_from_option ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_p01_unix_line_ending ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_c11_language_custom ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_m03_mime_ogg ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_p07_empty_lines_skipped ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_p06_multiple_data_lines ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_p08_comment_lines_skipped ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_p11_consecutive_done ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_p09_trailing_spaces ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_p12_data_after_done ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_p13_done_with_crlf ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_p14_done_with_cr ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_p10_done_signal ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_p02_windows_line_ending ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_r01_request_json_structure ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_r02_request_audio_data_uri ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_p04_mixed_line_endings ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_r03_request_audio_data_uri_format ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_p05_single_data_line ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_r07_request_model_field ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_p19_very_long_line ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_s05_stop_without_content ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_p03_old_mac_line_ending ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_p15_no_newline_trailing ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_r04_request_asr_options ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_s06_empty_choices ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_r06_request_messages_structure ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_p17_buffer_reuse ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_s07_multiple_choices ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_p18_empty_buffer ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_r08_request_empty_audio ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_e06_error_no_message ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_s10_content_whitespace_preserved ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_s13_chinese_text ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_s17_confidence_always_none ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_s18_segment_always_none ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_s19_invalid_json ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_s20_partial_json ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_s21_unexpected_field_types ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_s22_null_choices ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_s09_missing_choices ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_sp01_single_delta_chunk ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_s11_content_single_space ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_s12_content_only_whitespace ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_s14_emoji_text ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_sp02_multiple_delta_stream ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_s15_mixed_language ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_sp03_delta_then_stop ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_s16_special_chars ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_s02_delta_empty_string ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_sp04_only_stop_chunk ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_v01_ensure_valid_passes ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_v02_ensure_valid_rejects_empty ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_v03_ensure_valid_rejects_none ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_s01_delta_non_empty ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_sp05_long_text_multiple_chunks ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_s03_delta_null ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_sp11_crlf_stream ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_r05_request_stream_true ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_s04_delta_content_with_stop ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_c1_defaults ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_x01_provider_send_sync ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_x02_multiple_providers_independent ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_c2_custom_options ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_c6_model_from_base ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_h2_ws_request_invalid_url ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_h3_ws_request_uri_trailing_slash ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_l11_hints_ru_ru ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_l10_hints_es_es ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_sp06_unicode_stream ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_sp07_stream_without_done ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_l12_hints_pt_br ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_c3_format_default_mp3 ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_c5_api_key_from_base ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_sp08_non_sse_response ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_c4_format_from_base ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_l13_hints_it_it ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_sp09_real_world_stream ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_sp10_lf_stream ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_l14_hints_nl_nl ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_sp12_cr_stream ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_l15_hints_pl_pl ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_l16_hints_tr_tr ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_s08_delta_with_role ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_l5_hints_en_gb ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_l17_hints_vi_vn ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_h1_ws_request_headers ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_l7_hints_ko_kr ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_l6_hints_ja_jp ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_l18_hints_th_th ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_l9_hints_fr_fr ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_l19_hints_ar_sa ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_x03_connect_unsupported ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_l8_hints_de_de ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_l1_hints_zh_cn ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_s1_connection_state_initial ... ok
[INFO] [stdout] test asr::provider::mimo::tests::test_p16_partial_line_accumulation ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_l22_hints_static ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_l3_hints_zh_hk ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_l2_hints_zh_tw ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_l4_hints_en_us ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_l20_hints_unknown ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_v2_ensure_valid_passes ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_s2_close_transition ... ok
[INFO] [stdout] test asr::provider::tests::test_i4_adapt_data_chunked ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_s3_close_idempotent ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_s4_listen_after_close ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_build_protocol_options ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_build_protocol_options_encoding ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_s5_listen_with_ws_none ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_build_protocol_options_language ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_consecutive_same_sn ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_v3_ensure_valid_rejects ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_chunk_size_1280 ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_ensure_valid_missing_app_id ... ok
[INFO] [stdout] test asr::provider::tests::test_i1_from_stream ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_l21_hints_none ... ok
[INFO] [stdout] test asr::provider::tests::test_i2_from_data ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_ensure_valid_all_empty ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_ensure_valid_all_present ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_ensure_valid_missing_api_key ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_ensure_valid_missing_api_secret ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_ensure_valid_send_interval_zero ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_ensure_valid_whitespace_only ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_ensure_valid_eos_zero ... ok
[INFO] [stdout] test asr::provider::tests::test_i3_adapt_stream_passthrough ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_iat_result_all_replaced ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_iat_result_rg_out_of_bounds ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_iat_result_dynamic_correction ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_iat_result_sn_duplicate ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_iat_result_simple_accumulate ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_listen_stream_missing_api_key ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_listen_stream_missing_api_secret ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_map_language_en_gb ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_map_language_en_us ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_map_language_none ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_map_language_unknown ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_map_language_zh_cn ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_map_language_zh_tw ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_map_encoding_ogg ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_listen_stream_missing_app_id ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_map_encoding_pcm ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_map_encoding_wav ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_new_custom_all ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_new_defaults ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_new_format_custom ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_map_encoding_mp3 ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_new_format_default_pcm ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_map_language_empty ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_new_language_from_base ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_new_api_key_from_base ... ok
[INFO] [stdout] test asr::provider::tests::test_i5_adapt_data_empty ... ok
[INFO] [stdout] test asr::provider::tests::test_i6_adapt_data_exact_chunk ... ok
[INFO] [stdout] test asr::registry::tests::test_g1_register_and_create ... ok
[INFO] [stdout] test asr::registry::tests::test_g2_create_unknown_provider ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_new_name ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_iat_result_large_sn_gap ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_iat_result_out_of_order ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_iat_result_rg_reversed ... ok
[INFO] [stdout] test asr::types::tests::test_a5_base_option_default ... ok
[INFO] [stdout] test asr::types::tests::test_a6_asr_stream_chunk_construction ... ok
[INFO] [stdout] test asr::registry::tests::test_g3_register_overwrite ... ok
[INFO] [stdout] test asr::types::tests::test_a1_container_as_str ... ok
[INFO] [stdout] test asr::traits::tests::test_t1_connection_state_debug_clone ... ok
[INFO] [stdout] test asr::types::tests::test_a7_asr_segment_construction ... ok
[INFO] [stdout] test asr::traits::tests::test_t2_connect_option_default ... ok
[INFO] [stdout] test asr::types::tests::test_a2_container_default ... ok
[INFO] [stdout] test asr::traits::tests::test_t3_connect_option_custom ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_buffer_to_audio_stream ... ok
[INFO] [stdout] test asr::types::tests::test_a3_codec_as_str ... ok
[INFO] [stdout] test asr::types::tests::test_a8_asr_response_construction ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_buffer_to_audio_stream_default_chunk ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_is_compressed_flac ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_is_wav_false_not_wav ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_buffer_to_audio_stream_empty ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_calculate_segment_size ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_calculate_segment_size_stereo ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_is_compressed_mp3_sync ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_is_compressed_raw_pcm ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_parse_wav_non_pcm_format ... ok
[INFO] [stdout] test asr::types::tests::test_a4_codec_default ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_process_audio_different_segment_duration ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_process_audio_wav_input ... ok
[INFO] [stdout] test asr::provider::xfyun::tests::test_listen_stream_valid_credential ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_is_compressed_audio_too_short ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_is_compressed_mp3_id3 ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_is_compressed_ogg ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_create_and_parse_wav ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_is_wav_false_too_short ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_create_wav_from_pcm_zero_length ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_is_compressed_audio_empty ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_is_wav_true ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_split_audio_empty ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_process_audio_pcm_input ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_read_audio_from_file_not_found ... ok
[INFO] [stdout] test asr::utils::ogg_muxer::tests::test_ogg_muxer_basic ... ok
[INFO] [stdout] test asr::utils::ogg_muxer::tests::test_ogg_muxer_crc ... ok
[INFO] [stdout] test asr::utils::ogg_muxer::tests::test_ogg_muxer_sequence ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_split_audio_zero_segment ... ok
[INFO] [stdout] test asr::utils::collect::tests::test_collect_text_empty ... ok
[INFO] [stdout] test asr::utils::collect::tests::test_collect_text ... ok
[INFO] [stdout] test asr::utils::opus::tests::test_opus_decoder_defaults ... ok
[INFO] [stdout] test asr::utils::opus::tests::test_opus_decoder_stereo ... ok
[INFO] [stdout] test cli::tests::test_cli_parse_config ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_split_audio_exact ... ok
[INFO] [stdout] test asr::utils::save::tests::test_save_text_json ... ok
[INFO] [stdout] test asr::utils::save::tests::test_save_text_empty ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_parse_wav_info_stereo ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_parse_wav_invalid ... ok
[INFO] [stdout] test asr::utils::audio::tests::test_split_audio_normal ... ok
[INFO] [stdout] test asr::utils::collect::tests::test_collect_text_with_segments ... ok
[INFO] [stdout] test cli::tests::test_completion_bash ... ok
[INFO] [stdout] test asr::utils::collect::tests::test_collect_segments_empty ... ok
[INFO] [stdout] test asr::utils::opus::tests::test_opus_decoder_new ... ok
[INFO] [stdout] test cli::tests::test_completion_fish ... ok
[INFO] [stdout] test cli::tests::test_completion_powershell ... ok
[INFO] [stdout] test asr::utils::save::tests::test_save_text_custom_filename ... ok
[INFO] [stdout] test cli::tests::test_cli_parse_greet ... ok
[INFO] [stdout] test cli::tests::test_cli_parse_greet_with_count ... ok
[INFO] [stdout] test cli::tests::test_completion_all_shells_have_all_subcommands ... ok
[INFO] [stdout] test asr::utils::save::tests::test_save_text_default ... ok
[INFO] [stdout] test config::settings::tests::test_app_config_default ... ok
[INFO] [stdout] test config::settings::tests::test_load_settings_empty ... ok
[INFO] [stdout] test cli::tests::test_completion_zsh ... ok
[INFO] [stdout] test cli::tests::test_config_contains_version ... ok
[INFO] [stdout] test cli::tests::test_config_output ... ok
[INFO] [stdout] test config::settings::tests::test_load_settings_full ... ok
[INFO] [stdout] test config::settings::tests::test_resolve_env_ref_missing_var ... ok
[INFO] [stdout] test config::settings::tests::test_load_settings_file_not_found ... ok
[INFO] [stdout] test datetime::tests::test_iso_timestamp_at_epoch ... ok
[INFO] [stdout] test config::settings::tests::test_get_settings_dir ... ok
[INFO] [stdout] test config::settings::tests::test_resolve_env_ref_plain_value ... ok
[INFO] [stdout] test datetime::tests::test_iso_timestamp_at_year_start ... ok
[INFO] [stdout] test cli::tests::test_greet_output ... ok
[INFO] [stdout] test config::settings::tests::test_app_config_serde_roundtrip ... ok
[INFO] [stdout] test config::settings::tests::test_resolve_env_ref_from_env ... ok
[INFO] [stdout] test datetime::tests::test_unix_ts_to_compact_format ... ok
[INFO] [stdout] test config::settings::tests::test_load_settings_invalid_toml ... ok
[INFO] [stdout] test config::settings::tests::test_resolve_env_ref_empty ... ok
[INFO] [stdout] test config::settings::tests::test_resolve_env_ref_empty_env_var_name ... ok
[INFO] [stdout] test datetime::tests::test_unix_ts_to_compact_known_value ... ok
[INFO] [stdout] test cli::tests::test_version_constant ... ok
[INFO] [stdout] test datetime::tests::test_unix_ts_to_compact_leap_year_feb ... ok
[INFO] [stdout] test logging::tests::test_init_logging_creates_directory ... ok
[INFO] [stdout] test datetime::tests::test_iso_timestamp_now_format ... ok
[INFO] [stdout] test datetime::tests::test_iso_timestamp_at_leap_year ... ok
[INFO] [stdout] test datetime::tests::test_iso_timestamp_at_year_end ... ok
[INFO] [stdout] test logging::tests::test_init_logging_does_not_panic ... ok
[INFO] [stdout] test logging::tests::test_file_writer_appends ... ok
[INFO] [stdout] test logging::tests::test_make_file_writer_sink_on_error ... ok
[INFO] [stdout] test logging::tests::test_log_path_uses_project_dir ... ok
[INFO] [stdout] test logging::tests::test_make_file_writer_writes_content ... ok
[INFO] [stdout] test logging::tests::test_tracing_events_no_ansi ... ok
[INFO] [stdout] test logging::tests::test_log_dir_is_created ... ok
[INFO] [stdout] test logging::tests::test_make_file_writer_multiple_calls_produce_unique_writers ... ok
[INFO] [stdout] test tts::error::tests::test_e10_url_from ... ok
[INFO] [stdout] test tts::error::tests::test_e7_no_audio_display ... ok
[INFO] [stdout] test tts::error::tests::test_e8_unsupported_display ... ok
[INFO] [stdout] test logging::tests::test_tracing_events_written_to_file ... ok
[INFO] [stdout] test tts::error::tests::test_e3_timeout_display ... ok
[INFO] [stdout] test tts::error::tests::test_e9_http_from ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p10_task_failed_empty_message ... ok
[INFO] [stdout] test tts::error::tests::test_e1_websocket_display ... ok
[INFO] [stdout] test logging::tests::test_tracing_events_filtered_by_level ... ok
[INFO] [stdout] test config::settings::tests::test_get_settings_path ... ok
[INFO] [stdout] test tts::error::tests::test_e4_invalid_parameter_display ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p11_unexpected_event ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p13_malformed_json ... ok
[INFO] [stdout] test tts::error::tests::test_e5_service_error_display ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p12_empty_input ... ok
[INFO] [stdout] test tts::error::tests::test_e6_connection_closed_display ... ok
[INFO] [stdout] test tts::error::tests::test_e11_from_elapsed ... ok
[INFO] [stdout] test tts::error::tests::test_e2_json_display ... ok
[INFO] [stdout] test asr::provider::qwen::tests::test_v1_empty_api_key ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p19_unknown_task_status ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p20_run_task_full ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p21_run_task_minimal ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p24_continue_task_special_chars ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p22_continue_task_normal ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p25_finish_task ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p17_empty_payload ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p15_unicode_text ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p4_result_generated_sentence_synthesis ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p18_extra_unknown_fields ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p16_long_text ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p7_task_finished_full ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p8_task_finished_no_usage ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p9_task_failed ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p5_result_generated_sentence_end_full ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p6_result_generated_sentence_end_minimal ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p2_task_started_extra_fields ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p14_missing_required_field ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p3_result_generated_sentence_begin ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p23_continue_task_empty ... ok
[INFO] [stdout] test tts::protocol::dashscope::tests::test_p1_task_started ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p12_empty_input ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p13_malformed_json ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p30_mode_default ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p1_session_created ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p11_unexpected_event ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p22_session_update_commit_mode ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p40_ws_request_normal ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p43_ws_request_host_header ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p26_finish_event ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p15_unknown_event_with_extra ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p4_audio_delta ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p2_session_created_minimal ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p31_mode_as_str ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p3_session_updated ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p14_missing_type ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p5_audio_delta_empty ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p8_error_event ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p6_session_finished ... ok
[INFO] [stdout] test tts::protocol::gemini::tests::test_p10_parse_audio_delta ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p7_session_finished_no_usage ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p9_response_done ... ok
[INFO] [stdout] test tts::protocol::gemini::tests::test_p11_parse_no_event_type ... ok
[INFO] [stdout] test tts::protocol::gemini::tests::test_p14_parse_error_payload ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p23_append_event ... ok
[INFO] [stdout] test tts::protocol::gemini::tests::test_p12b_step_end_empty_payload ... ok
[INFO] [stdout] test tts::protocol::gemini::tests::test_p1_single_voice_request ... ok
[INFO] [stdout] test tts::protocol::gemini::tests::test_p16_multi_event_stream ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p20_session_update_full ... ok
[INFO] [stdout] test tts::protocol::gemini::tests::test_p18_comment_line_ignored ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p21_session_update_minimal ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p25_append_special_chars ... ok
[INFO] [stdout] test tts::protocol::gemini::tests::test_p3_multi_speaker_request ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p42_ws_request_different_model ... ok
[INFO] [stdout] test tts::protocol::gemini::tests::test_p4_non_stream_response ... ok
[INFO] [stdout] test tts::protocol::gemini::tests::test_p17_speech_config_constructors ... ok
[INFO] [stdout] test tts::protocol::gemini::tests::test_p9_sse_flush_tail ... ok
[INFO] [stdout] test tts::protocol::gemini::tests::test_p5_response_no_audio ... ok
[INFO] [stdout] test tts::protocol::gemini::tests::test_p8_sse_cross_chunk ... ok
[INFO] [stdout] test tts::protocol::glm::tests::test_p1b_request_stream_fields ... ok
[INFO] [stdout] test tts::protocol::gemini::tests::test_p2_stream_request ... ok
[INFO] [stdout] test tts::protocol::gemini::tests::test_p12_parse_complete ... ok
[INFO] [stdout] test tts::protocol::glm::tests::test_p2_parse_delta_content ... ok
[INFO] [stdout] test tts::protocol::gemini::tests::test_p5b_full_response ... ok
[INFO] [stdout] test tts::protocol::glm::tests::test_p4_parse_done_and_stop ... ok
[INFO] [stdout] test tts::protocol::gemini::tests::test_p13_parse_empty_payload ... ok
[INFO] [stdout] test tts::protocol::gemini::tests::test_p15_parse_error_body ... ok
[INFO] [stdout] test tts::protocol::gemini::tests::test_p7_sse_event_and_data ... ok
[INFO] [stdout] test tts::protocol::gemini::tests::test_p6_sse_basic_data ... ok
[INFO] [stdout] test tts::protocol::glm::tests::test_p9_map_speed ... ok
[INFO] [stdout] test tts::protocol::glm::tests::test_p7_map_format ... ok
[INFO] [stdout] test tts::protocol::glm::tests::test_p6_audio_decode ... ok
[INFO] [stdout] test tts::protocol::glm::tests::test_p5_parse_error_frame ... ok
[INFO] [stdout] test tts::protocol::glm::tests::test_p8_map_volume ... ok
[INFO] [stdout] test tts::protocol::mimo::tests::test_r10_audio_decode ... ok
[INFO] [stdout] test tts::protocol::glm::tests::test_p10_parse_error_body ... ok
[INFO] [stdout] test tts::protocol::glm::tests::test_p1_request_skip_none ... ok
[INFO] [stdout] test tts::protocol::mimo::tests::test_r14_parse_error_body ... ok
[INFO] [stdout] test tts::protocol::glm::tests::test_p3b_parser_flush_tail ... ok
[INFO] [stdout] test tts::protocol::mimo::tests::test_r11_empty_audio_skipped ... ok
[INFO] [stdout] test tts::protocol::mimo::tests::test_r12_extract_data ... ok
[INFO] [stdout] test tts::protocol::mimo::tests::test_r14b_parse_error_body_non_json ... ok
[INFO] [stdout] test tts::protocol::mimo::tests::test_r16_empty_choices ... ok
[INFO] [stdout] test tts::protocol::mimo::tests::test_r15_voices ... ok
[INFO] [stdout] test tts::protocol::glm::tests::test_p3_parser_cross_chunk ... ok
[INFO] [stdout] test tts::protocol::mimo::tests::test_r17_delta_no_audio ... ok
[INFO] [stdout] test tts::protocol::mimo::tests::test_r13_map_format ... ok
[INFO] [stdout] test tts::protocol::glm::tests::test_extract_data_variants ... ok
[INFO] [stdout] test tts::protocol::mimo::tests::test_r1_request_skip_none ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_m11_parse_error_event ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_m12_parse_empty_data ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_m15_extract_data ... ok
[INFO] [stdout] test tts::protocol::mimo::tests::test_r3_request_stream ... ok
[INFO] [stdout] test tts::protocol::mimo::tests::test_r7_parser_flush_tail ... ok
[INFO] [stdout] test tts::protocol::mimo::tests::test_r4_chat_response_parse ... ok
[INFO] [stdout] test tts::protocol::mimo::tests::test_r8_parse_done_and_finish ... ok
[INFO] [stdout] test tts::protocol::mimo::tests::test_r9_parse_error ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_m16_parse_error_body ... ok
[INFO] [stdout] test tts::protocol::mimo::tests::test_r5_stream_chunk_parse ... ok
[INFO] [stdout] test tts::protocol::mimo::tests::test_r6_parser_cross_chunk ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_m5b_response_with_subtitle_file ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_m5_response_data_null ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_m10_parse_finished_event ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_m14_parser_flush_tail ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_m13_parser_cross_chunk ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_m1_request_serialize_minimal ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_m2_request_serialize_full ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_m3_response_deserialize_success ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_m5c_response_subtitle_file_missing ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_m6_decode_hex ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_m7_decode_hex_empty ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_n5_voice_modify_partial ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_n7_stream_options_default ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_n2_pronunciation_dict_none ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_m4_response_deserialize_error ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_n8_request_serialize_with_all_new_fields ... ok
[INFO] [stdout] test tts::protocol::openai::tests::test_m10_audio_decode ... ok
[INFO] [stdout] test tts::protocol::openai::tests::test_m12b_parser_flush_tail ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_m8_decode_hex_odd_length ... ok
[INFO] [stdout] test asr::error::tests::test_e1_from_elapsed_millis ... ok
[INFO] [stdout] test tts::protocol::openai::tests::test_m14b_parse_error_body_non_json ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_n1_pronunciation_dict_serialize ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_n6_stream_options_serialize ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_m9_parse_audio_event ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p10_audio_done ... ok
[INFO] [stdout] test tts::protocol::openai::tests::test_m1b_infer_chat_mode ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_n3_timbre_weight_serialize ... ok
[INFO] [stdout] test tts::protocol::openai::tests::test_m16_empty_choices ... ok
[INFO] [stdout] test tts::protocol::openai::tests::test_m3_map_chat_formats ... ok
[INFO] [stdout] test tts::protocol::openai::tests::test_m13_extract_data ... ok
[INFO] [stdout] test tts::protocol::openai::tests::test_m2_map_speech_formats ... ok
[INFO] [stdout] test tts::protocol::openai::tests::test_m14_parse_error_body ... ok
[INFO] [stdout] test tts::protocol::openai::tests::test_m4_speech_request_serialize ... ok
[INFO] [stdout] test tts::protocol::openai::tests::test_m16b_chunk_no_audio ... ok
[INFO] [stdout] test tts::protocol::openai::tests::test_m1_infer_speech_mode ... ok
[INFO] [stdout] test tts::protocol::minimax::tests::test_n4_voice_modify_serialize ... ok
[INFO] [stdout] test tts::protocol::volcengine::tests::test_p11_empty_payload ... ok
[INFO] [stdout] test tts::protocol::openai::tests::test_m12_parser_cross_chunk ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p41_ws_request_invalid_url ... ok
[INFO] [stdout] test tts::protocol::openai::tests::test_m5_chat_request_serialize ... ok
[INFO] [stdout] test tts::protocol::openai::tests::test_m6_chat_response_parse ... ok
[INFO] [stdout] test tts::protocol::volcengine::tests::test_p12_large_payload ... ok
[INFO] [stdout] test tts::protocol::volcengine::tests::test_p13_truncated_data ... ok
[INFO] [stdout] test tts::protocol::volcengine::tests::test_p14_unsupported_header_size ... ok
[INFO] [stdout] test tts::protocol::openai::tests::test_m15_voices ... ok
[INFO] [stdout] test tts::protocol::dashscope_realtime::tests::test_p24_append_empty_text ... ok
[INFO] [stdout] test tts::protocol::openai::tests::test_m7_stream_chunk_parse ... ok
[INFO] [stdout] test tts::protocol::openai::tests::test_m4b_speech_request_with_speed ... ok
[INFO] [stdout] test tts::protocol::volcengine::tests::test_p10_roundtrip_symmetry ... ok
[INFO] [stdout] test tts::protocol::openai::tests::test_m8_parse_done_and_finish ... ok
[INFO] [stdout] test tts::protocol::openai::tests::test_m5b_chat_request_stream ... ok
[INFO] [stdout] test tts::protocol::openai::tests::test_m11_empty_audio_skipped ... ok
[INFO] [stdout] test tts::protocol::openai::tests::test_m9_parse_error ... ok
[INFO] [stdout] test tts::protocol::volcengine::tests::test_p16_read_connection_finished ... ok
[INFO] [stdout] test tts::protocol::volcengine::tests::test_p15_finish_connection_no_session_id ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p13_custom_params ... ok
[INFO] [stdout] test tts::protocol::volcengine::tests::test_p9_unmarshal_session_finished ... ok
[INFO] [stdout] test tts::protocol::volcengine::tests::test_p4_marshal_task_request ... ok
[INFO] [stdout] test tts::protocol::volcengine::tests::test_p6_unmarshal_session_started ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p14_unicode_text ... ok
[INFO] [stdout] test tts::protocol::volcengine::tests::test_p7_unmarshal_audio_only ... ok
[INFO] [stdout] test tts::protocol::volcengine::tests::test_p8_unmarshal_error ... ok
[INFO] [stdout] test tts::protocol::volcengine::tests::test_p1_marshal_start_connection ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p21_parse_error_response ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p23_parse_invalid_json ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p20_parse_success_response ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p24_parse_partial_response ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p11_status_seq_values ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p22_parse_finished_response ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p1_map_encoding_mp3_to_lame ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p15_long_text ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p12_custom_format ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p25_parse_extra_fields ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p33_extract_audio_no_audio_field ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p31_extract_audio_no_payload ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p32_extract_audio_empty_string ... ok
[INFO] [stdout] test tts::protocol::volcengine::tests::test_p2_marshal_start_session ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p2_map_encoding_pcm_to_raw ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p34_extract_audio_invalid_base64 ... ok
[INFO] [stdout] test tts::protocol::volcengine::tests::test_p3_marshal_finish_session ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p30_extract_audio_success ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p3_map_encoding_opus ... ok
[INFO] [stdout] test tts::protocol::volcengine::tests::test_p5_unmarshal_connection_started ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p10_all_oral_params ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p41_is_success_error ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p26_parse_missing_header_fields ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p42_is_success_negative ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p43_is_finished_yes ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p44_is_finished_no ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p45_is_finished_zero ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p40_is_success_ok ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p52_list_voices_has_x5_and_x6 ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p54_list_voices_gender_field ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p55_defaults ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p53_list_voices_has_oral_support ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p5_full_structure ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p6_text_base64_encoded ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p51_list_voices_contains_default ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_h2_ws_request_invalid_url ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p8_no_oral_by_default ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p7_empty_text ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_c1_defaults ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_c3_api_key_from_base ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p9_oral_level_only ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_c7_sample_rate_custom ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_h4_ws_request_with_port ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_m2_volume_zero ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_m3_volume_max ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_m4_volume_mid ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_s2_close_transition ... ok
[INFO] [stdout] test tts::protocol::mimo::tests::test_r2_request_full ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_c5_voice_default ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_h3_ws_request_uri_trailing_slash ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_h1_ws_request_headers ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_c4_model_from_base ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_h5_ws_request_with_query ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_s3_close_idempotent ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_c2_custom_options ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_s5_speak_stream_after_close ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p50_list_voices_not_empty ... ok
[INFO] [stdout] test tts::provider::doubao::tests::test_c4_api_key_from_base ... ok
[INFO] [stdout] test tts::provider::doubao::tests::test_c1_defaults ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_s6_synthesize_with_ws_none ... ok
[INFO] [stdout] test tts::provider::doubao::tests::test_c2_custom_options ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_c6_format_default ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_v1_empty_api_key ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_v2_valid_api_key ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_m1_volume_default ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_s1_connection_state_initial ... ok
[INFO] [stdout] test tts::provider::doubao::tests::test_s1_connection_state_initial ... ok
[INFO] [stdout] test tts::provider::doubao::tests::test_s2_close_transition ... ok
[INFO] [stdout] test tts::protocol::xfyun::tests::test_p4_map_encoding_unknown_default ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_l1_list_voices_not_empty ... ok
[INFO] [stdout] test tts::provider::doubao::tests::test_c3_api_key_empty_default ... ok
[INFO] [stdout] test tts::provider::doubao::tests::test_v1_empty_api_key ... ok
[INFO] [stdout] test tts::provider::doubao::tests::test_s4_synthesize_after_close ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_s4_synthesize_after_close ... ok
[INFO] [stdout] test tts::provider::doubao::tests::test_s5_speak_stream_after_close ... ok
[INFO] [stdout] test tts::provider::doubao::tests::test_c8_sample_rate_custom ... ok
[INFO] [stdout] test tts::provider::doubao::tests::test_c7_format_from_base ... ok
[INFO] [stdout] test tts::provider::doubao::tests::test_c9_enable_timestamp_true ... ok
[INFO] [stdout] test tts::provider::doubao::tests::test_h1_ws_request_headers ... ok
[INFO] [stdout] test tts::provider::doubao::tests::test_h2_ws_request_invalid_url ... ok
[INFO] [stdout] test tts::provider::doubao::tests::test_s3_close_idempotent ... ok
[INFO] [stdout] test tts::provider::doubao::tests::test_c5_base_url_custom ... ok
[INFO] [stdout] test tts::provider::cosyvoice::tests::test_v3_synthesize_empty_key ... ok
[INFO] [stdout] test tts::provider::doubao::tests::test_c6_voice_from_base ... ok
[INFO] [stdout] test tts::provider::doubao::tests::test_l1_list_voices_all_have_id ... ok
[INFO] [stdout] test tts::provider::doubao::tests::test_v2_valid_api_key ... ok
[INFO] [stdout] test tts::provider::doubao::tests::test_v3_synthesize_empty_key ... ok
[INFO] [stdout] test tts::provider::gemini::tests::test_s1_connect_unsupported ... ok
[INFO] [stdout] test tts::provider::glm::tests::test_c4_model_voice_defaults ... ok
[INFO] [stdout] test tts::provider::gemini::tests::test_w2_synthesize_no_api_key ... ok
[INFO] [stdout] test tts::provider::gemini::tests::test_w1_custom_voice ... ok
[INFO] [stdout] test tts::provider::glm::tests::test_c2_custom_options ... ok
[INFO] [stdout] test tts::provider::gemini::tests::test_l1_list_voices ... ok
[INFO] [stdout] test tts::provider::gemini::tests::test_v1_empty_api_key ... ok
[INFO] [stdout] test tts::provider::gemini::tests::test_m1_synthesize_request ... ok
[INFO] [stdout] test tts::provider::glm::tests::test_c1_defaults ... ok
[INFO] [stdout] test tts::provider::gemini::tests::test_c2_custom_options ... ok
[INFO] [stdout] test tts::provider::gemini::tests::test_m2_stream_request ... ok
[INFO] [stdout] test tts::provider::gemini::tests::test_c1_defaults ... ok
[INFO] [stdout] test tts::provider::gemini::tests::test_s2_speak_stream_no_api_key ... ok
[INFO] [stdout] test tts::provider::gemini::tests::test_v2_valid_api_key ... ok
[INFO] [stdout] test tts::provider::gemini::tests::test_c3_api_key_source ... ok
[INFO] [stdout] test tts::provider::glm::tests::test_c3_api_key_source ... ok
[INFO] [stdout] test tts::provider::glm::tests::test_m3_speed_volume_mapping ... ok
[INFO] [stdout] test tts::provider::glm::tests::test_v1_empty_api_key ... ok
[INFO] [stdout] test tts::provider::glm::tests::test_m2_stream_request ... ok
[INFO] [stdout] test tts::provider::glm::tests::test_m1_non_stream_request ... ok
[INFO] [stdout] test tts::provider::glm::tests::test_l1_list_voices ... ok
[INFO] [stdout] test tts::provider::glm::tests::test_m4_watermark_passthrough ... ok
[INFO] [stdout] test tts::provider::mimo::tests::test_c4_model_voice_defaults ... ok
[INFO] [stdout] test tts::provider::mimo::tests::test_c2_custom_options ... ok
[INFO] [stdout] test tts::provider::mimo::tests::test_c1_defaults ... ok
[INFO] [stdout] test tts::provider::mimo::tests::test_m2_non_stream_request_with_style ... ok
[INFO] [stdout] test tts::provider::mimo::tests::test_m3_stream_request ... ok
[INFO] [stdout] test tts::provider::mimo::tests::test_m1_non_stream_request_no_style ... ok
[INFO] [stdout] test tts::provider::glm::tests::test_s1_connect_unsupported ... ok
[INFO] [stdout] test tts::provider::glm::tests::test_v2_valid_api_key ... ok
[INFO] [stdout] test tts::provider::mimo::tests::test_l1_list_voices ... ok
[INFO] [stdout] test tts::provider::mimo::tests::test_m5_empty_style_skipped ... ok
[INFO] [stdout] test tts::provider::mimo::tests::test_w2_speak_stream_no_api_key ... ok
[INFO] [stdout] test tts::provider::mimo::tests::test_s1_connect_unsupported ... ok
[INFO] [stdout] test tts::provider::mimo::tests::test_c3_api_key_source ... ok
[INFO] [stdout] test tts::provider::mimo::tests::test_w3_resolve_options ... ok
[INFO] [stdout] test tts::provider::mimo::tests::test_v2_valid_api_key ... ok
[INFO] [stdout] test tts::provider::mimo::tests::test_v1_empty_api_key ... ok
[INFO] [stdout] test tts::provider::minimax::tests::test_b3_custom_request ... ok
[INFO] [stdout] test tts::provider::minimax::tests::test_b4_pronunciation_dict_mapping ... ok
[INFO] [stdout] test tts::provider::minimax::tests::test_b2_stream_request ... ok
[INFO] [stdout] test tts::provider::minimax::tests::test_c2_custom_options ... ok
[INFO] [stdout] test tts::provider::minimax::tests::test_b1_non_stream_request ... ok
[INFO] [stdout] test tts::provider::minimax::tests::test_b5_new_fields_default_none ... ok
[INFO] [stdout] test tts::provider::mimo::tests::test_m4_format_mapping ... ok
[INFO] [stdout] test tts::provider::minimax::tests::test_c1_defaults ... ok
[INFO] [stdout] test tts::provider::minimax::tests::test_l1_list_voices ... ok
[INFO] [stdout] test tts::provider::minimax::tests::test_c5_pitch_conversion ... ok
[INFO] [stdout] test tts::provider::minimax::tests::test_s1_connect_unsupported ... ok
[INFO] [stdout] test tts::provider::minimax::tests::test_c4_model_voice_defaults ... ok
[INFO] [stdout] test tts::provider::minimax::tests::test_v1_empty_api_key ... ok
[INFO] [stdout] test tts::provider::openai::tests::test_c2_custom_options ... ok
[INFO] [stdout] test tts::provider::openai::tests::test_c4_api_mode_inference ... ok
[INFO] [stdout] test tts::provider::openai::tests::test_l1_list_voices ... ok
[INFO] [stdout] test tts::provider::openai::tests::test_w2_synthesize_no_api_key ... ok
[INFO] [stdout] test tts::provider::mimo::tests::test_w1_synthesize_no_api_key ... ok
[INFO] [stdout] test tts::provider::qwen3_tts::tests::test_c3_api_key_from_base ... ok
[INFO] [stdout] test tts::provider::qwen3_tts::tests::test_c1_defaults ... ok
[INFO] [stdout] test tts::provider::qwen3_tts::tests::test_c4_model_from_base ... ok
[INFO] [stdout] test tts::provider::openai::tests::test_w5_connect_unsupported ... ok
[INFO] [stdout] test tts::provider::qwen3_tts::tests::test_c6_format_default ... ok
[INFO] [stdout] test tts::provider::qwen3_tts::tests::test_c8_sample_rate_custom ... ok
[INFO] [stdout] test tts::provider::qwen3_tts::tests::test_c7_sample_rate_default ... ok
[INFO] [stdout] test tts::provider::qwen3_tts::tests::test_c5_voice_default ... ok
[INFO] [stdout] test tts::provider::qwen3_tts::tests::test_m2_config_custom ... ok
[INFO] [stdout] test tts::provider::qwen3_tts::tests::test_p1_build_session_params_default ... ok
[INFO] [stdout] test tts::provider::qwen3_tts::tests::test_m1_config_default ... ok
[INFO] [stdout] test tts::provider::qwen3_tts::tests::test_p2_build_session_params_custom ... ok
[INFO] [stdout] test tts::provider::qwen3_tts::tests::test_c2_custom_options ... ok
[INFO] [stdout] test tts::provider::qwen3_tts::tests::test_s1_connection_state_initial ... ok
[INFO] [stdout] test tts::provider::qwen3_tts::tests::test_s4_synthesize_after_close ... ok
[INFO] [stdout] test tts::provider::qwen3_tts::tests::test_s5_speak_stream_after_close ... ok
[INFO] [stdout] test tts::provider::qwen3_tts::tests::test_s6_synthesize_with_ws_none ... ok
[INFO] [stdout] test tts::provider::qwen3_tts::tests::test_v1_empty_api_key ... ok
[INFO] [stdout] test tts::provider::qwen3_tts::tests::test_v2_valid_api_key ... ok
[INFO] [stdout] test tts::provider::openai::tests::test_c1_defaults ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_b1_protocol_options_default ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_b2_protocol_options_custom ... ok
[INFO] [stdout] test tts::provider::qwen3_tts::tests::test_s2_close_transition ... ok
[INFO] [stdout] test tts::provider::qwen3_tts::tests::test_s3_close_idempotent ... ok
[INFO] [stdout] test tts::provider::openai::tests::test_v1_empty_api_key ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_c3_empty_credentials ... ok
[INFO] [stdout] test tts::provider::openai::tests::test_s1_connect_unsupported ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_b3_format_mp3_encoding_lame ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_c1_defaults ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_c4_credentials_from_base ... ok
[INFO] [stdout] test tts::provider::minimax::tests::test_v2_valid_api_key ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_b4_format_pcm_encoding_raw ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_m1_map_param_default ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_m2_map_param_min ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_m3_map_param_max ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_m4_map_param_mid ... ok
[INFO] [stdout] test tts::provider::qwen3_tts::tests::test_v3_synthesize_empty_key ... ok
[INFO] [stdout] test tts::provider::openai::tests::test_s2_speak_stream_no_api_key ... ok
[INFO] [stdout] test tts::provider::minimax::tests::test_c3_api_key_source ... ok
[INFO] [stdout] test tts::provider::openai::tests::test_w4_chat_synthesize_no_api_key ... ok
[INFO] [stdout] test tts::provider::openai::tests::test_w1_custom_voice ... ok
[INFO] [stdout] test tts::provider::openai::tests::test_v2_valid_api_key ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_c2_custom_options ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_l1_list_voices_not_empty ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_m5_map_param_rounding ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_t1_speak_stream_missing_app_id ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_s1_synthesize_missing_app_id ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_s3_synthesize_missing_api_secret ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_s2_synthesize_missing_api_key ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_l2_list_voices_structure ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_v5_all_empty ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_v3_empty_api_secret ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_t3_speak_stream_missing_api_secret ... ok
[INFO] [stdout] test tts::registry::tests::test_g1_register_and_create ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_v4_all_valid ... ok
[INFO] [stdout] test tts::registry::tests::test_g2_create_unknown_provider ... ok
[INFO] [stdout] test tts::types::tests::test_t2_connect_option_default ... ok
[INFO] [stdout] test tts::types::tests::test_t1_base_option_defaults ... ok
[INFO] [stdout] test tts::registry::tests::test_g3_register_overwrite ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_s4_synthesize_valid_credential ... ok
[INFO] [stdout] test tts::utils::collect::tests::test_collect_stream_error ... ok
[INFO] [stdout] test tts::utils::collect::tests::test_collect_stream_single_chunk ... ok
[INFO] [stdout] test tts::utils::collect::tests::test_collect_audio_empty ... ok
[INFO] [stdout] test tts::utils::collect::tests::test_collect_audio_large ... ok
[INFO] [stdout] test tts::provider::openai::tests::test_c3_api_key_source ... ok
[INFO] [stdout] test tts::utils::collect::tests::test_collect_stream_with_callback ... ok
[INFO] [stdout] test tts::utils::collect::tests::test_collect_stream ... ok
[INFO] [stdout] test tts::utils::collect::tests::test_collect_stream_empty ... ok
[INFO] [stdout] test tts::utils::normalize_text_stream::tests::test_json_stream_empty_choices ... ok
[INFO] [stdout] test tts::utils::normalize_text_stream::tests::test_json_stream_reasoning_content ... ok
[INFO] [stdout] test tts::types::tests::test_t3_request_construction ... ok
[INFO] [stdout] test tts::utils::normalize_text_stream::tests::test_normalize_stream_all_whitespace ... ok
[INFO] [stdout] test tts::utils::normalize_text_stream::tests::test_normalize_stream_multibyte ... ok
[INFO] [stdout] test tts::utils::normalize_text_stream::tests::test_normalize_stream_no_whitespace ... ok
[INFO] [stdout] test tts::provider::openai::tests::test_w3_resolve_options ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_t2_speak_stream_missing_api_key ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_v2_empty_api_key ... ok
[INFO] [stdout] test tts::utils::collect::tests::test_collect_audio ... ok
[INFO] [stdout] test tts::utils::pcm_to_opus::tests::test_pcm_to_opus_multi_frame ... ok
[INFO] [stdout] test tts::utils::pcm_to_opus::tests::test_pcm_to_opus_ogg_mode ... ok
[INFO] [stdout] test tts::utils::normalize_text_stream::tests::test_json_stream_only_reasoning ... ok
[INFO] [stdout] test tts::utils::collect::tests::test_collect_stream_error_on_first_chunk ... ok
[INFO] [stdout] test tts::utils::normalize_text_stream::tests::test_json_stream_to_text ... ok
[INFO] [stdout] test tts::utils::normalize_text_stream::tests::test_normalize_stream ... ok
[INFO] [stdout] test tts::utils::normalize_text_stream::tests::test_text_to_stream ... ok
[INFO] [stdout] test tts::utils::pcm_to_opus::tests::test_pcm_to_opus_chunks_across_frames ... ok
[INFO] [stdout] test tts::utils::pcm_to_opus::tests::test_pcm_to_opus_with_audio_data ... ok
[INFO] [stdout] test tts::utils::normalize_text_stream::tests::test_text_to_stream_empty ... ok
[INFO] [stdout] test tts::utils::pcm_to_opus::tests::test_validate_options_default ... ok
[INFO] [stdout] test tts::utils::pcm_to_opus::tests::test_validate_options_invalid_bytes_per_sample ... ok
[INFO] [stdout] test tts::utils::pcm_to_opus::tests::test_pcm_to_opus_different_sample_rate ... ok
[INFO] [stdout] test tts::utils::pcm_to_opus::tests::test_pcm_to_opus_empty_stream ... ok
[INFO] [stdout] test tts::utils::pcm_to_opus::tests::test_validate_options_invalid_channels ... ok
[INFO] [stdout] test tts::utils::pcm_to_opus::tests::test_pcm_to_opus_partial_last_frame ... ok
[INFO] [stdout] test tts::utils::save_audio::tests::test_create_wav_header ... ok
[INFO] [stdout] test tts::types::tests::test_t4_request_with_options ... ok
[INFO] [stdout] test tts::utils::play::tests::test_play_options_default ... ok
[INFO] [stdout] test tts::utils::pcm_to_opus::tests::test_validate_options_invalid_frame_duration ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_t4_speak_stream_valid_credential ... ok
[INFO] [stdout] test tts::utils::pcm_to_opus::tests::test_validate_options_invalid_sample_rate ... ok
[INFO] [stdout] test tts::utils::save::tests::test_save_tts_response_no_audio ... ok
[INFO] [stdout] test tts::utils::play::tests::test_play_options_custom ... ok
[INFO] [stdout] test tts::utils::save::tests::test_save_tts_response_custom_filename ... ok
[INFO] [stdout] test tts::utils::save::tests::test_save_audio_bytes ... ok
[INFO] [stdout] test tts::provider::openai::tests::test_c5_explicit_api_mode ... ok
[INFO] [stdout] test tts::utils::save_audio::tests::test_has_wav_header_false_too_short ... ok
[INFO] [stdout] test tts::utils::save_audio::tests::test_has_wav_header_not_riff ... ok
[INFO] [stdout] test tts::utils::save_audio::tests::test_has_wav_header_false_no_header ... ok
[INFO] [stdout] test tts::utils::save_audio::tests::test_has_wav_header_exact_minimal ... ok
[INFO] [stdout] test tts::utils::tee::tests::test_tee_audio_empty_audio ... ok
[INFO] [stdout] test tts::utils::save_audio::tests::test_create_wav_header_8bit ... ok
[INFO] [stdout] test tts::utils::save_audio::tests::test_create_wav_header_different_params ... ok
[INFO] [stdout] test tts::utils::save_audio::tests::test_save_audio_no_extension ... ok
[INFO] [stdout] test tts::utils::save::tests::test_save_tts_response_default ... ok
[INFO] [stdout] test tts::utils::save_audio::tests::test_has_wav_header_true ... ok
[INFO] [stdout] test tts::utils::save_audio::tests::test_save_audio_wav_already_has_header ... ok
[INFO] [stdout] test tts::utils::save_audio::tests::test_save_audio_pcm ... ok
[INFO] [stdout] test tts::utils::save_audio::tests::test_save_audio_wav_without_header ... ok
[INFO] [stdout] test tts::provider::xfyun::tests::test_v1_empty_app_id ... ok
[INFO] [stdout] test tts::voice_id::tests::test_k6_openai_constants ... ok
[INFO] [stdout] test tts::voice_id::tests::test_k7_doubao_constants ... ok
[INFO] [stdout] test tts::voice_id::tests::test_k3_qwen_realtime_constants ... ok
[INFO] [stdout] test tts::voice_id::tests::test_k4_gemini_constants ... ok
[INFO] [stdout] test tts::voice_id::tests::test_s1_serde_roundtrip ... ok
[INFO] [stdout] test tts::voice_id::tests::test_k5_minimax_constants ... ok
[INFO] [stdout] test tts::voice_id::tests::test_s2_serde_empty_string ... ok
[INFO] [stdout] test tts::voice_id::tests::test_v1_from_str ... ok
[INFO] [stdout] test tts::utils::tee::tests::test_tee_audio_no_options ... ok
[INFO] [stdout] test tts::utils::tee::tests::test_tee_audio_returns_cloned_audio ... ok
[INFO] [stdout] test tts::voice_id::tests::test_p1_eq_str ... ok
[INFO] [stdout] test tts::voice_id::tests::test_k1_glm_constants ... ok
[INFO] [stdout] test tts::voice_id::tests::test_k2_qwen_constants ... ok
[INFO] [stdout] test tts::utils::tee::tests::test_tee_audio_original_unchanged ... ok
[INFO] [stdout] test tts::utils::tee::tests::test_tee_audio_save_only ... ok
[INFO] [stdout] test tts::voice_id::tests::test_p2_eq_ref_str ... ok
[INFO] [stdout] test tts::voices::doubao::tests::test_d4_v2_voices_count ... ok
[INFO] [stdout] test tts::voices::glm::tests::test_g1_voices_count ... ok
[INFO] [stdout] test tts::voice_id::tests::test_x1_xfyun_constants ... ok
[INFO] [stdout] test tts::voices::doubao::tests::test_d1_voices_not_empty ... ok
[INFO] [stdout] test tts::voices::doubao::tests::test_d2_all_voices_have_id ... ok
[INFO] [stdout] test tts::voice_id::tests::test_v5_as_ref ... ok
[INFO] [stdout] test tts::voice_id::tests::test_v3_new ... ok
[INFO] [stdout] test tts::voices::doubao::tests::test_d3_default_is_known ... ok
[INFO] [stdout] test tts::voice_id::tests::test_v4_display ... ok
[INFO] [stdout] test tts::voice_id::tests::test_v8_eq_ref_str ... ok
[INFO] [stdout] test tts::voice_id::tests::test_v6_into_string ... ok
[INFO] [stdout] test tts::voice_id::tests::test_v7_eq_str ... ok
[INFO] [stdout] test tts::voices::qwen3_tts::tests::test_r2_default_in_list ... ok
[INFO] [stdout] test tts::voices::qwen::tests::test_q2_v2_voices_count ... ok
[INFO] [stdout] test tts::voices::qwen::tests::test_q1_v1_voices_count ... ok
[INFO] [stdout] test tts::voices::mimo::tests::test_m3_all_have_id ... ok
[INFO] [stdout] test tts::voices::qwen::tests::test_q3_v3_flash_count ... ok
[INFO] [stdout] test tts::voices::minimax::tests::test_m1_voices_count ... ok
[INFO] [stdout] test tts::voices::mimo::tests::test_m1_voices_count ... ok
[INFO] [stdout] test tts::voices::mimo::tests::test_m2_default_in_list ... ok
[INFO] [stdout] test tts::voices::glm::tests::test_g2_default_in_list ... ok
[INFO] [stdout] test tts::voices::qwen::tests::test_q4_default_in_list ... ok
[INFO] [stdout] test tts::voices::qwen::tests::test_q6_all_models ... ok
[INFO] [stdout] test tts::voices::minimax::tests::test_m3_chinese_mandarin_not_empty ... ok
[INFO] [stdout] test tts::voices::qwen3_tts::tests::test_r1_voices_count ... ok
[INFO] [stdout] test tts::voices::minimax::tests::test_m2_default_in_list ... ok
[INFO] [stdout] test tts::utils::tee::tests::test_tee_audio_save_fails_no_dir ... FAILED
[INFO] [stdout] test tts::voice_id::tests::test_v2_from_string ... ok
[INFO] [stdout] test tts::utils::save_audio::tests::test_save_audio_zero_length ... ok
[INFO] [stdout] test tts::utils::save::tests::test_save_tts_response_respects_format ... ok
[INFO] [stdout] test tts::voices::qwen::tests::test_q5_list_for_model ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- tts::utils::tee::tests::test_tee_audio_save_fails_no_dir stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'tts::utils::tee::tests::test_tee_audio_save_fails_no_dir' (5663) panicked at src/tts/utils/tee.rs:150:9:
[INFO] [stdout] assertion failed: result.is_err()
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x636493309641 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x636493322d3a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x63649330e56c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x6364932e1d36 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x636493300219 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x63649306f900 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x636493300542 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x6364932e1e14 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x6364932da5d9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x6364932e2dfd - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x63649332355c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x636493323522 - core[a373ad73a504971]::panicking::panic
[INFO] [stdout]   12:     0x636492f5d472 - univoice[e96a62cf78ce1486]::tts::utils::tee::tests::test_tee_audio_save_fails_no_dir::{closure#0}
[INFO] [stdout]   13:     0x636492e245a3 - <tokio[9ab6a02a6017deef]::runtime::scheduler::current_thread::Context>::enter::<core[a373ad73a504971]::task::poll::Poll<()>, <tokio[9ab6a02a6017deef]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[a373ad73a504971]::pin::Pin<&mut core[a373ad73a504971]::pin::Pin<&mut dyn core[a373ad73a504971]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}>
[INFO] [stdout]   14:     0x636492f37df9 - <std[617be2ca0a6fd877]::thread::local::LocalKey<tokio[9ab6a02a6017deef]::runtime::context::Context>>::with::<tokio[9ab6a02a6017deef]::runtime::context::set_scheduler<(alloc[2e1b2a31b91974c5]::boxed::Box<tokio[9ab6a02a6017deef]::runtime::scheduler::current_thread::Core>, core[a373ad73a504971]::option::Option<()>), <tokio[9ab6a02a6017deef]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[9ab6a02a6017deef]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[a373ad73a504971]::pin::Pin<&mut core[a373ad73a504971]::pin::Pin<&mut dyn core[a373ad73a504971]::future::future::Future<Output = ()>>>>::{closure#0}, core[a373ad73a504971]::option::Option<()>>::{closure#0}>::{closure#0}, (alloc[2e1b2a31b91974c5]::boxed::Box<tokio[9ab6a02a6017deef]::runtime::scheduler::current_thread::Core>, core[a373ad73a504971]::option::Option<()>)>
[INFO] [stdout]   15:     0x636492e23cd2 - <tokio[9ab6a02a6017deef]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[a373ad73a504971]::pin::Pin<&mut dyn core[a373ad73a504971]::future::future::Future<Output = ()>>>
[INFO] [stdout]   16:     0x636492e58c12 - <tokio[9ab6a02a6017deef]::runtime::runtime::Runtime>::block_on::<core[a373ad73a504971]::pin::Pin<&mut dyn core[a373ad73a504971]::future::future::Future<Output = ()>>>
[INFO] [stdout]   17:     0x636492f67a2e - <univoice[e96a62cf78ce1486]::tts::utils::tee::tests::test_tee_audio_save_fails_no_dir::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   18:     0x636493062d4b - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   19:     0x63649306ff25 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   20:     0x636493069814 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   21:     0x636493072fb2 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   22:     0x63649330829f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   23:     0x7d0a951cddfa - <unknown>
[INFO] [stdout]   24:     0x7d0a952613d4 - clone
[INFO] [stdout]   25:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     tts::utils::tee::tests::test_tee_audio_save_fails_no_dir
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 950 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.05s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "3b08fadcc78ede1708e0536e2cf536f4ace8f6ee4a6d80d0001bbf8546fd8b87", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3b08fadcc78ede1708e0536e2cf536f4ace8f6ee4a6d80d0001bbf8546fd8b87", kill_on_drop: false }`
[INFO] [stdout] 3b08fadcc78ede1708e0536e2cf536f4ace8f6ee4a6d80d0001bbf8546fd8b87
