[INFO] fetching crate zhihu-cli 0.3.0...
[INFO] testing zhihu-cli-0.3.0 against 1.99.0-beta.8 for beta-1.100-2
[INFO] extracting crate zhihu-cli 0.3.0 into /workspace/builds/worker-4-tc1/source
[INFO] started tweaking crates.io crate zhihu-cli 0.3.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate zhihu-cli 0.3.0
[INFO] tweaked toml for crates.io crate zhihu-cli 0.3.0 written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate zhihu-cli 0.3.0 on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate zhihu-cli 0.3.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded bstr v1.12.3
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 568f681e965760dcd4f29da8b770c2f8166995326904fbae8d1fe09bbe4df068
[INFO] running `Command { std: "docker" "start" "568f681e965760dcd4f29da8b770c2f8166995326904fbae8d1fe09bbe4df068", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "568f681e965760dcd4f29da8b770c2f8166995326904fbae8d1fe09bbe4df068", 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" "568f681e965760dcd4f29da8b770c2f8166995326904fbae8d1fe09bbe4df068" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "568f681e965760dcd4f29da8b770c2f8166995326904fbae8d1fe09bbe4df068", 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" "568f681e965760dcd4f29da8b770c2f8166995326904fbae8d1fe09bbe4df068" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.118
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling http v1.4.2
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling rustls-pki-types v1.14.1
[INFO] [stderr]    Compiling rustls v0.23.41
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling dirs-sys v0.4.1
[INFO] [stderr]    Compiling dirs v5.0.1
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling webpki-roots v1.0.8
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling yoke v0.8.3
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling hyper v1.10.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling zhihu-cli v0.3.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 28.89s
[INFO] running `Command { std: "docker" "inspect" "568f681e965760dcd4f29da8b770c2f8166995326904fbae8d1fe09bbe4df068", 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" "568f681e965760dcd4f29da8b770c2f8166995326904fbae8d1fe09bbe4df068" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling num_cpus v1.17.0
[INFO] [stderr]    Compiling assert_cmd v2.2.2
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling serial_test_derive v3.5.0
[INFO] [stderr]    Compiling deadpool v0.12.3
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling h2 v0.4.15
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling assert-json-diff v2.0.2
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling hyper v1.10.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling serial_test v3.5.0
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling regex v1.12.4
[INFO] [stderr]    Compiling bstr v1.12.3
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling wiremock v0.6.5
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling zhihu-cli v0.3.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 23.07s
[INFO] running `Command { std: "docker" "inspect" "568f681e965760dcd4f29da8b770c2f8166995326904fbae8d1fe09bbe4df068", 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" "568f681e965760dcd4f29da8b770c2f8166995326904fbae8d1fe09bbe4df068" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.28s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/zhihu_cli-ef760bb80294e631)
[INFO] [stdout] 
[INFO] [stdout] running 243 tests
[INFO] [stdout] test cli::tests::comment_order_api_names ... ok
[INFO] [stdout] test cli::tests::creator_content_type_api_names ... ok
[INFO] [stdout] test cli::tests::parse_ask_with_stream_and_model ... ok
[INFO] [stdout] test cli::tests::parse_ask_defaults_to_thinking ... ok
[INFO] [stdout] test cli::tests::parse_creator_account_stats_with_type_and_dates ... ok
[INFO] [stdout] test cli::tests::parse_creator_comments_defaults ... ok
[INFO] [stdout] test cli::tests::parse_kb_items_with_cursor_and_limit ... ok
[INFO] [stdout] test cli::tests::model_tier_api_names ... ok
[INFO] [stdout] test cli::tests::parse_hot_with_limit ... ok
[INFO] [stdout] test cli::tests::parse_creator_content_stats_with_dates ... ok
[INFO] [stdout] test cli::tests::parse_kb_upload_with_kb_id ... ok
[INFO] [stdout] test cli::tests::parse_pdf_parse_with_timeout ... ok
[INFO] [stdout] test cli::tests::parse_creator_detail_takes_content_url ... ok
[INFO] [stdout] test cli::tests::parse_kb_list_with_scope ... ok
[INFO] [stdout] test cli::tests::parse_hot_defaults_to_limit_thirty ... ok
[INFO] [stdout] test cli::tests::parse_kb_list_defaults_to_all ... ok
[INFO] [stdout] test cli::tests::parse_creator_comments_with_all_options ... ok
[INFO] [stdout] test cli::tests::parse_kb_search_with_repeatable_ids_and_scopes ... ok
[INFO] [stdout] test cli::tests::parse_pdf_status_takes_task_id ... ok
[INFO] [stdout] test cli::tests::parse_pdf_parse_defaults_timeout_and_key ... ok
[INFO] [stdout] test cli::tests::parse_question_answers_with_offset_and_limit ... ok
[INFO] [stdout] test cli::tests::parse_ppt_task_requires_pages ... ok
[INFO] [stdout] test cli::tests::parse_quota_defaults_to_no_ids ... ok
[INFO] [stdout] test cli::tests::parse_question_answers_defaults ... ok
[INFO] [stdout] test cli::tests::parse_search_zhihu_with_count ... ok
[INFO] [stdout] test cli::tests::parse_question_recommend_defaults ... ok
[INFO] [stdout] test cli::tests::parse_question_recommend_with_query_and_count ... ok
[INFO] [stdout] test cli::tests::parse_quota_splits_comma_separated_ids ... ok
[INFO] [stdout] test cli::tests::parse_search_global_with_filter_and_db ... ok
[INFO] [stdout] test cli::tests::parse_creator_account_stats_defaults ... ok
[INFO] [stdout] test cli::tests::parse_pdf_task_with_idempotency_key ... ok
[INFO] [stdout] test cli::tests::parse_ppt_status_takes_task_id ... ok
[INFO] [stdout] test client::tests::resolve_base_url_uses_env_var_when_set ... ok
[INFO] [stdout] test cli::tests::parse_user_collections_defaults ... ok
[INFO] [stdout] test cli::tests::parse_user_favlist_contents_with_token ... ok
[INFO] [stdout] test client::tests::resolve_base_url_trims_trailing_slash ... ok
[INFO] [stdout] test cli::tests::parse_user_favlists_with_limit ... ok
[INFO] [stdout] test commands::ask::build_ask_body_tests::agent_model_uses_agent_api_name ... ok
[INFO] [stdout] test cli::tests::parse_user_contents_defaults ... ok
[INFO] [stdout] test cli::tests::parse_user_followees_defaults ... ok
[INFO] [stdout] test client::tests::resolve_base_url_trims_multiple_trailing_slashes ... ok
[INFO] [stdout] test cli::tests::parse_user_contents_with_all_options ... ok
[INFO] [stdout] test cli::tests::search_db_api_names ... ok
[INFO] [stdout] test client::tests::resolve_base_url_uses_default_when_env_unset ... ok
[INFO] [stdout] test client::tests::auth_headers_contain_bearer_and_timestamp ... ok
[INFO] [stdout] test client::tests::custom_constructor_sets_secret_and_base_url ... ok
[INFO] [stdout] test commands::ask::run_tests::print_ask_result_non_stream_err_propagates ... ok
[INFO] [stdout] test commands::ask::run_tests::print_ask_result_non_stream_ok_prints ... ok
[INFO] [stdout] test commands::ask::build_ask_body_tests::thinking_model_uses_thinking_api_name ... ok
[INFO] [stdout] test commands::ask::build_ask_body_tests::body_has_exactly_three_top_level_keys ... ok
[INFO] [stdout] test commands::ask::build_ask_body_tests::fast_model_uses_fast_api_name ... ok
[INFO] [stdout] test commands::ask::build_ask_body_tests::unicode_query_preserved ... ok
[INFO] [stdout] test commands::ask::build_ask_body_tests::messages_is_single_user_message ... ok
[INFO] [stdout] test commands::ask::build_ask_body_tests::multi_word_query_preserved ... ok
[INFO] [stdout] test cli::tests::parse_ppt_generate_defaults_timeout ... ok
[INFO] [stdout] test commands::ask::tests::data_with_finish_reason_yields_one_finish_event ... ok
[INFO] [stdout] test commands::ask::build_ask_body_tests::stream_false_is_reflected_in_body ... ok
[INFO] [stdout] test commands::ask::build_ask_body_tests::stream_true_is_reflected_in_body ... ok
[INFO] [stdout] test commands::ask::tests::done_marker_is_skipped ... ok
[INFO] [stdout] test commands::ask::run_tests::print_ask_result_streams_ok_drops_sentinel ... ok
[INFO] [stdout] test commands::ask::tests::unicode_content_in_delta_is_preserved ... ok
[INFO] [stdout] test commands::ask::tests::data_with_delta_and_finish_reason_yields_both_in_order ... ok
[INFO] [stdout] test commands::ask::tests::empty_line_yields_no_events ... ok
[INFO] [stdout] test commands::ask::run_tests::print_ask_result_stream_err_propagates ... ok
[INFO] [stdout] test commands::ask::tests::comment_line_is_skipped ... ok
[INFO] [stdout] test commands::ask::run_tests::handle_with_client_non_stream_post ... ok
[INFO] [stdout] test commands::auth::tests::handle_set_secret_rejects_empty ... ok
[INFO] [stdout] test commands::ask::tests::data_prefix_without_space_is_rejected ... ok
[INFO] [stdout] test commands::auth::tests::read_and_validate_secret_rejects_whitespace_only_line ... ok
[INFO] [stdout] test commands::auth::tests::read_and_validate_secret_trims_surrounding_whitespace ... ok
[INFO] [stdout] test commands::auth::tests::read_and_validate_secret_returns_trimmed_line ... ok
[INFO] [stdout] test commands::auth::tests::status_payload_both_set_env_wins ... ok
[INFO] [stdout] test commands::auth::tests::status_payload_neither_set ... ok
[INFO] [stdout] test commands::auth::tests::status_payload_only_config_set ... ok
[INFO] [stdout] test commands::auth::tests::read_and_validate_secret_rejects_empty_line ... ok
[INFO] [stdout] test commands::auth::tests::status_payload_only_env_set ... ok
[INFO] [stdout] test commands::auth::tests::validate_secret_accepts_non_empty ... ok
[INFO] [stdout] test commands::ask::tests::malformed_json_is_skipped ... ok
[INFO] [stdout] test cli::tests::parse_pdf_upload_takes_file ... ok
[INFO] [stdout] test commands::auth::tests::validate_secret_rejects_whitespace_only ... ok
[INFO] [stdout] test commands::ask::tests::line_without_data_prefix_is_ignored ... ok
[INFO] [stdout] test commands::ask::tests::whitespace_only_line_yields_no_events ... ok
[INFO] [stdout] test commands::ask::tests::data_with_empty_delta_and_no_finish_yields_nothing ... ok
[INFO] [stdout] test commands::auth::tests::validate_secret_rejects_empty ... ok
[INFO] [stdout] test commands::auth::tests::validate_secret_trims_surrounding_whitespace ... ok
[INFO] [stdout] test commands::creator::tests::account_stats_request_includes_date_range_when_given ... ok
[INFO] [stdout] test commands::ask::tests::data_with_delta_yields_one_delta_event ... ok
[INFO] [stdout] test commands::creator::tests::comments_request_passes_offset_through_unvalidated ... ok
[INFO] [stdout] test commands::creator::tests::comments_request_rejects_blank_url ... ok
[INFO] [stdout] test commands::creator::tests::content_stats_request_assembles_query_with_dates ... ok
[INFO] [stdout] test commands::creator::tests::content_stats_request_rejects_blank_url ... ok
[INFO] [stdout] test commands::creator::tests::account_stats_request_uses_account_stats_path ... ok
[INFO] [stdout] test commands::creator::tests::date_range_rejects_end_earlier_than_start ... ok
[INFO] [stdout] test commands::creator::tests::comments_request_uses_content_comments_path ... ok
[INFO] [stdout] test commands::creator::tests::date_range_rejects_malformed_end_date ... ok
[INFO] [stdout] test commands::creator::tests::date_range_rejects_solo_end_date ... ok
[INFO] [stdout] test commands::creator::tests::date_range_rejects_solo_start_date ... ok
[INFO] [stdout] test commands::creator::tests::content_stats_request_uses_content_stats_path ... ok
[INFO] [stdout] test commands::creator::tests::detail_request_trims_content_url ... ok
[INFO] [stdout] test commands::creator::tests::comments_request_limit_clamps_to_one_through_fifty ... ok
[INFO] [stdout] test commands::creator::tests::date_range_rejects_malformed_start_date ... ok
[INFO] [stdout] test commands::creator::tests::detail_request_uses_content_detail_path ... ok
[INFO] [stdout] test commands::creator::tests::date_range_accepts_equal_start_and_end ... ok
[INFO] [stdout] test commands::creator::tests::account_stats_request_omits_dates_when_absent ... ok
[INFO] [stdout] test commands::creator::tests::detail_request_rejects_blank_url ... ok
[INFO] [stdout] test commands::creator::tests::comments_request_assembles_full_query ... ok
[INFO] [stdout] test commands::hot::tests::dispatch_result_propagates_serialize_error ... ok
[INFO] [stdout] test commands::hot::tests::dispatch_result_returns_err_for_input_err ... ok
[INFO] [stdout] test commands::hot::tests::hot_request_limit_clamps_to_one_through_thirty ... ok
[INFO] [stdout] test commands::hot::tests::hot_request_limit_defaults_to_thirty ... ok
[INFO] [stdout] test commands::hot::tests::hot_request_uses_hot_list_path ... ok
[INFO] [stdout] test commands::ask::run_tests::stream_ask_with_client_returns_api_error_on_non_2xx ... ok
[INFO] [stdout] test commands::auth::tests::handle_login_reads_secret_from_stdin ... ok
[INFO] [stdout] test commands::ask::run_tests::stream_ask_with_client_parses_sse_stream ... ok
[INFO] [stdout] test commands::knowledge::tests::items_request_builds_path_and_limit ... ok
[INFO] [stdout] test commands::knowledge::tests::items_request_includes_cursor_when_provided ... ok
[INFO] [stdout] test commands::auth::tests::handle_status_returns_configured_when_config_has_secret ... ok
[INFO] [stdout] test commands::auth::tests::handle_login_rejects_empty_stdin ... ok
[INFO] [stdout] test commands::knowledge::tests::items_request_limit_clamps_to_one_through_twenty ... ok
[INFO] [stdout] test commands::knowledge::tests::kb_scope_api_names ... ok
[INFO] [stdout] test commands::knowledge::tests::list_request_uses_scope ... ok
[INFO] [stdout] test commands::knowledge::tests::items_request_omits_blank_cursor ... ok
[INFO] [stdout] test commands::knowledge::tests::recall_scope_api_names ... ok
[INFO] [stdout] test commands::knowledge::tests::search_body_assembles_full_payload ... ok
[INFO] [stdout] test commands::knowledge::tests::search_body_limit_clamps_to_one_through_ten ... ok
[INFO] [stdout] test commands::knowledge::tests::search_body_rejects_blank_query ... ok
[INFO] [stdout] test commands::auth::tests::handle_set_secret_persists_to_config ... ok
[INFO] [stdout] test commands::knowledge::tests::search_body_requires_kb_ids_or_scopes ... ok
[INFO] [stdout] test commands::knowledge::tests::upload_form_missing_file_maps_to_io_error ... ok
[INFO] [stdout] test commands::auth::tests::save_secret_persists_and_returns_success ... ok
[INFO] [stdout] test commands::pdf::tests::parse_with_client_rejects_upload_response_without_file_id ... ok
[INFO] [stdout] test commands::creator::tests::handle_with_client_account_stats_omits_dates_when_absent ... ok
[INFO] [stdout] test commands::pdf::tests::status_path_embeds_task_id ... ok
[INFO] [stdout] test commands::pdf::tests::task_body_wraps_file_id ... ok
[INFO] [stdout] test commands::pdf::tests::upload_form_missing_file_maps_to_io_error ... ok
[INFO] [stdout] test commands::ppt::tests::generate_with_client_creates_task_and_waits ... ok
[INFO] [stdout] test commands::creator::tests::handle_with_client_content_stats_calls_endpoint ... ok
[INFO] [stdout] test commands::creator::tests::handle_with_client_detail_calls_endpoint ... ok
[INFO] [stdout] test commands::creator::tests::handle_with_client_propagates_validation_error_without_http ... ok
[INFO] [stdout] test commands::ppt::tests::status_path_embeds_task_id ... ok
[INFO] [stdout] test commands::hot::tests::handle_with_client_calls_hot_list_endpoint ... ok
[INFO] [stdout] test commands::knowledge::tests::handle_with_client_items_calls_endpoint ... ok
[INFO] [stdout] test commands::ppt::tests::task_body_pages_clamp_to_six_through_twenty_one ... ok
[INFO] [stdout] test commands::question::tests::answers_request_assembles_full_query ... ok
[INFO] [stdout] test commands::knowledge::tests::handle_with_client_list_calls_endpoint ... ok
[INFO] [stdout] test commands::question::tests::answers_request_limit_clamps_to_one_through_fifty ... ok
[INFO] [stdout] test commands::question::tests::answers_request_passes_offset_through_unvalidated ... ok
[INFO] [stdout] test commands::question::tests::answers_request_uses_question_answers_path ... ok
[INFO] [stdout] test commands::ppt::tests::task_body_wraps_url_and_pages ... ok
[INFO] [stdout] test commands::knowledge::tests::handle_with_client_search_posts_json_body ... ok
[INFO] [stdout] test commands::question::tests::answers_request_rejects_blank_url ... ok
[INFO] [stdout] test commands::question::tests::recommend_request_count_clamps_to_one_through_twenty ... ok
[INFO] [stdout] test commands::question::tests::recommend_request_includes_trimmed_query ... ok
[INFO] [stdout] test commands::question::tests::recommend_request_omits_query_param_when_absent ... ok
[INFO] [stdout] test commands::knowledge::tests::handle_with_client_upload_posts_multipart ... ok
[INFO] [stdout] test commands::question::tests::recommend_request_rejects_blank_query ... ok
[INFO] [stdout] test commands::pdf::tests::handle_with_client_status_gets_task_path ... ok
[INFO] [stdout] test commands::question::tests::recommend_request_uses_recommendations_path ... ok
[INFO] [stdout] test commands::pdf::tests::handle_with_client_task_posts_body_and_idempotency_key ... ok
[INFO] [stdout] test commands::quota::tests::quota_request_joins_ids_with_comma ... ok
[INFO] [stdout] test commands::quota::tests::quota_request_trims_and_drops_empty_ids ... ok
[INFO] [stdout] test commands::pdf::tests::parse_with_client_rejects_task_response_without_task_id ... ok
[INFO] [stdout] test commands::quota::tests::quota_request_uses_quota_path ... ok
[INFO] [stdout] test commands::quota::tests::quota_request_omits_apiids_for_empty_ids ... ok
[INFO] [stdout] test commands::search::tests::dispatch_result_returns_err_for_input_err ... ok
[INFO] [stdout] test commands::search::tests::global_count_clamps_to_one_through_twenty ... ok
[INFO] [stdout] test commands::search::tests::global_filter_param_present_when_some ... ok
[INFO] [stdout] test commands::pdf::tests::handle_with_client_upload_posts_multipart_file_field ... ok
[INFO] [stdout] test commands::search::tests::global_search_db_is_renders_api_name ... ok
[INFO] [stdout] test commands::search::tests::global_search_uses_global_search_path ... ok
[INFO] [stdout] test commands::search::tests::global_filter_param_omitted_when_none ... ok
[INFO] [stdout] test commands::creator::tests::handle_with_client_account_stats_calls_endpoint ... ok
[INFO] [stdout] test commands::search::tests::zhihu_count_clamps_to_one_through_ten ... ok
[INFO] [stdout] test commands::search::tests::zhihu_search_uses_zhihu_search_path ... ok
[INFO] [stdout] test commands::search::tests::dispatch_result_propagates_serialize_error ... ok
[INFO] [stdout] test commands::search::tests::handle_with_client_zhihu_search_calls_zhihu_search_endpoint ... ok
[INFO] [stdout] test commands::task_poll::tests::is_terminal_false_for_pending_and_running ... ok
[INFO] [stdout] test commands::task_poll::tests::is_terminal_false_for_missing_status ... ok
[INFO] [stdout] test commands::task_poll::tests::is_terminal_true_for_nonzero_code_envelope ... ok
[INFO] [stdout] test commands::creator::tests::handle_with_client_comments_calls_endpoint ... ok
[INFO] [stdout] test commands::user::tests::collections_request_assembles_query ... ok
[INFO] [stdout] test commands::task_poll::tests::is_terminal_true_for_succeeded_and_failed ... ok
[INFO] [stdout] test commands::search::tests::zhihu_query_param_is_user_input ... ok
[INFO] [stdout] test commands::user::tests::contents_request_defaults_use_api_defaults ... ok
[INFO] [stdout] test commands::user::tests::contents_request_carries_oauth_token ... ok
[INFO] [stdout] test commands::user::tests::favlist_contents_request_assembles_query ... ok
[INFO] [stdout] test commands::user::tests::favlists_request_assembles_query ... ok
[INFO] [stdout] test commands::user::tests::contents_request_limit_clamps_to_one_through_fifty ... ok
[INFO] [stdout] test commands::ppt::tests::handle_with_client_status_gets_task_path ... ok
[INFO] [stdout] test commands::user::tests::contents_request_assembles_full_query ... ok
[INFO] [stdout] test commands::user::tests::followees_request_assembles_query ... ok
[INFO] [stdout] test commands::user::tests::followees_request_limit_clamps_to_one_through_fifty ... ok
[INFO] [stdout] test commands::ppt::tests::generate_with_client_rejects_task_response_without_task_id ... ok
[INFO] [stdout] test commands::user::tests::sort_field_and_order_api_names ... ok
[INFO] [stdout] test commands::user::tests::user_content_type_api_names ... ok
[INFO] [stdout] test config::tests::empty_config_is_default ... ok
[INFO] [stdout] test config::tests::config_serde_roundtrip ... ok
[INFO] [stdout] test commands::ppt::tests::handle_with_client_task_posts_body_and_idempotency_key ... ok
[INFO] [stdout] test config::tests::resolve_secret_errors_when_missing ... ok
[INFO] [stdout] test config::tests::resolve_secret_prefers_env_over_config ... ok
[INFO] [stdout] test config::tests::resolve_secret_falls_back_to_config ... ok
[INFO] [stdout] test commands::quota::tests::handle_with_client_omits_apiids_when_no_ids ... ok
[INFO] [stdout] test commands::quota::tests::handle_with_client_calls_quota_endpoint ... ok
[INFO] [stdout] test error::tests::api_error_includes_status_and_body ... ok
[INFO] [stdout] test commands::search::tests::handle_with_client_global_search_calls_global_search_endpoint ... ok
[INFO] [stdout] test error::tests::config_dir_not_found_displays_generic_message ... ok
[INFO] [stdout] test error::tests::config_parse_error_wraps_inner_message ... ok
[INFO] [stdout] test error::tests::config_serialize_error_wraps_inner_message ... ok
[INFO] [stdout] test error::tests::http_error_wraps_inner_message ... ok
[INFO] [stdout] test error::tests::io_error_wraps_inner_message ... ok
[INFO] [stdout] test error::tests::invalid_argument_includes_user_supplied_reason ... ok
[INFO] [stdout] test error::tests::missing_secret_displays_setup_hint ... ok
[INFO] [stdout] test error::tests::non_json_response_displays_clear_message ... ok
[INFO] [stdout] test output::tests::api_error_message_contains_status_and_body ... ok
[INFO] [stdout] test error::tests::task_timeout_includes_task_id_and_waited_secs ... ok
[INFO] [stdout] test output::tests::config_dir_not_found_omits_code_field ... ok
[INFO] [stdout] test output::tests::dispatch_result_err_path_returns_error ... ok
[INFO] [stdout] test output::tests::dispatch_result_propagates_serialize_error ... ok
[INFO] [stdout] test output::tests::dispatch_result_ok_path_prints_value ... ok
[INFO] [stdout] test output::tests::missing_secret_includes_code_20001 ... ok
[INFO] [stdout] test output::tests::missing_secret_includes_error_message ... ok
[INFO] [stdout] test output::tests::output_is_single_line ... ok
[INFO] [stdout] test output::tests::print_json_line_propagates_serialize_error ... ok
[INFO] [stdout] test output::tests::print_json_propagates_serialize_error ... ok
[INFO] [stdout] test output::tests::to_json_line_string_produces_compact_output ... ok
[INFO] [stdout] test output::tests::to_json_line_string_propagates_serialize_error ... ok
[INFO] [stdout] test commands::pdf::tests::parse_with_client_runs_upload_task_and_wait ... ok
[INFO] [stdout] test output::tests::to_json_string_propagates_serialize_error ... ok
[INFO] [stdout] test output::tests::to_json_string_produces_pretty_output ... ok
[INFO] [stdout] test commands::task_poll::tests::wait_for_task_returns_final_task_when_it_becomes_terminal ... ok
[INFO] [stdout] test commands::user::tests::handle_with_client_contents_sends_oauth_header ... ok
[INFO] [stdout] test output::tests::invalid_argument_preserves_user_input ... ok
[INFO] [stdout] test commands::user::tests::handle_with_client_favlist_contents_calls_endpoint ... ok
[INFO] [stdout] test config::tests::config_file_has_restrictive_permissions ... ok
[INFO] [stdout] test commands::question::tests::handle_with_client_recommend_calls_endpoint ... ok
[INFO] [stdout] test config::tests::restore_home_unsets_when_original_was_none ... ok
[INFO] [stdout] test config::tests::resolve_secret_returns_env_when_config_missing ... ok
[INFO] [stdout] test config::tests::save_creates_config_file ... ok
[INFO] [stdout] test commands::task_poll::tests::wait_for_task_times_out_with_task_timeout_error ... ok
[INFO] [stdout] test commands::question::tests::handle_with_client_propagates_validation_error_without_http ... ok
[INFO] [stdout] test commands::question::tests::handle_with_client_answers_calls_endpoint ... ok
[INFO] [stdout] test config::tests::resolve_secret_returns_config_when_env_unset ... ok
[INFO] [stdout] test commands::question::tests::handle_with_client_recommend_omits_query_when_absent ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 243 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.12s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/zhihu-b80eaf6d83c80bdb)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli.rs (/opt/rustwide/target/debug/deps/cli-69f95e14bf4cfb4a)
[INFO] [stdout] 
[INFO] [stdout] running 31 tests
[INFO] [stdout] test auth_set_secret_empty_value_fails ... ok
[INFO] [stdout] test auth_status_unconfigured ... ok
[INFO] [stdout] test cli_hot_against_mock_server_succeeds ... ok
[INFO] [stdout] test auth_set_secret_and_status ... ok
[INFO] [stdout] test creator_detail_without_auth_fails ... ok
[INFO] [stdout] test creator_account_stats_solo_start_date_fails ... ok
[INFO] [stdout] test cli_creator_detail_against_mock_server_succeeds ... ok
[INFO] [stdout] test hot_without_auth_fails ... ok
[INFO] [stdout] test help_shows_commands ... ok
[INFO] [stdout] test kb_search_without_ids_or_scopes_fails ... ok
[INFO] [stdout] test kb_without_auth_fails ... ok
[INFO] [stdout] test env_secret_overrides_config ... ok
[INFO] [stdout] test pdf_without_auth_fails ... ok
[INFO] [stdout] test cli_ask_stream_against_mock_server_completes ... ok
[INFO] [stdout] test ppt_without_auth_fails ... ok
[INFO] [stdout] test question_answers_without_auth_fails ... ok
[INFO] [stdout] test quota_without_auth_fails ... ok
[INFO] [stdout] test question_recommend_without_auth_fails ... ok
[INFO] [stdout] test user_without_auth_fails ... ok
[INFO] [stdout] test search_zhihu_without_auth_fails ... ok
[INFO] [stdout] test cli_pdf_parse_one_shot_against_mock_server_succeeds ... ok
[INFO] [stdout] test cli_kb_list_against_mock_server_succeeds ... ok
[INFO] [stdout] test cli_kb_upload_against_mock_server_succeeds ... ok
[INFO] [stdout] test cli_ppt_generate_against_mock_server_succeeds ... ok
[INFO] [stdout] test cli_question_answers_against_mock_server_succeeds ... ok
[INFO] [stdout] test cli_question_recommend_against_mock_server_succeeds ... ok
[INFO] [stdout] test cli_ask_non_stream_against_mock_server_succeeds ... ok
[INFO] [stdout] test cli_creator_account_stats_against_mock_server_succeeds ... ok
[INFO] [stdout] test cli_search_zhihu_against_mock_server_succeeds ... ok
[INFO] [stdout] test cli_quota_against_mock_server_succeeds ... ok
[INFO] [stdout] test cli_user_contents_against_mock_server_succeeds ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 31 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.10s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration.rs (/opt/rustwide/target/debug/deps/integration-adcd5f02845e2ab1)
[INFO] [stdout] 
[INFO] [stdout] running 8 tests
[INFO] [stdout] test user_favlists_returns_results ... ok
[INFO] [stdout] test ask_non_stream_returns_completion ... ok
[INFO] [stdout] test quota_returns_usage ... ok
[INFO] [stdout] test ask_stream_returns_chunks ... ok
[INFO] [stdout] test kb_list_returns_results ... ok
[INFO] [stdout] test search_global_returns_results ... ok
[INFO] [stdout] test search_zhihu_returns_results ... ok
[INFO] [stdout] test hot_list_returns_results ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/mocked_api.rs (/opt/rustwide/target/debug/deps/mocked_api-f6b694e6c315df85)
[INFO] [stdout] 
[INFO] [stdout] running 10 tests
[INFO] [stdout] test get_with_oauth_sends_oauth_header_when_provided ... ok
[INFO] [stdout] test handles_500_server_error ... ok
[INFO] [stdout] test handles_403_forbidden ... ok
[INFO] [stdout] test handles_401_auth_failure ... ok
[INFO] [stdout] test post_multipart_sends_file_and_fields ... ok
[INFO] [stdout] test handles_non_json_response ... ok
[INFO] [stdout] test post_sends_json_body_and_returns_response ... ok
[INFO] [stdout] test get_with_oauth_omits_oauth_header_when_none ... ok
[INFO] [stdout] test request_includes_auth_headers ... ok
[INFO] [stdout] test post_multipart_maps_error_status_to_api_error ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests zhihu_cli
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "568f681e965760dcd4f29da8b770c2f8166995326904fbae8d1fe09bbe4df068", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "568f681e965760dcd4f29da8b770c2f8166995326904fbae8d1fe09bbe4df068", kill_on_drop: false }`
[INFO] [stdout] 568f681e965760dcd4f29da8b770c2f8166995326904fbae8d1fe09bbe4df068
