[INFO] cloning repository https://github.com/heikki-laitala/inderes-cli [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/heikki-laitala/inderes-cli" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fheikki-laitala%2Finderes-cli", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fheikki-laitala%2Finderes-cli'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] f70ecf8735e550f40fa278877048d4bbac22722c [INFO] testing heikki-laitala/inderes-cli against 1.98.0-beta.1 for beta-1.98-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fheikki-laitala%2Finderes-cli" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-6-tc2/source/rust-toolchain.toml [INFO] started tweaking git repo https://github.com/heikki-laitala/inderes-cli [INFO] finished tweaking git repo https://github.com/heikki-laitala/inderes-cli [INFO] tweaked toml for git repo https://github.com/heikki-laitala/inderes-cli written to /workspace/builds/worker-6-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/heikki-laitala/inderes-cli on toolchain 1.98.0-beta.1 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/heikki-laitala/inderes-cli already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] 909e47c8d175f16691a1556204e7b1a752b5959874efb579341a55d35b46dac7 [INFO] running `Command { std: "docker" "start" "909e47c8d175f16691a1556204e7b1a752b5959874efb579341a55d35b46dac7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "909e47c8d175f16691a1556204e7b1a752b5959874efb579341a55d35b46dac7", 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" "909e47c8d175f16691a1556204e7b1a752b5959874efb579341a55d35b46dac7" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "909e47c8d175f16691a1556204e7b1a752b5959874efb579341a55d35b46dac7", 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" "909e47c8d175f16691a1556204e7b1a752b5959874efb579341a55d35b46dac7" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Compiling cc v1.2.61 [INFO] [stderr] Compiling bytes v1.11.1 [INFO] [stderr] Compiling futures-core v0.3.32 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling socket2 v0.6.3 [INFO] [stderr] Compiling mio v1.2.0 [INFO] [stderr] Compiling zerofrom v0.1.7 [INFO] [stderr] Compiling tokio-macros v2.7.0 [INFO] [stderr] Compiling bitflags v2.11.1 [INFO] [stderr] Compiling yoke v0.8.2 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling zerovec v0.11.6 [INFO] [stderr] Compiling zerotrie v0.2.4 [INFO] [stderr] Compiling http v1.4.0 [INFO] [stderr] Compiling rustls-pki-types v1.14.1 [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Compiling tokio v1.52.3 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling rustix v1.1.4 [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 tracing-attributes v0.1.31 [INFO] [stderr] Compiling rustls v0.23.39 [INFO] [stderr] Compiling hybrid-array v0.4.11 [INFO] [stderr] Compiling icu_locale_core v2.2.0 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling http-body v1.0.1 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling libsqlite3-sys v0.38.1 [INFO] [stderr] Compiling sync_wrapper v1.0.2 [INFO] [stderr] Compiling serde_json v1.0.150 [INFO] [stderr] Compiling ipnet v2.12.0 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling icu_provider v2.2.0 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling icu_properties v2.2.0 [INFO] [stderr] Compiling icu_normalizer v2.2.0 [INFO] [stderr] Compiling terminal_size v0.4.4 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling clap_builder v4.6.0 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling block-buffer v0.12.0 [INFO] [stderr] Compiling crypto-common v0.2.1 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling webpki-roots v1.0.7 [INFO] [stderr] Compiling option-ext v0.2.0 [INFO] [stderr] Compiling num-conv v0.2.2 [INFO] [stderr] Compiling rustls-webpki v0.103.13 [INFO] [stderr] Compiling const-oid v0.10.2 [INFO] [stderr] Compiling iri-string v0.7.12 [INFO] [stderr] Compiling hyper v1.9.0 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling futures-sink v0.3.32 [INFO] [stderr] Compiling time-core v0.1.9 [INFO] [stderr] Compiling time-macros v0.2.29 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling digest v0.11.2 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling dirs-sys v0.5.0 [INFO] [stderr] Compiling clap v4.6.1 [INFO] [stderr] Compiling chacha20 v0.10.0 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling http-body-util v0.1.3 [INFO] [stderr] Compiling deranged v0.5.8 [INFO] [stderr] Compiling thread_local v1.1.9 [INFO] [stderr] Compiling nu-ansi-term v0.50.3 [INFO] [stderr] Compiling rand v0.10.1 [INFO] [stderr] Compiling directories v6.0.0 [INFO] [stderr] Compiling clap_complete v4.6.5 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling sha2 v0.11.0 [INFO] [stderr] Compiling webbrowser v1.2.1 [INFO] [stderr] Compiling time v0.3.49 [INFO] [stderr] Compiling tokio-rustls v0.26.4 [INFO] [stderr] Compiling hyper-rustls v0.27.9 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling rusqlite v0.40.1 [INFO] [stderr] Compiling inderes-cli v2026.6.22 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 56s [INFO] running `Command { std: "docker" "inspect" "909e47c8d175f16691a1556204e7b1a752b5959874efb579341a55d35b46dac7", 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" "909e47c8d175f16691a1556204e7b1a752b5959874efb579341a55d35b46dac7" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling futures-io v0.3.32 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling serde_json v1.0.150 [INFO] [stderr] Compiling predicates-core v1.0.10 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling num_cpus v1.17.0 [INFO] [stderr] Compiling h2 v0.4.13 [INFO] [stderr] Compiling termtree v0.5.1 [INFO] [stderr] Compiling float-cmp v0.10.0 [INFO] [stderr] Compiling deadpool-runtime v0.1.4 [INFO] [stderr] Compiling assert_cmd v2.2.2 [INFO] [stderr] Compiling normalize-line-endings v0.3.0 [INFO] [stderr] Compiling difflib v0.4.0 [INFO] [stderr] Compiling assert-json-diff v2.0.2 [INFO] [stderr] Compiling deadpool v0.12.3 [INFO] [stderr] Compiling predicates-tree v1.0.13 [INFO] [stderr] Compiling wait-timeout v0.2.1 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling terminal_size v0.4.4 [INFO] [stderr] Compiling clap_builder v4.6.0 [INFO] [stderr] Compiling tempfile v3.27.0 [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 tower-http v0.6.8 [INFO] [stderr] Compiling hyper v1.9.0 [INFO] [stderr] Compiling clap v4.6.1 [INFO] [stderr] Compiling clap_complete v4.6.5 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling bstr v1.12.1 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling predicates v3.1.4 [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 inderes-cli v2026.6.22 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 16s [INFO] running `Command { std: "docker" "inspect" "909e47c8d175f16691a1556204e7b1a752b5959874efb579341a55d35b46dac7", 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" "909e47c8d175f16691a1556204e7b1a752b5959874efb579341a55d35b46dac7" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.43s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/inderes-c7af5324acbfbf05) [INFO] [stdout] [INFO] [stdout] running 156 tests [INFO] [stdout] test cache::tests::activity_rejects_unknown_bucket ... ok [INFO] [stdout] test cache::tests::activity_buckets_posts_by_period ... ok [INFO] [stdout] test cache::tests::cached_topic_ids_lists_all ... ok [INFO] [stdout] test cache::tests::activity_week_bucket_does_not_split_across_new_year ... ok [INFO] [stdout] test cache::tests::db_path_honors_env_override ... ok [INFO] [stdout] test cache::tests::open_readonly_errors_when_cache_missing ... ok [INFO] [stdout] test cache::tests::clear_topic_and_clear_all ... ok [INFO] [stdout] test cache::tests::list_cached_reports_topics_with_post_counts ... ok [INFO] [stdout] test cache::tests::momentum_anchors_to_the_current_period ... ok [INFO] [stdout] test cache::tests::get_posts_preserves_full_raw_object ... ok [INFO] [stdout] test cache::tests::query_rejects_empty_and_multi_statement ... ok [INFO] [stdout] test cache::tests::posts_are_scoped_per_topic ... ok [INFO] [stdout] test cache::tests::query_surfaces_non_finite_floats_as_strings ... ok [INFO] [stdout] test cache::tests::upsert_is_idempotent_and_updates_on_conflict ... ok [INFO] [stdout] test cache::tests::momentum_none_below_two_periods ... ok [INFO] [stdout] test cache::tests::upsert_populates_clean_text_column ... ok [INFO] [stdout] test cache::tests::upsert_skips_posts_without_id ... ok [INFO] [stdout] test cache::tests::upsert_then_get_returns_posts_in_post_number_order ... ok [INFO] [stdout] test cache::tests::query_returns_columns_and_rows ... ok [INFO] [stdout] test cache::tests::upsert_keeps_pre_cleaned_text_verbatim ... ok [INFO] [stdout] test cache::tests::topic_cursor_defaults_to_none_then_tracks_watermark ... ok [INFO] [stdout] test commands::tests::build_args_empty_yields_empty_object ... ok [INFO] [stdout] test commands::tests::build_args_falls_back_to_string_when_value_not_json ... ok [INFO] [stdout] test commands::tests::build_args_json_args_overrides_kv_args ... ok [INFO] [stdout] test commands::tests::build_args_json_args_must_be_object ... ok [INFO] [stdout] test commands::tests::build_args_rejects_missing_equals ... ok [INFO] [stdout] test commands::tests::content_get_args_routes_url_vs_content_id ... ok [INFO] [stdout] test commands::tests::content_list_args_includes_only_present_filters ... ok [INFO] [stdout] test commands::tests::documents_list_args_carries_pagination ... ok [INFO] [stdout] test commands::tests::estimates_args_omits_empty_company_ids_but_always_sends_scalars ... ok [INFO] [stdout] test commands::tests::fmt_ratio_and_ratio_json_handle_infinity ... ok [INFO] [stdout] test commands::tests::fundamentals_args_includes_optional_fields_only_when_set ... ok [INFO] [stdout] test commands::tests::momentum_label_buckets_the_ratio ... ok [INFO] [stdout] test commands::tests::momentum_ratio_handles_baseline_burst_and_dormant ... ok [INFO] [stdout] test commands::tests::print_result_json_mode_does_not_consult_is_error ... ok [INFO] [stdout] tool said no [INFO] [stdout] test commands::tests::print_result_surfaces_is_error ... ok [INFO] [stdout] test commands::tests::render_activity_shows_bars_only ... ok [INFO] [stdout] test commands::tests::build_args_json_args_rejects_invalid_json ... ok [INFO] [stdout] test commands::tests::build_args_parses_json_values_when_possible ... ok [INFO] [stdout] test commands::tests::render_audio_content_prints_placeholder ... ok [INFO] [stdout] test commands::tests::render_empty_content_array_prints_placeholder ... ok [INFO] [stdout] test commands::tests::render_multiple_text_items_prints_each ... ok [INFO] [stdout] test commands::tests::render_image_content_prints_placeholder_with_mime_and_size ... ok [INFO] [stdout] test commands::tests::render_query_table_handles_null_cell ... ok [INFO] [stdout] test commands::tests::render_query_table_aligns_columns ... ok [INFO] [stdout] test commands::tests::render_resource_with_blob_prints_binary_placeholder ... ok [INFO] [stdout] test commands::tests::render_resource_with_text_inlines_content ... ok [INFO] [stdout] test commands::tests::render_text_content_emits_body ... ok [INFO] [stdout] test commands::tests::render_unknown_content_type_prints_passthrough_hint ... ok [INFO] [stdout] test commands::tests::render_without_content_key_falls_back_to_pretty_json ... ok [INFO] [stdout] test commands::tests::result_error_text_some_only_on_is_error ... ok [INFO] [stdout] test commands::tests::structured_content_errors_without_structured_or_text ... ok [INFO] [stdout] test commands::tests::structured_content_falls_back_to_parsing_text ... ok [INFO] [stdout] test commands::tests::structured_content_prefers_structured_field ... ok [INFO] [stdout] test commands::tests::walk_thread_empty_first_page_leaves_topic_uncached ... ok [INFO] [stdout] test commands::tests::build_args_handles_values_with_equals_sign ... ok [INFO] [stdout] test commands::tests::walk_thread_malformed_page_propagates_even_with_cache ... ok [INFO] [stdout] test commands::tests::walk_thread_caches_all_pages_until_no_next ... ok [INFO] [stdout] test commands::tests::walk_thread_error_without_cache_propagates ... ok [INFO] [stdout] test commands::tests::walk_thread_interrupted_serves_cached_posts ... ok [INFO] [stdout] test forum::tests::decode_entities_does_not_double_decode_amp ... ok [INFO] [stdout] test commands::tests::walk_thread_resumes_from_stored_cursor_and_marks_caught_up ... ok [INFO] [stdout] test forum::tests::mcp_post_to_cache_maps_server_fields_to_cache_columns ... ok [INFO] [stdout] test forum::tests::page_request_args_omits_after_on_the_first_page ... ok [INFO] [stdout] test forum::tests::page_request_args_resumes_from_cursor ... ok [INFO] [stdout] test forum::tests::parse_posts_page_handles_a_terminal_page ... ok [INFO] [stdout] test forum::tests::parse_posts_page_maps_posts_and_reads_pageinfo ... ok [INFO] [stdout] test forum::tests::render_forum_search_lists_topics_with_ids_from_url ... ok [INFO] [stdout] test forum::tests::render_topic_does_not_html_strip_markdown_bodies ... ok [INFO] [stdout] test forum::tests::render_forum_search_empty_topics_is_a_genuine_no_result ... ok [INFO] [stdout] test forum::tests::render_topic_handles_empty_stream ... ok [INFO] [stdout] test forum::tests::render_topic_shows_full_post_bodies ... ok [INFO] [stdout] test forum::tests::render_unrecognized_shape_dumps_raw_json_not_a_fake_empty ... ok [INFO] [stdout] test forum::tests::strip_html_converts_br_to_newline ... ok [INFO] [stdout] test forum::tests::strip_html_collapses_intra_line_whitespace_but_keeps_paragraphs ... ok [INFO] [stdout] test forum::tests::thread_url_addresses_topic_by_id_with_placeholder_slug ... ok [INFO] [stdout] test forum::tests::strip_html_on_markdown_is_identity_modulo_whitespace ... ok [INFO] [stdout] test forum::tests::strip_html_decodes_common_entities ... ok [INFO] [stdout] test forum::tests::topic_id_from_url_takes_the_trailing_numeric_segment ... ok [INFO] [stdout] test mcp::tests::boundary_consumer_can_split_correctly ... ok [INFO] [stdout] test mcp::tests::boundary_lf_only ... ok [INFO] [stdout] test mcp::tests::boundary_lf_wins_when_earlier ... ok [INFO] [stdout] test mcp::tests::boundary_none_when_incomplete ... ok [INFO] [stdout] test mcp::tests::boundary_crlf ... ok [INFO] [stdout] test mcp::tests::chunked_stream_skips_notifications_and_returns_response ... ok [INFO] [stdout] test mcp::tests::close_is_noop_without_session_id ... ok [INFO] [stdout] test mcp::tests::does_not_retry_on_400 ... ok [INFO] [stdout] test mcp::tests::close_sends_delete_with_session_id ... ok [INFO] [stdout] test mcp::tests::close_tolerates_404_from_already_evicted_session ... ok [INFO] [stdout] test mcp::tests::does_not_retry_on_500 ... ok [INFO] [stdout] test mcp::tests::call_tool_returns_result_from_json_response ... ok [INFO] [stdout] test mcp::tests::error_object_surfaces_as_error ... ok [INFO] [stdout] test mcp::tests::parse_accepts_no_space_after_colon ... ok [INFO] [stdout] test mcp::tests::parse_empty_returns_none ... ok [INFO] [stdout] test mcp::tests::parse_ignores_unknown_fields ... ok [INFO] [stdout] test mcp::tests::parse_multiline_data_joins_with_newlines ... ok [INFO] [stdout] test mcp::tests::parse_reports_invalid_json ... ok [INFO] [stdout] test mcp::tests::parse_single_line_data ... ok [INFO] [stdout] test mcp::tests::parse_strips_single_leading_space_only ... ok [INFO] [stdout] test mcp::tests::id_mismatch_surfaces_as_error ... ok [INFO] [stdout] test mcp::tests::initialize_captures_session_id_from_response_header ... ok [INFO] [stdout] test mcp::tests::retryable_status_matrix ... ok [INFO] [stdout] test mcp::tests::sse_content_type_parsed_correctly ... ok [INFO] [stdout] test oauth::tests::build_auth_url_attaches_pkce_and_scopes ... ok [INFO] [stdout] test mcp::tests::subsequent_requests_echo_session_id_header ... ok [INFO] [stdout] test oauth::tests::exchange_code_posts_authorization_code_grant ... ok [INFO] [stdout] test oauth::tests::idp_default_points_at_inderes ... ok [INFO] [stdout] test oauth::tests::idp_from_env_layers_overrides ... ok [INFO] [stdout] test oauth::tests::parse_callback_happy_path_returns_code ... ok [INFO] [stdout] test oauth::tests::parse_callback_rejects_missing_code ... ok [INFO] [stdout] test oauth::tests::parse_callback_rejects_missing_state ... ok [INFO] [stdout] test oauth::tests::parse_callback_rejects_wrong_path ... ok [INFO] [stdout] test oauth::tests::parse_callback_rejects_state_mismatch_as_csrf ... ok [INFO] [stdout] test oauth::tests::parse_callback_surfaces_error_param ... ok [INFO] [stdout] test oauth::tests::parse_full_url_extracts_code ... ok [INFO] [stdout] test oauth::tests::parse_full_url_rejects_garbage ... ok [INFO] [stdout] test oauth::tests::parse_full_url_handles_https_redirect_uri ... ok [INFO] [stdout] test oauth::tests::parse_full_url_rejects_wrong_path ... ok [INFO] [stdout] test oauth::tests::parse_full_url_validates_state ... ok [INFO] [stdout] test mcp::tests::retries_on_503_then_succeeds ... ok [INFO] [stdout] test oauth::tests::pkce_s256_matches_rfc_fixture ... ok [INFO] [stdout] test oauth::tests::random_urlsafe_length_varies_with_input ... ok [INFO] [stdout] test oauth::tests::random_verifier_is_rfc_compliant_length ... ok [INFO] [stdout] test oauth::tests::refresh_parses_happy_response ... ok [INFO] [stdout] test oauth::tests::refresh_handles_missing_expires_in ... ok [INFO] [stdout] test mcp::tests::exhausting_retries_returns_upstream_error ... ok [INFO] [stdout] test oauth::tests::userinfo_bubbles_401 ... ok [INFO] [stdout] test oauth::tests::refresh_surfaces_keycloak_error ... ok [INFO] [stdout] test oauth::tests::userinfo_returns_claims_on_200 ... ok [INFO] [stdout] test skill::tests::all_skills_are_non_empty ... ok [INFO] [stdout] test skill::tests::cli_name_matches_clap_value ... ok [INFO] [stdout] test skill::tests::hermes_path_ends_with_hermes_skills ... ok [INFO] [stdout] test skill::tests::hermes_skill_has_hermes_metadata ... ok [INFO] [stdout] test skill::tests::openclaw_path_ends_with_openclaw_skills ... ok [INFO] [stdout] test skill::tests::openclaw_skill_has_openclaw_metadata ... ok [INFO] [stdout] test skill::tests::ptrclaw_path_ends_with_ptrclaw_skills ... ok [INFO] [stdout] test skill::tests::ptrclaw_skill_names_the_shell_tool ... ok [INFO] [stdout] test storage::tests::clear_removes_file ... ok [INFO] [stdout] test storage::tests::is_expiring_detects_skew ... ok [INFO] [stdout] test storage::tests::load_missing_returns_none ... ok [INFO] [stdout] test upgrade::tests::downgrade_is_not_newer ... ok [INFO] [stdout] test upgrade::tests::equal_is_not_newer ... ok [INFO] [stdout] test storage::tests::save_then_load_roundtrips ... ok [INFO] [stdout] test upgrade::tests::newer_across_minor_and_major ... ok [INFO] [stdout] test upgrade::tests::newer_handles_double_digit_correctly ... ok [INFO] [stdout] test upgrade::tests::newer_when_patch_increments ... ok [INFO] [stdout] test storage::tests::saved_file_is_0600 ... ok [INFO] [stdout] test cache::tests::migration_adds_cursor_column_to_old_caches ... ok [INFO] [stdout] test upgrade::tests::strips_leading_v_in_either_input ... ok [INFO] [stdout] test upgrade::tests::unparseable_is_never_newer ... ok [INFO] [stdout] test upgrade::tests::fetches_tag_name_from_releases_latest ... ok [INFO] [stdout] test upgrade::tests::surfaces_404_with_status ... ok [INFO] [stdout] test cache::tests::readonly_connection_rejects_writes ... ok [INFO] [stdout] test cache::tests::migration_adds_and_backfills_text_for_old_caches ... ok [INFO] [stdout] test cache::tests::open_readonly_migrates_old_cache_so_text_is_queryable ... ok [INFO] [stdout] test oauth::tests::parse_full_url_surfaces_error_param ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 156 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s [INFO] [stdout] [INFO] [stderr] Running tests/cli.rs (/opt/rustwide/target/debug/deps/cli-bb2c097fa03539b5) [INFO] [stdout] [INFO] [stdout] running 30 tests [INFO] [stdout] test install_skill_rejects_unknown_host ... ok [INFO] [stdout] test call_list_without_login_prints_helpful_error ... ok [INFO] [stdout] test install_skill_refuses_to_overwrite_without_force ... ok [INFO] [stdout] test install_skill_writes_each_host ... ok [INFO] [stdout] test install_skill_force_overwrites ... ok [INFO] [stdout] test help_lists_all_subcommands ... ok [INFO] [stdout] test forum_help_lists_subcommands ... ok [INFO] [stdout] test mocked::documents_read_runs_end_to_end ... ok [INFO] [stdout] test mocked::estimates_runs_end_to_end_against_mcp ... ok [INFO] [stdout] test logout_with_no_stored_tokens_succeeds ... ok [INFO] [stdout] test mocked::content_list_and_get_run_end_to_end ... ok [INFO] [stdout] test mocked::forum_search_renders_topic_ids_from_mcp ... ok [INFO] [stdout] test mocked::fundamentals_sends_structured_args ... ok [INFO] [stdout] test mocked::search_runs_end_to_end_against_mcp ... ok [INFO] [stdout] test mocked::call_generic_passes_kv_args_through ... ok [INFO] [stdout] test completions_generates_shell_script ... ok [INFO] [stdout] test mocked::call_list_runs_end_to_end_against_mcp ... ok [INFO] [stdout] test mocked::whoami_with_valid_token_reports_signed_in ... ok [INFO] [stdout] test uninstall_actually_removes_skill_files_when_present ... ok [INFO] [stdout] test uninstall_yes_clears_tokens_and_prints_rm_hint ... ok [INFO] [stdout] test uninstall_with_remove_skills_succeeds_when_none_installed ... ok [INFO] [stdout] test upgrade_against_nonexistent_repo_surfaces_error ... ok [INFO] [stdout] test upgrade_help_lists_check_only_and_force ... ok [INFO] [stdout] test version_prints_crate_version ... ok [INFO] [stdout] test whoami_with_no_tokens_reports_not_signed_in ... ok [INFO] [stdout] test search_without_login_prints_helpful_error ... ok [INFO] [stdout] test mocked::forum_topic_with_no_posts_reports_not_found ... ok [INFO] [stdout] test mocked::json_flag_emits_raw_tool_result ... ok [INFO] [stdout] test mocked::forum_cache_commands_are_graceful_without_a_cache ... ok [INFO] [stdout] test mocked::forum_topic_caches_then_cache_commands_read_it ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.39s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "909e47c8d175f16691a1556204e7b1a752b5959874efb579341a55d35b46dac7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "909e47c8d175f16691a1556204e7b1a752b5959874efb579341a55d35b46dac7", kill_on_drop: false }` [INFO] [stdout] 909e47c8d175f16691a1556204e7b1a752b5959874efb579341a55d35b46dac7