[INFO] cloning repository https://github.com/majiayu000/ccstats
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/majiayu000/ccstats" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmajiayu000%2Fccstats", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmajiayu000%2Fccstats'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f080c5464fd65c1714f82814437430f69035b165
[INFO] testing majiayu000/ccstats against 1.97.0-beta.6 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmajiayu000%2Fccstats" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/majiayu000/ccstats
[INFO] finished tweaking git repo https://github.com/majiayu000/ccstats
[INFO] tweaked toml for git repo https://github.com/majiayu000/ccstats written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/majiayu000/ccstats on toolchain 1.97.0-beta.6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/majiayu000/ccstats 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.97.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded cookie_store v0.22.0
[INFO] [stderr]   Downloaded clap v4.5.58
[INFO] [stderr]   Downloaded toml v1.0.0+spec-1.1.0
[INFO] [stderr]   Downloaded clap_builder v4.5.58
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 36a70eab10dd41a6ab485315d68a6d6f3b3b32afbb4b54e6f3cc0aa9c62e39d8
[INFO] running `Command { std: "docker" "start" "36a70eab10dd41a6ab485315d68a6d6f3b3b32afbb4b54e6f3cc0aa9c62e39d8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "36a70eab10dd41a6ab485315d68a6d6f3b3b32afbb4b54e6f3cc0aa9c62e39d8", 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" "36a70eab10dd41a6ab485315d68a6d6f3b3b32afbb4b54e6f3cc0aa9c62e39d8" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "36a70eab10dd41a6ab485315d68a6d6f3b3b32afbb4b54e6f3cc0aa9c62e39d8", 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" "36a70eab10dd41a6ab485315d68a6d6f3b3b32afbb4b54e6f3cc0aa9c62e39d8" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.181
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling cc v1.2.55
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling rustls v0.23.36
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling winnow v0.7.14
[INFO] [stderr]    Compiling clap_lex v1.0.0
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling serde_spanned v1.0.4
[INFO] [stderr]    Compiling toml_datetime v1.0.0+spec-1.1.0
[INFO] [stderr]    Compiling clap_builder v4.5.58
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling toml_writer v1.0.6+spec-1.1.0
[INFO] [stderr]    Compiling rayon v1.11.0
[INFO] [stderr]    Compiling hashlink v0.11.0
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling ureq-proto v0.5.3
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling libsqlite3-sys v0.37.0
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling toml_parser v1.0.7+spec-1.1.0
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling toml v1.0.0+spec-1.1.0
[INFO] [stderr]    Compiling comfy-table v7.2.2
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling clap v4.5.58
[INFO] [stderr]    Compiling chrono v0.4.43
[INFO] [stderr]    Compiling chrono-tz v0.10.4
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling ureq v3.2.0
[INFO] [stderr]    Compiling rusqlite v0.39.0
[INFO] [stderr]    Compiling ccstats v0.2.65 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 43.20s
[INFO] running `Command { std: "docker" "inspect" "36a70eab10dd41a6ab485315d68a6d6f3b3b32afbb4b54e6f3cc0aa9c62e39d8", 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" "36a70eab10dd41a6ab485315d68a6d6f3b3b32afbb4b54e6f3cc0aa9c62e39d8" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling getrandom v0.4.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling tempfile v3.25.0
[INFO] [stderr]    Compiling comfy-table v7.2.2
[INFO] [stderr]    Compiling ccstats v0.2.65 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 18.26s
[INFO] running `Command { std: "docker" "inspect" "36a70eab10dd41a6ab485315d68a6d6f3b3b32afbb4b54e6f3cc0aa9c62e39d8", 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" "36a70eab10dd41a6ab485315d68a6d6f3b3b32afbb4b54e6f3cc0aa9c62e39d8" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.22s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/ccstats-a5c9bfffe4dc74b2)
[INFO] [stdout] 
[INFO] [stdout] running 483 tests
[INFO] [stdout] test cli::args::tests::cli_source_wins_over_config ... ok
[INFO] [stdout] test cli::args::tests::cli_explicit_order_wins_over_config ... ok
[INFO] [stdout] test cli::args::tests::color_never_disables_color ... ok
[INFO] [stdout] test cli::args::tests::color_always_overrides_no_color_env ... ok
[INFO] [stdout] test cli::args::tests::config_breakdown_applies_when_cli_not_set ... ok
[INFO] [stdout] test cli::args::tests::config_compact_applies_when_cli_not_set ... ok
[INFO] [stdout] test cli::args::tests::config_cost_hide_applies_when_cli_not_set ... ok
[INFO] [stdout] test cli::args::tests::cli_boolean_flags_override_config_false ... ok
[INFO] [stdout] test cli::args::tests::cli_timezone_wins_over_config ... ok
[INFO] [stdout] test cli::args::tests::cli_explicit_cost_show_wins_over_config_no_cost ... ok
[INFO] [stdout] test cli::args::tests::config_debug_applies_when_cli_not_set ... ok
[INFO] [stdout] test cli::args::tests::cli_explicit_color_always_wins_over_config_no_color ... ok
[INFO] [stdout] test cli::args::tests::config_color_never_applies_when_cli_not_set ... ok
[INFO] [stdout] test cli::args::tests::config_no_color_applies_when_cli_not_set ... ok
[INFO] [stdout] test cli::args::tests::cli_locale_wins_over_config ... ok
[INFO] [stdout] test cli::args::tests::default_sort_order_is_asc ... ok
[INFO] [stdout] test cli::args::tests::default_show_cost_is_true ... ok
[INFO] [stdout] test cli::args::tests::config_locale_applies_when_cli_not_set ... ok
[INFO] [stdout] test cli::args::tests::config_no_cost_applies_when_cli_not_set ... ok
[INFO] [stdout] test cli::args::tests::config_strict_pricing_applies_when_cli_not_set ... ok
[INFO] [stdout] test cli::args::tests::config_order_applies_when_cli_not_set ... ok
[INFO] [stdout] test cli::args::tests::empty_config_changes_nothing ... ok
[INFO] [stdout] test cli::args::tests::monthly_budget_parses_amount ... ok
[INFO] [stdout] test cli::args::tests::config_offline_applies_when_cli_not_set ... ok
[INFO] [stdout] test cli::args::tests::cost_hide_enum_hides_cost ... ok
[INFO] [stdout] test cli::args::tests::no_color_flag_disables_color ... ok
[INFO] [stdout] test cli::args::tests::no_color_env_disables_color_in_auto_mode ... ok
[INFO] [stdout] test cli::commands::tests::parse_command_codex_sets_source_hint ... ok
[INFO] [stdout] test cli::commands::tests::parse_command_defaults_to_daily_without_source_hint ... ok
[INFO] [stdout] test cli::args::tests::config_timezone_applies_when_cli_not_set ... ok
[INFO] [stdout] test cli::args::tests::no_cost_flag_hides_cost ... ok
[INFO] [stdout] test cli::args::tests::output_format_uses_csv_flag ... ok
[INFO] [stdout] test cli::args::tests::output_format_defaults_to_table ... ok
[INFO] [stdout] test cli::commands::tests::parse_command_grok_sets_source_hint ... ok
[INFO] [stdout] test cli::commands::tests::parse_command_regular_keeps_no_source_hint ... ok
[INFO] [stdout] test cli::commands::tests::parse_command_sources_has_no_source_hint ... ok
[INFO] [stdout] test config::tests::test_default_config ... ok
[INFO] [stdout] test config::tests::test_deserialize_full_config ... ok
[INFO] [stdout] test config::tests::test_config_paths_non_empty ... ok
[INFO] [stdout] test config::tests::test_deserialize_invalid_enum_value ... ok
[INFO] [stdout] test config::tests::test_config_paths_contain_expected_filenames ... ok
[INFO] [stdout] test config::tests::test_deserialize_color_modes ... ok
[INFO] [stdout] test config::tests::test_deserialize_empty_toml ... ok
[INFO] [stdout] test config::tests::test_deserialize_enum_case_sensitive ... ok
[INFO] [stdout] test cli::args::tests::output_format_uses_json_flag ... ok
[INFO] [stdout] test config::tests::test_deserialize_all_booleans_true ... ok
[INFO] [stdout] test cli::args::tests::output_format_csv_wins_over_json_flag ... ok
[INFO] [stdout] test config::tests::test_deserialize_sort_order_asc ... ok
[INFO] [stdout] test config::tests::test_deserialize_partial_booleans ... ok
[INFO] [stdout] test config::tests::test_deserialize_cost_modes ... ok
[INFO] [stdout] test config::tests::test_deserialize_sort_order_desc ... ok
[INFO] [stdout] test config::tests::test_load_from_empty_paths_returns_default ... ok
[INFO] [stdout] test config::tests::test_load_from_nonexistent_path_returns_default ... ok
[INFO] [stdout] test config::tests::test_deserialize_string_fields ... ok
[INFO] [stdout] test core::aggregator::tests::aggregate_blocks_empty ... ok
[INFO] [stdout] test config::tests::test_deserialize_unknown_fields_ignored ... ok
[INFO] [stdout] test config::tests::test_load_priority_first_valid_wins ... ok
[INFO] [stdout] test config::tests::test_load_wrong_field_type_returns_error ... ok
[INFO] [stdout] test config::tests::test_load_invalid_toml_returns_error ... ok
[INFO] [stdout] test config::tests::test_load_from_valid_file ... ok
[INFO] [stdout] test core::aggregator::tests::aggregate_daily_empty ... ok
[INFO] [stdout] test core::aggregator::tests::aggregate_daily_single_entry ... ok
[INFO] [stdout] test core::aggregator::tests::aggregate_daily_same_model_accumulates ... ok
[INFO] [stdout] test core::aggregator::tests::aggregate_blocks_groups_by_5h_window ... ok
[INFO] [stdout] test core::aggregator::tests::aggregate_projects_merges_sessions ... ok
[INFO] [stdout] test core::aggregator::tests::aggregate_projects_empty ... ok
[INFO] [stdout] test core::aggregator::tests::aggregate_blocks_sorted_chronologically ... ok
[INFO] [stdout] test core::aggregator::tests::aggregate_daily_multiple_days ... ok
[INFO] [stdout] test core::aggregator::tests::aggregate_daily_same_day_different_models ... ok
[INFO] [stdout] test core::aggregator::tests::aggregate_sessions_model_breakdown ... ok
[INFO] [stdout] test core::aggregator::tests::aggregate_sessions_multiple_sessions ... ok
[INFO] [stdout] test core::aggregator::tests::aggregate_projects_sorted_by_total_tokens_desc ... ok
[INFO] [stdout] test config::tests::test_load_skips_nonexistent_tries_next ... ok
[INFO] [stdout] test core::aggregator::tests::aggregate_sessions_single_session ... ok
[INFO] [stdout] test core::aggregator::tests::aggregate_sessions_tracks_min_max_timestamps ... ok
[INFO] [stdout] test core::aggregator::tests::format_project_name_empty ... ok
[INFO] [stdout] test core::aggregator::tests::format_project_name_encoded_path ... ok
[INFO] [stdout] test core::aggregator::tests::format_project_name_leading_dashes ... ok
[INFO] [stdout] test core::aggregator::tests::format_project_name_simple ... ok
[INFO] [stdout] test core::aggregator::tests::format_project_name_unix_path ... ok
[INFO] [stdout] test core::aggregator::tests::get_block_start_boundaries ... ok
[INFO] [stdout] test config::tests::test_load_priority_invalid_config_does_not_fall_back ... ok
[INFO] [stdout] test core::aggregator::tests::format_project_name_with_backslash ... ok
[INFO] [stdout] test core::aggregator::tests::aggregate_blocks_skips_missing_timestamps ... ok
[INFO] [stdout] test core::aggregator::tests::aggregate_projects_single_project ... ok
[INFO] [stdout] test core::dedup::tests::source_wide_message_ids_ignore_session_scope ... ok
[INFO] [stdout] test core::aggregator::tests::merge_day_stats::disjoint_dates ... ok
[INFO] [stdout] test core::dedup::tests::test_deduplicate_all_duplicates_all_completed ... ok
[INFO] [stdout] test core::dedup::tests::test_dedup_accumulator_merge ... ok
[INFO] [stdout] test core::aggregator::tests::merge_day_stats::overlapping_dates_accumulates ... ok
[INFO] [stdout] test core::aggregator::tests::merge_day_stats::different_models_preserved ... ok
[INFO] [stdout] test core::aggregator::tests::get_block_start_preserves_date_and_offset ... ok
[INFO] [stdout] test core::aggregator::tests::aggregate_sessions_empty ... ok
[INFO] [stdout] test core::dedup::tests::test_deduplicate_empty_input ... ok
[INFO] [stdout] test core::dedup::tests::test_deduplicate_fallback_to_latest ... ok
[INFO] [stdout] test core::dedup::tests::test_deduplicate_keeps_completed ... ok
[INFO] [stdout] test cli::args::tests::config_source_applies_when_cli_not_set ... ok
[INFO] [stdout] test core::dedup::tests::test_deduplicate_mixed_id_and_no_id ... ok
[INFO] [stdout] test core::dedup::tests::test_deduplicate_no_id_with_stop ... ok
[INFO] [stdout] test core::dedup::tests::test_deduplicate_multiple_distinct_ids ... ok
[INFO] [stdout] test core::dedup::tests::test_deduplicate_no_id_without_stop_dropped ... ok
[INFO] [stdout] test core::dedup::tests::test_deduplicate_single_entry ... ok
[INFO] [stdout] test core::tool_aggregator::tests::aggregate_deduplicates_repeated_tool_identity ... ok
[INFO] [stdout] test core::dedup::tests::test_deduplicate_same_timestamp_completed_wins ... ok
[INFO] [stdout] test core::tool_aggregator::tests::aggregate_empty ... ok
[INFO] [stdout] test core::types::tests::date_filter_both_bounds ... ok
[INFO] [stdout] test core::types::tests::date_filter_single_day_range ... ok
[INFO] [stdout] test core::types::tests::date_filter_until_only ... ok
[INFO] [stdout] test core::tool_aggregator::tests::aggregate_multiple_tools_sorted_by_count ... ok
[INFO] [stdout] test core::types::tests::date_filter_no_bounds ... ok
[INFO] [stdout] test core::types::tests::stats_add_accumulates_all_fields ... ok
[INFO] [stdout] test core::types::tests::stats_add_to_default ... ok
[INFO] [stdout] test core::types::tests::stats_default_all_zero ... ok
[INFO] [stdout] test core::types::tests::stats_total_tokens_excludes_count_and_skipped ... ok
[INFO] [stdout] test core::types::tests::date_filter_since_only ... ok
[INFO] [stdout] test core::types::tests::day_stats_add_multiple_models ... ok
[INFO] [stdout] test core::types::tests::stats_total_tokens_zero_when_default ... ok
[INFO] [stdout] test core::tool_aggregator::tests::aggregate_single_tool ... ok
[INFO] [stdout] test output::blocks::tests::output_block_json_models_sorted_alphabetically ... ok
[INFO] [stdout] test output::blocks::tests::output_block_json_single_block ... ok
[INFO] [stdout] test output::blocks::tests::output_block_json_sorts_asc ... ok
[INFO] [stdout] test core::types::tests::day_stats_add_single_model ... ok
[INFO] [stdout] test core::types::tests::raw_entry_to_stats ... ok
[INFO] [stdout] test core::types::tests::stats_total_tokens_sums_five_fields ... ok
[INFO] [stdout] test output::blocks::tests::output_block_json_sorts_desc ... ok
[INFO] [stdout] test core::types::tests::day_stats_add_same_model_twice ... ok
[INFO] [stdout] test error::tests::app_error_display_date ... ok
[INFO] [stdout] test error::tests::app_error_display_locale ... ok
[INFO] [stdout] test output::csv::csv_tests::block_csv_structure ... ok
[INFO] [stdout] test output::csv::csv_tests::breakdown_csv_empty_data ... ok
[INFO] [stdout] test error::tests::app_error_display_timezone ... ok
[INFO] [stdout] test error::tests::app_error_from_jq_error ... ok
[INFO] [stdout] test error::tests::jq_error_filter ... ok
[INFO] [stdout] test error::tests::jq_error_not_found ... ok
[INFO] [stdout] test output::blocks::tests::output_block_json_empty_input ... ok
[INFO] [stdout] test output::blocks::tests::output_block_json_includes_cache_tokens ... ok
[INFO] [stdout] test output::blocks::tests::output_block_json_includes_cost_when_requested ... ok
[INFO] [stdout] test core::aggregator::tests::merge_day_stats::empty_source ... ok
[INFO] [stdout] test config::tests::test_deserialize_wrong_type ... ok
[INFO] [stdout] test output::csv::csv_tests::csv_escape_comma ... ok
[INFO] [stdout] test output::csv::csv_tests::breakdown_csv_with_cost ... ok
[INFO] [stdout] test output::csv::csv_tests::csv_escape_plain ... ok
[INFO] [stdout] test output::csv::csv_tests::csv_escape_quotes ... ok
[INFO] [stdout] test output::csv::csv_tests::breakdown_csv_one_row_per_model ... ok
[INFO] [stdout] test output::csv::csv_tests::csv_float_and_cost_handle_nan ... ok
[INFO] [stdout] test output::csv::csv_tests::breakdown_csv_weekly_aggregation ... ok
[INFO] [stdout] test output::csv::csv_tests::breakdown_csv_header_includes_model ... ok
[INFO] [stdout] test output::csv::csv_tests::empty_data_returns_header_only ... ok
[INFO] [stdout] test output::csv::csv_tests::period_csv_sort_desc ... ok
[INFO] [stdout] test output::csv::csv_tests::period_csv_converts_cost_when_currency_is_set ... ok
[INFO] [stdout] test output::csv::csv_tests::period_csv_daily_no_cost ... ok
[INFO] [stdout] test output::csv::csv_tests::period_csv_daily_with_cost ... ok
[INFO] [stdout] test output::csv::csv_tests::project_csv_structure ... ok
[INFO] [stdout] test output::budget::tests::add_monthly_budget_to_json_attaches_budget_object ... ok
[INFO] [stdout] test output::budget::tests::monthly_budget_projects_partial_month ... ok
[INFO] [stdout] test output::csv::csv_tests::session_csv_structure ... ok
[INFO] [stdout] test output::format::tests::compare_cost_zero_and_negative ... ok
[INFO] [stdout] test output::csv::csv_tests::session_csv_includes_reasoning_and_cache_tokens ... ok
[INFO] [stdout] test output::format::tests::cost_json_value_nan_is_null ... ok
[INFO] [stdout] test output::format::tests::cost_json_value_normal ... ok
[INFO] [stdout] test output::format::tests::compare_cost_normal_values ... ok
[INFO] [stdout] test output::format::tests::format_compact_units ... ok
[INFO] [stdout] test output::format::tests::compare_cost_nan_handling ... ok
[INFO] [stdout] test output::format::tests::format_compact_with_de_locale ... ok
[INFO] [stdout] test output::format::tests::format_cost_handles_nan ... ok
[INFO] [stdout] test output::format::tests::format_number_negative ... ok
[INFO] [stdout] test output::format::tests::format_number_with_commas ... ok
[INFO] [stdout] test output::format::tests::from_locale_none_returns_default ... ok
[INFO] [stdout] test output::format::tests::from_locale_de_uses_dot_separator ... ok
[INFO] [stdout] test output::format::tests::from_locale_fr_uses_space_separator ... ok
[INFO] [stdout] test output::format::tests::from_locale_unsupported_returns_error ... ok
[INFO] [stdout] test output::format::tests::from_locale_with_region_suffix ... ok
[INFO] [stdout] test output::json::tests::sort_output_desc ... ok
[INFO] [stdout] test output::json::tests::output_daily_json_with_breakdown ... ok
[INFO] [stdout] test output::json::tests::output_monthly_json_uses_month_key ... ok
[INFO] [stdout] test output::json::tests::output_daily_json_with_cost ... ok
[INFO] [stdout] test output::json::tests::output_weekly_json_aggregates ... ok
[INFO] [stdout] test output::json::tests::period_label_mapping ... ok
[INFO] [stdout] test output::json::tests::sort_models_breakdown_by_cost_desc ... ok
[INFO] [stdout] test output::json::tests::sort_models_breakdown_by_name_when_no_cost ... ok
[INFO] [stdout] test output::json::tests::sort_output_asc ... ok
[INFO] [stdout] test output::period::tests::aggregate_by_month_cross_year_boundary ... ok
[INFO] [stdout] test output::json::tests::output_daily_json_structure ... ok
[INFO] [stdout] test output::format::tests::from_locale_empty_returns_default ... ok
[INFO] [stdout] test output::period::tests::aggregate_by_month_merges_same_month ... ok
[INFO] [stdout] test output::period::tests::aggregate_by_week_cross_month_boundary ... ok
[INFO] [stdout] test output::period::tests::aggregate_by_week_cross_year_boundary ... ok
[INFO] [stdout] test output::period::tests::aggregate_by_week_different_weeks_stay_separate ... ok
[INFO] [stdout] test output::period::tests::aggregate_by_week_merges_same_week ... ok
[INFO] [stdout] test output::period::tests::aggregate_empty_input ... ok
[INFO] [stdout] test output::period::tests::aggregate_preserves_all_stat_fields ... ok
[INFO] [stdout] test output::period::tests::aggregate_merges_model_breakdown ... ok
[INFO] [stdout] test output::period::tests::period_key_month_returns_yyyy_mm ... ok
[INFO] [stdout] test output::period::tests::period_key_week_returns_monday ... ok
[INFO] [stdout] test output::period::tests::week_start_cross_month_boundary ... ok
[INFO] [stdout] test output::period::tests::week_start_cross_year_boundary ... ok
[INFO] [stdout] test output::period::tests::week_start_invalid_date_returns_input ... ok
[INFO] [stdout] test output::period::tests::week_start_leap_year_feb29 ... ok
[INFO] [stdout] test output::period::tests::week_start_returns_monday ... ok
[INFO] [stdout] test output::project::tests::output_project_json_empty ... ok
[INFO] [stdout] test output::project::tests::output_project_json_single_project ... ok
[INFO] [stdout] test output::session::tests::compare_session_last_timestamp_equal ... ok
[INFO] [stdout] test output::project::tests::output_project_json_models_sorted ... ok
[INFO] [stdout] test output::project::tests::output_project_json_with_cost ... ok
[INFO] [stdout] test output::session::tests::compare_session_last_timestamp_uses_absolute_time ... ok
[INFO] [stdout] test output::session::tests::extract_date_fallback_on_invalid_timestamp ... ok
[INFO] [stdout] test output::session::tests::extract_date_valid_utc_timestamp ... ok
[INFO] [stdout] test output::session::tests::output_session_json_empty ... ok
[INFO] [stdout] test output::period::tests::aggregate_single_day_input ... ok
[INFO] [stdout] test output::project::tests::output_project_json_sort_order ... ok
[INFO] [stdout] test output::period::tests::period_key_day_returns_as_is ... ok
[INFO] [stdout] test output::period::tests::period_key_month_short_string_fallback ... ok
[INFO] [stdout] test output::session::tests::output_session_json_includes_cost_when_requested ... ok
[INFO] [stdout] test output::session::tests::output_session_json_fields_present ... ok
[INFO] [stdout] test output::session::tests::output_session_json_sorts_by_timestamp ... ok
[INFO] [stdout] test output::session::tests::output_session_json_models_sorted ... ok
[INFO] [stdout] test output::session::tests::extract_date_no_t_separator ... ok
[INFO] [stdout] test output::session::tests::truncate_session_id_exact_boundary ... ok
[INFO] [stdout] test output::session::tests::truncate_session_id_ascii ... ok
[INFO] [stdout] test output::session::tests::compare_session_last_timestamp_invalid_falls_back_to_string ... ok
[INFO] [stdout] test output::session::tests::truncate_session_id_small_max_len ... ok
[INFO] [stdout] test output::session::tests::compare_session_valid_before_invalid ... ok
[INFO] [stdout] test output::statusline::tests::statusline_json_aggregates_multiple_days ... ok
[INFO] [stdout] test output::statusline::tests::statusline_json_converts_cost_when_currency_is_set ... ok
[INFO] [stdout] test output::statusline::tests::statusline_json_formatted_uses_compact ... ok
[INFO] [stdout] test output::table::table_tests::add_breakdown_rows_returns_cost ... ok
[INFO] [stdout] test output::statusline::tests::statusline_json_total_includes_reasoning_tokens ... ok
[INFO] [stdout] test output::statusline::tests::statusline_json_empty_stats ... ok
[INFO] [stdout] test output::statusline::tests::statusline_json_zero_reasoning_still_present ... ok
[INFO] [stdout] test output::statusline::tests::statusline_json_cost_is_valid_json_number ... ok
[INFO] [stdout] test output::table::table_tests::add_compact_rows_weekly_no_calls ... ok
[INFO] [stdout] test output::table::table_tests::add_breakdown_rows_multi_model ... ok
[INFO] [stdout] test output::table::table_tests::add_standard_rows_returns_cost ... ok
[INFO] [stdout] test output::table::table_tests::add_compact_rows_returns_cost ... ok
[INFO] [stdout] test output::table::table_tests::add_total_row_standard_mode ... ok
[INFO] [stdout] test output::table::table_tests::add_total_row_compact_mode ... ok
[INFO] [stdout] test output::table::table_tests::header_compact_daily_with_cost ... ok
[INFO] [stdout] test output::table::table_tests::header_breakdown_monthly_minimal ... ok
[INFO] [stdout] test output::table::table_tests::header_breakdown_daily_all_columns ... ok
[INFO] [stdout] test output::table::table_tests::header_compact_weekly_no_calls ... ok
[INFO] [stdout] test output::table::table_tests::add_total_row_breakdown_mode_omits_total_column ... ok
[INFO] [stdout] test output::table::table_tests::add_total_row_compact_no_cost_no_calls ... ok
[INFO] [stdout] test output::table::table_tests::period_config_day ... ok
[INFO] [stdout] test output::table::table_tests::period_config_month ... ok
[INFO] [stdout] test output::table::table_tests::header_standard_daily_all_columns ... ok
[INFO] [stdout] test output::table::table_tests::header_standard_weekly_minimal ... ok
[INFO] [stdout] test output::table::table_tests::sort_keys_asc ... ok
[INFO] [stdout] test output::session::tests::parse_timestamp_millis_valid_rfc3339 ... ok
[INFO] [stdout] test output::session::tests::truncate_session_id_utf8_boundary_safe ... ok
[INFO] [stdout] test output::tools::tests::csv_output_format ... ok
[INFO] [stdout] test output::session::tests::parse_timestamp_millis_invalid_input ... ok
[INFO] [stdout] test output::tools::tests::format_calls_with_commas ... ok
[INFO] [stdout] test output::tools::tests::empty_summary ... ok
[INFO] [stdout] test output::tools::tests::json_output_structure ... ok
[INFO] [stdout] test output::top::tests::csv_escapes_names_with_commas ... ok
[INFO] [stdout] test output::table::table_tests::sort_keys_desc ... ok
[INFO] [stdout] test output::table::table_tests::period_config_week ... ok
[INFO] [stdout] test output::top::tests::csv_includes_local_cost_when_currency_is_set ... ok
[INFO] [stdout] test output::top::tests::empty_rows_produce_header_only_csv ... ok
[INFO] [stdout] test output::top::tests::json_includes_dimension_and_basis ... ok
[INFO] [stdout] test output::top::tests::json_share_basis_falls_back_to_tokens ... ok
[INFO] [stdout] test output::top::tests::share_basis_uses_cost_when_all_known ... ok
[INFO] [stdout] test output::top::tests::sort_rows_pushes_nan_costs_to_end ... ok
[INFO] [stdout] test pricing::cache::tests::cache_paths_use_legacy_as_explicit_fallback ... ok
[INFO] [stdout] test pricing::cache::tests::cache_paths_prefer_platform_cache_dir ... ok
[INFO] [stdout] test output::top::tests::rank_by_model_aggregates_across_days ... ok
[INFO] [stdout] test output::top::tests::share_basis_uses_tokens_when_costs_unknown ... ok
[INFO] [stdout] test output::top::tests::limit_caps_the_displayed_count ... ok
[INFO] [stdout] test pricing::currency::tests::converter_format_with_rate ... ok
[INFO] [stdout] test pricing::currency::tests::currency_code_accessor ... ok
[INFO] [stdout] test pricing::currency::tests::currency_symbol_known ... ok
[INFO] [stdout] test pricing::currency::tests::currency_symbol_unknown_uses_code ... ok
[INFO] [stdout] test pricing::currency::tests::usd_converter_handles_nan ... ok
[INFO] [stdout] test pricing::currency::tests::usd_converter_is_identity ... ok
[INFO] [stdout] test pricing::db::tests::attach_costs_computes_per_item ... ok
[INFO] [stdout] test pricing::db::tests::attach_costs_empty_slice ... ok
[INFO] [stdout] test pricing::db::tests::calculate_cost_with_cache ... ok
[INFO] [stdout] test pricing::db::tests::calculate_cost_basic ... ok
[INFO] [stdout] test pricing::db::tests::calculate_cost_with_reasoning_tokens ... ok
[INFO] [stdout] test pricing::db::tests::calculate_cost_zero_tokens ... ok
[INFO] [stdout] test pricing::db::tests::default_pricing_db_has_empty_models ... ok
[INFO] [stdout] test pricing::db::tests::fetched_pricing_remains_usable_after_cache_save_failure ... ok
[INFO] [stdout] test pricing::db::tests::get_pricing_caches_resolved_result ... ok
[INFO] [stdout] test pricing::db::tests::get_pricing_caches_unknown_in_strict_mode ... ok
[INFO] [stdout] test pricing::db::tests::get_pricing_fallback_for_unknown_model ... ok
[INFO] [stdout] test pricing::db::tests::offline_malformed_cache_fails_closed ... ok
[INFO] [stdout] test pricing::db::tests::offline_missing_cache_keeps_default_pricing_behavior ... ok
[INFO] [stdout] test pricing::db::tests::pricing_source_tracks_stale_cache_known_model ... ok
[INFO] [stdout] test pricing::db::tests::pricing_source_tracks_live_known_model ... ok
[INFO] [stdout] test pricing::db::tests::pricing_source_combines_known_and_fallback_as_mixed ... ok
[INFO] [stdout] test pricing::db::tests::strict_mode_marks_unknown_model_as_nan_cost ... ok
[INFO] [stdout] test pricing::db::tests::sum_model_costs_multiple_models ... ok
[INFO] [stdout] test pricing::db::tests::sum_model_costs_empty_map ... ok
[INFO] [stdout] test pricing::resolver::fallback::tests::test_fallback_codex ... ok
[INFO] [stdout] test pricing::resolver::fallback::tests::test_fallback_case_insensitive ... ok
[INFO] [stdout] test pricing::resolver::fallback::tests::test_fallback_gpt4 ... ok
[INFO] [stdout] test pricing::resolver::fallback::tests::test_fallback_gpt5 ... ok
[INFO] [stdout] test pricing::resolver::fallback::tests::test_fallback_gpt5_codex ... ok
[INFO] [stdout] test pricing::db::tests::sum_model_costs_returns_nan_when_all_unknown ... ok
[INFO] [stdout] test pricing::db::tests::cache_read_distinguishes_missing_from_malformed_for_db_load ... ok
[INFO] [stdout] test pricing::db::tests::sum_model_costs_skips_unknown_keeps_known ... ok
[INFO] [stdout] test pricing::cache::tests::load_raw_cache_returns_missing_for_absent_cache ... ok
[INFO] [stdout] test pricing::resolver::fallback::tests::test_fallback_grok_4_3 ... ok
[INFO] [stdout] test pricing::resolver::fallback::tests::test_fallback_gpt5_2_codex ... ok
[INFO] [stdout] test pricing::resolver::fallback::tests::test_fallback_gpt5_4_mini ... ok
[INFO] [stdout] test pricing::resolver::fallback::tests::test_fallback_gpt5_codex_mini ... ok
[INFO] [stdout] test pricing::resolver::fallback::tests::test_fallback_grok_build ... ok
[INFO] [stdout] test pricing::resolver::fallback::tests::test_fallback_haiku ... ok
[INFO] [stdout] test pricing::resolver::fallback::tests::test_fallback_opus ... ok
[INFO] [stdout] test pricing::resolver::fallback::tests::test_fallback_opus_4_5 ... ok
[INFO] [stdout] test pricing::resolver::fallback::tests::test_fallback_sonnet ... ok
[INFO] [stdout] test pricing::resolver::parse::tests::test_parse_anthropic_dot_prefix_normalized ... ok
[INFO] [stdout] test pricing::resolver::parse::tests::test_parse_claude_model ... ok
[INFO] [stdout] test pricing::resolver::fallback::tests::test_fallback_opus_4_5_dot_variant ... ok
[INFO] [stdout] test pricing::resolver::parse::tests::test_parse_cn_vendors_normalized_and_kept ... ok
[INFO] [stdout] test pricing::resolver::parse::tests::test_parse_filters_non_claude_non_openai ... ok
[INFO] [stdout] test pricing::resolver::parse::tests::test_parse_missing_cost_fields_default_to_zero ... ok
[INFO] [stdout] test pricing::cache::tests::load_raw_cache_reads_legacy_when_preferred_absent ... ok
[INFO] [stdout] test pricing::resolver::parse::tests::test_parse_openai_model ... ok
[INFO] [stdout] test pricing::cache::tests::load_raw_cache_reports_malformed_cache ... ok
[INFO] [stdout] test pricing::cache::tests::load_raw_cache_if_fresh_reads_legacy_when_preferred_absent ... ok
[INFO] [stdout] test pricing::cache::tests::load_raw_cache_if_fresh_reports_malformed_cache ... ok
[INFO] [stdout] test pricing::cache::tests::load_raw_cache_prefers_current_when_both_exist ... ok
[INFO] [stdout] test pricing::cache::tests::save_raw_cache_atomically_replaces_existing_cache ... ok
[INFO] [stdout] test pricing::resolver::fallback::tests::test_fallback_unknown_returns_none ... ok
[INFO] [stdout] test pricing::resolver::parse::tests::test_parse_gpt_prefix_without_openai_slash ... ok
[INFO] [stdout] test pricing::resolver::parse::tests::test_parse_codex_model ... ok
[INFO] [stdout] test pricing::resolver::parse::tests::test_parse_reasoning_cost_alternate_key ... ok
[INFO] [stdout] test pricing::cache::tests::save_raw_cache_writes_current_path_not_legacy ... ok
[INFO] [stdout] test pricing::resolver::parse::tests::test_parse_reasoning_cost_primary_key ... ok
[INFO] [stdout] test pricing::resolver::parse::tests::test_parse_reasoning_cost_fallback ... ok
[INFO] [stdout] test pricing::resolver::parse::tests::test_parse_xai_grok_build_alias ... ok
[INFO] [stdout] test pricing::resolver::resolve::tests::test_resolve_case_insensitive_exact ... ok
[INFO] [stdout] test pricing::resolver::resolve::tests::test_resolve_claude_prefix_fallback ... ok
[INFO] [stdout] test pricing::resolver::resolve::tests::test_resolve_empty_model_string ... ok
[INFO] [stdout] test pricing::resolver::resolve::tests::test_resolve_ambiguous_dated_variants_return_none ... ok
[INFO] [stdout] test pricing::resolver::resolve::tests::test_resolve_exact_match ... ok
[INFO] [stdout] test pricing::resolver::resolve::tests::test_resolve_exact_match_takes_priority_over_partial ... ok
[INFO] [stdout] test pricing::resolver::resolve::tests::test_resolve_dated_claude_canonical_base_variant ... ok
[INFO] [stdout] test pricing::resolver::resolve::tests::test_resolve_partial_substring_in_model_name ... ok
[INFO] [stdout] test pricing::resolver::resolve::tests::test_resolve_provider_normalized_ambiguity_returns_none ... ok
[INFO] [stdout] test pricing::resolver::resolve::tests::test_resolve_provider_prefix_stripping ... ok
[INFO] [stdout] test pricing::resolver::resolve::tests::test_resolve_with_claude_prefix ... ok
[INFO] [stdout] test pricing::resolver::resolve::tests::test_resolve_substring_model_name_in_query_returns_none ... ok
[INFO] [stdout] test pricing::resolver::resolve::tests::test_resolve_short_substring_returns_none ... ok
[INFO] [stdout] test pricing::resolver::parse::tests::test_parse_xai_model ... ok
[INFO] [stdout] test pricing::resolver::resolve::tests::test_resolve_dated_openai_base_variant ... ok
[INFO] [stdout] test pricing::resolver::resolve::tests::test_resolve_glm_dot_alias_prefers_p_version ... ok
[INFO] [stdout] test pricing::resolver::resolve::tests::test_resolve_empty_models_map ... ok
[INFO] [stdout] test pricing::types::tests::dot_version_variant_converts_p_between_digits ... ok
[INFO] [stdout] test pricing::types::tests::dot_version_variant_leaves_others_unchanged ... ok
[INFO] [stdout] test pricing::resolver::resolve::tests::test_resolve_anthropic_slash_provider_prefix_stripping ... ok
[INFO] [stdout] test pricing::resolver::resolve::tests::test_resolve_no_match ... ok
[INFO] [stdout] test pricing::resolver::resolve::tests::test_resolve_approved_dated_claude_variant ... ok
[INFO] [stdout] test sdk::tests::usage_source_accepts_registry_names_and_aliases ... ok
[INFO] [stdout] test sdk::batch::tests::batch_ranges_reject_empty_list ... ok
[INFO] [stdout] test sdk::batch::tests::batch_ranges_reject_reversed_date_range ... ok
[INFO] [stdout] test sdk::batch::tests::cli_config_fills_multi_summary_defaults ... ok
[INFO] [stdout] test sdk::batch::tests::range_membership_honors_unbounded_sides ... ok
[INFO] [stdout] test sdk::batch::tests::range_membership_keeps_requested_days_and_excludes_gaps ... ok
[INFO] [stdout] test sdk::tests::cli_config_fills_sdk_summary_defaults ... ok
[INFO] [stdout] test sdk::tests::explicit_sdk_summary_options_win_over_cli_config ... ok
[INFO] [stdout] test sdk::tests::model_summaries_use_model_name_as_equal_cost_tiebreaker ... ok
[INFO] [stdout] test sdk::tests::requested_currency_requires_available_rate ... ok
[INFO] [stdout] test sdk::tests::usage_range_rejects_reversed_dates ... ok
[INFO] [stdout] test sdk::tests::registry_concrete_sources_match_sdk_usage_sources ... ok
[INFO] [stdout] test sdk::tests::usage_range_this_week_starts_on_monday ... ok
[INFO] [stdout] test source::claude::parser::tests::test_derive_project_path_falls_back_to_immediate_parent ... ok
[INFO] [stdout] test source::claude::parser::tests::test_parse_entry_no_message_returns_none ... ok
[INFO] [stdout] test source::claude::parser::tests::test_parse_entry_no_model_uses_unknown ... ok
[INFO] [stdout] test source::claude::parser::tests::test_derive_project_path_uses_project_segment_for_subagent_logs ... ok
[INFO] [stdout] test source::claude::parser::tests::test_normalize_anthropic_claude_no_date ... ok
[INFO] [stdout] test source::claude::parser::tests::test_normalize_no_dash ... ok
[INFO] [stdout] test source::claude::parser::tests::test_normalize_no_prefix_no_date ... ok
[INFO] [stdout] test source::claude::parser::tests::test_normalize_non_digit_suffix_not_stripped ... ok
[INFO] [stdout] test source::claude::parser::tests::test_normalize_only_anthropic_prefix ... ok
[INFO] [stdout] test source::claude::parser::tests::test_normalize_short_suffix_not_stripped ... ok
[INFO] [stdout] test source::claude::parser::tests::test_normalize_strips_anthropic_and_claude_prefix_and_date ... ok
[INFO] [stdout] test source::claude::parser::tests::test_normalize_strips_claude_prefix_and_date ... ok
[INFO] [stdout] test source::claude::parser::tests::test_parse_entry_cache_tokens ... ok
[INFO] [stdout] test source::claude::parser::tests::test_parse_entry_clamps_negative_tokens_to_zero ... ok
[INFO] [stdout] test source::claude::parser::tests::test_parse_entry_empty_model_filtered ... ok
[INFO] [stdout] test source::claude::parser::tests::test_parse_entry_invalid_timestamp_returns_none ... ok
[INFO] [stdout] test source::claude::parser::tests::test_parse_entry_no_timestamp_returns_none ... ok
[INFO] [stdout] test source::claude::parser::tests::test_parse_entry_no_usage_returns_none ... ok
[INFO] [stdout] test source::claude::parser::tests::test_parse_entry_none_tokens_default_to_zero ... ok
[INFO] [stdout] test source::claude::parser::tests::test_parse_entry_valid ... ok
[INFO] [stdout] test source::codex::parser::parser_tests::test_cached_input_both_none_returns_zero ... ok
[INFO] [stdout] test source::claude::tool_parser::tests::empty_file ... ok
[INFO] [stdout] test source::codex::parser::parser_tests::test_cached_input_prefers_cached_input_tokens ... ok
[INFO] [stdout] test source::claude::tool_parser::tests::skip_non_tool_use_lines ... ok
[INFO] [stdout] test source::claude::tool_parser::tests::parse_multiple_tools_in_one_message ... ok
[INFO] [stdout] test source::claude::tool_parser::tests::parse_direct_tool_use ... ok
[INFO] [stdout] test source::claude::tool_parser::tests::parse_progress_tool_use ... ok
[INFO] [stdout] test source::claude::parser::tests::test_parse_entry_synthetic_model_filtered ... ok
[INFO] [stdout] test source::codex::parser::parser_tests::test_extract_model_falls_back_to_model_name ... ok
[INFO] [stdout] test source::codex::parser::parser_tests::test_cached_input_falls_back_to_cache_read ... ok
[INFO] [stdout] test source::codex::parser::parser_tests::test_extract_model_all_none_returns_none ... ok
[INFO] [stdout] test source::codex::parser::parser_tests::test_extract_model_empty_strings_skipped ... ok
[INFO] [stdout] test source::codex::parser::parser_tests::test_is_empty_default ... ok
[INFO] [stdout] test source::codex::parser::parser_tests::test_extract_model_falls_back_to_metadata ... ok
[INFO] [stdout] test source::codex::parser::parser_tests::test_extract_model_falls_back_to_payload_model ... ok
[INFO] [stdout] test source::codex::parser::parser_tests::test_subtract_none_fields_treated_as_zero ... ok
[INFO] [stdout] test source::claude::tool_parser::tests::repeated_tool_use_records_are_deduplicated_by_identity ... ok
[INFO] [stdout] test source::codex::parser::parser_tests::test_usage_totals_duplicate_when_complete_vector_matches ... ok
[INFO] [stdout] test source::cursor::parser::tests::entry_from_bubble_skips_all_negative_token_counts ... ok
[INFO] [stdout] test source::codex::parser::parser_tests::test_usage_totals_not_duplicate_when_component_grows_with_zero_total ... ok
[INFO] [stdout] test source::codex::parser::parser_tests::test_subtract_clamps_negative_to_zero ... ok
[INFO] [stdout] test source::codex::parser::parser_tests::test_is_empty_with_cached_only ... ok
[INFO] [stdout] test source::cursor::parser::tests::entry_from_generation_clamps_negative_token_counts ... ok
[INFO] [stdout] test source::cursor::parser::tests::entry_from_generation_skips_all_negative_token_counts ... ok
[INFO] [stdout] test source::cursor::parser::tests::entry_from_bubble_reads_token_counts ... ok
[INFO] [stdout] test source::codex::parser::parser_tests::test_extract_model_no_info_uses_payload ... ok
[INFO] [stdout] test source::codex::parser::parser_tests::test_extract_model_from_info_model ... ok
[INFO] [stdout] test source::codex::parser::parser_tests::test_is_empty_with_input ... ok
[INFO] [stdout] test source::cursor::parser::tests::entry_from_bubble_uses_composer_model_fallback ... ok
[INFO] [stdout] test source::codex::parser::parser_tests::test_is_empty_with_reasoning_only ... ok
[INFO] [stdout] test sdk::batch::tests::load_daily_ranges_discovers_and_parses_source_once ... ok
[INFO] [stdout] test source::grok::parser::tests::percent_decode_decodes_encoded_project_path ... ok
[INFO] [stdout] test source::cursor::parser::tests::token_counts_skips_zero_records ... ok
[INFO] [stdout] test source::cursor::parser::tests::entry_from_bubble_clamps_negative_token_counts ... ok
[INFO] [stdout] test source::loader::loader_tool_tests::load_tool_calls_dispatches_through_source_trait ... ok
[INFO] [stdout] test source::cursor::parser::tests::open_readonly_sets_busy_timeout ... ok
[INFO] [stdout] test source::grok::parser::tests::parse_grok_signal_file_prefers_summary_project_path ... ok
[INFO] [stdout] test source::grok::parser::tests::parse_grok_signal_file_reads_context_tokens ... ok
[INFO] [stdout] test source::loader::loader_tool_tests::load_tool_calls_returns_empty_without_capability ... ok
[INFO] [stdout] test source::loader::tests::filter_entries_empty_input ... ok
[INFO] [stdout] test source::loader::tests::filter_entries_no_filter_passes_all ... ok
[INFO] [stdout] test source::loader::tests::filter_entries_since_excludes_earlier ... ok
[INFO] [stdout] test source::loader::tests::filter_entries_until_excludes_later ... ok
[INFO] [stdout] test source::codex::parser::parser_tests::test_subtract_normal ... ok
[INFO] [stdout] test source::loader::tests::merge_session_stats_accumulates_tokens ... ok
[INFO] [stdout] test source::loader::tests::merge_session_stats_fills_empty_project_path ... ok
[INFO] [stdout] test source::loader::tests::merge_session_stats_keeps_earlier_timestamps ... ok
[INFO] [stdout] test source::loader::tests::merge_session_stats_keeps_existing_project_path ... ok
[INFO] [stdout] test source::loader::tests::merge_session_stats_merges_different_models ... ok
[INFO] [stdout] test source::grok::parser::tests::parse_grok_signal_file_falls_back_to_update_metadata ... ok
[INFO] [stdout] test source::loader::tests::merge_session_stats_updates_timestamps ... ok
[INFO] [stdout] test source::loader::tests::parse_date_fast_invalid ... ok
[INFO] [stdout] test source::loader::tests::parse_date_fast_valid ... ok
[INFO] [stdout] test source::loader::tests::filter_entries_invalid_date_str_falls_back_to_timestamp ... ok
[INFO] [stdout] test source::loader::loader_quality_tests::load_daily_dedup_reports_skipped_and_parse_errors ... ok
[INFO] [stdout] test source::loader::loader_quality_tests::load_daily_reports_parse_errors_not_file_count ... ok
[INFO] [stdout] test source::registry::tests::test_claude_capabilities ... ok
[INFO] [stdout] test source::registry::tests::test_claude_source_properties ... ok
[INFO] [stdout] test source::registry::tests::test_codex_capabilities ... ok
[INFO] [stdout] test source::registry::tests::test_codex_source_properties ... ok
[INFO] [stdout] test source::registry::tests::test_cursor_capabilities ... ok
[INFO] [stdout] test source::registry::tests::test_cursor_source_properties ... ok
[INFO] [stdout] test source::registry::tests::test_get_source_by_name ... ok
[INFO] [stdout] test utils::date::tests::parse_8_chars_non_date_returns_error ... ok
[INFO] [stdout] test source::registry::tests::test_get_source_by_alias ... ok
[INFO] [stdout] test source::registry::tests::test_get_source_case_insensitive ... ok
[INFO] [stdout] test source::registry::tests::test_source_choices_include_names_and_aliases ... ok
[INFO] [stdout] test source::registry::tests::test_grok_capabilities ... ok
[INFO] [stdout] test utils::date::tests::parse_invalid_date_returns_error ... ok
[INFO] [stdout] test source::registry::tests::test_grok_source_properties ... ok
[INFO] [stdout] test utils::date::tests::parse_invalid_month_returns_error ... ok
[INFO] [stdout] test source::registry::tests::test_sources_count ... ok
[INFO] [stdout] test utils::date::tests::error_contains_original_input ... ok
[INFO] [stdout] test source::registry::tests::test_suggest_source_prefix_and_typo ... ok
[INFO] [stdout] test source::registry::tests::test_suggest_source_none_for_distant_input ... ok
[INFO] [stdout] test utils::date::tests::parse_empty_string_returns_error ... ok
[INFO] [stdout] test utils::date::tests::parse_leap_day_invalid_year ... ok
[INFO] [stdout] test source::registry::tests::test_alias_resolves_to_correct_source ... ok
[INFO] [stdout] test utils::date::tests::parse_leap_day_valid ... ok
[INFO] [stdout] test utils::date::tests::parse_partial_date_returns_error ... ok
[INFO] [stdout] test utils::date::tests::parse_yyyy_mm_dd_format ... ok
[INFO] [stdout] test utils::date::tests::parse_yyyymmdd_format ... ok
[INFO] [stdout] test utils::timezone::tests::parse_empty_returns_local ... ok
[INFO] [stdout] test utils::timezone::tests::parse_invalid_timezone_returns_error ... ok
[INFO] [stdout] test utils::timezone::tests::parse_named_timezone ... ok
[INFO] [stdout] test utils::timezone::tests::parse_none_returns_local ... ok
[INFO] [stdout] test utils::timezone::tests::parse_whitespace_trimmed ... ok
[INFO] [stdout] test utils::timezone::tests::to_fixed_offset_named_shifts_time ... ok
[INFO] [stdout] test utils::timezone::tests::to_fixed_offset_utc_preserves_time ... ok
[INFO] [stdout] test utils::timezone::tests::parse_local_string_returns_local ... ok
[INFO] [stdout] test utils::timezone::tests::parse_utc_variants ... ok
[INFO] [stdout] test pricing::cache::tests::save_raw_cache_failure_keeps_existing_cache ... FAILED
[INFO] [stdout] test utils::timezone::tests::parse_asia_timezone ... ok
[INFO] [stdout] test source::cursor::parser::tests::parse_cursor_db_counts_malformed_json_errors ... ok
[INFO] [stdout] test source::cursor::parser::tests::parse_cursor_db_deduplicates_cross_table_overlap_fixture ... ok
[INFO] [stdout] test source::cursor::parser::tests::parse_cursor_db_keeps_distinct_cross_table_records ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- pricing::cache::tests::save_raw_cache_failure_keeps_existing_cache stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'pricing::cache::tests::save_raw_cache_failure_keeps_existing_cache' (1845) panicked at src/pricing/cache.rs:508:9:
[INFO] [stdout] assertion failed: save_result.is_err()
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x6504a76e2a88 - std[10d71ac2c42b111e]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x6504a76e2a88 - std[10d71ac2c42b111e]::backtrace_rs::backtrace::trace_unsynchronized::<std[10d71ac2c42b111e]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x6504a76e2a88 - std[10d71ac2c42b111e]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x6504a76e2a88 - <<std[10d71ac2c42b111e]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[8fb95b77d25ab6c8]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x6504a76fc20a - <core[8fb95b77d25ab6c8]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x6504a76fc20a - core[8fb95b77d25ab6c8]::fmt::write
[INFO] [stdout]    6:     0x6504a76e8792 - std[10d71ac2c42b111e]::io::default_write_fmt::<alloc[a7ee25936407c584]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/io/mod.rs:622:11
[INFO] [stdout]    7:     0x6504a76e8792 - <alloc[a7ee25936407c584]::vec::Vec<u8> as std[10d71ac2c42b111e]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/io/mod.rs:1977:13
[INFO] [stdout]    8:     0x6504a76bd8c6 - <std[10d71ac2c42b111e]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x6504a76bd8c6 - std[10d71ac2c42b111e]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x6504a76d94f9 - std[10d71ac2c42b111e]::panicking::default_hook
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x6504a734719c - <alloc[a7ee25936407c584]::boxed::Box<dyn for<'a, 'b> core[8fb95b77d25ab6c8]::ops::function::Fn<(&'a std[10d71ac2c42b111e]::panic::PanicHookInfo<'b>,), Output = ()> + core[8fb95b77d25ab6c8]::marker::Sync + core[8fb95b77d25ab6c8]::marker::Send> as core[8fb95b77d25ab6c8]::ops::function::Fn<(&std[10d71ac2c42b111e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/alloc/src/boxed.rs:2289:9
[INFO] [stdout]   12:     0x6504a734719c - test[213991da798b1c03]::test_main_inner::<test[213991da798b1c03]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x6504a76d9772 - <alloc[a7ee25936407c584]::boxed::Box<dyn for<'a, 'b> core[8fb95b77d25ab6c8]::ops::function::Fn<(&'a std[10d71ac2c42b111e]::panic::PanicHookInfo<'b>,), Output = ()> + core[8fb95b77d25ab6c8]::marker::Sync + core[8fb95b77d25ab6c8]::marker::Send> as core[8fb95b77d25ab6c8]::ops::function::Fn<(&std[10d71ac2c42b111e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/alloc/src/boxed.rs:2289:9
[INFO] [stdout]   14:     0x6504a76d9772 - std[10d71ac2c42b111e]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x6504a76bd9b4 - std[10d71ac2c42b111e]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x6504a76b2679 - std[10d71ac2c42b111e]::sys::backtrace::__rust_end_short_backtrace::<std[10d71ac2c42b111e]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x6504a76beb6d - __rustc[3be9ba60078d4c86]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x6504a76fc9cc - core[8fb95b77d25ab6c8]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x6504a76fc992 - core[8fb95b77d25ab6c8]::panicking::panic
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/panicking.rs:150:5
[INFO] [stdout]   20:     0x6504a6f916a7 - ccstats[9db0a13cb8970706]::pricing::cache::tests::save_raw_cache_failure_keeps_existing_cache
[INFO] [stdout]                                at /opt/rustwide/workdir/src/pricing/cache.rs:508:9
[INFO] [stdout]   21:     0x6504a6f768e7 - ccstats[9db0a13cb8970706]::pricing::cache::tests::save_raw_cache_failure_keeps_existing_cache::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/pricing/cache.rs:490:53
[INFO] [stdout]   22:     0x6504a6e8f7f6 - <ccstats[9db0a13cb8970706]::pricing::cache::tests::save_raw_cache_failure_keeps_existing_cache::{closure#0} as core[8fb95b77d25ab6c8]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x6504a733a27b - <fn() -> core[8fb95b77d25ab6c8]::result::Result<(), alloc[a7ee25936407c584]::string::String> as core[8fb95b77d25ab6c8]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x6504a733a27b - test[213991da798b1c03]::__rust_begin_short_backtrace::<core[8fb95b77d25ab6c8]::result::Result<(), alloc[a7ee25936407c584]::string::String>, fn() -> core[8fb95b77d25ab6c8]::result::Result<(), alloc[a7ee25936407c584]::string::String>>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/test/src/lib.rs:724:18
[INFO] [stdout]   25:     0x6504a7347af5 - test[213991da798b1c03]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/test/src/lib.rs:747:74
[INFO] [stdout]   26:     0x6504a7347af5 - <core[8fb95b77d25ab6c8]::panic::unwind_safe::AssertUnwindSafe<test[213991da798b1c03]::run_test_in_process::{closure#0}> as core[8fb95b77d25ab6c8]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   27:     0x6504a7347af5 - std[10d71ac2c42b111e]::panicking::catch_unwind::do_call::<core[8fb95b77d25ab6c8]::panic::unwind_safe::AssertUnwindSafe<test[213991da798b1c03]::run_test_in_process::{closure#0}>, core[8fb95b77d25ab6c8]::result::Result<(), alloc[a7ee25936407c584]::string::String>>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:581:40
[INFO] [stdout]   28:     0x6504a7347af5 - std[10d71ac2c42b111e]::panicking::catch_unwind::<core[8fb95b77d25ab6c8]::result::Result<(), alloc[a7ee25936407c584]::string::String>, core[8fb95b77d25ab6c8]::panic::unwind_safe::AssertUnwindSafe<test[213991da798b1c03]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:544:19
[INFO] [stdout]   29:     0x6504a7347af5 - std[10d71ac2c42b111e]::panic::catch_unwind::<core[8fb95b77d25ab6c8]::panic::unwind_safe::AssertUnwindSafe<test[213991da798b1c03]::run_test_in_process::{closure#0}>, core[8fb95b77d25ab6c8]::result::Result<(), alloc[a7ee25936407c584]::string::String>>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panic.rs:359:14
[INFO] [stdout]   30:     0x6504a7347af5 - test[213991da798b1c03]::run_test_in_process
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/test/src/lib.rs:747:27
[INFO] [stdout]   31:     0x6504a7347af5 - test[213991da798b1c03]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/test/src/lib.rs:668:43
[INFO] [stdout]   32:     0x6504a7341404 - test[213991da798b1c03]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/test/src/lib.rs:698:41
[INFO] [stdout]   33:     0x6504a7341404 - std[10d71ac2c42b111e]::sys::backtrace::__rust_begin_short_backtrace::<test[213991da798b1c03]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   34:     0x6504a734ab72 - std[10d71ac2c42b111e]::thread::lifecycle::spawn_unchecked::<test[213991da798b1c03]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   35:     0x6504a734ab72 - <core[8fb95b77d25ab6c8]::panic::unwind_safe::AssertUnwindSafe<std[10d71ac2c42b111e]::thread::lifecycle::spawn_unchecked<test[213991da798b1c03]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[8fb95b77d25ab6c8]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   36:     0x6504a734ab72 - std[10d71ac2c42b111e]::panicking::catch_unwind::do_call::<core[8fb95b77d25ab6c8]::panic::unwind_safe::AssertUnwindSafe<std[10d71ac2c42b111e]::thread::lifecycle::spawn_unchecked<test[213991da798b1c03]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:581:40
[INFO] [stdout]   37:     0x6504a734ab72 - std[10d71ac2c42b111e]::panicking::catch_unwind::<(), core[8fb95b77d25ab6c8]::panic::unwind_safe::AssertUnwindSafe<std[10d71ac2c42b111e]::thread::lifecycle::spawn_unchecked<test[213991da798b1c03]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:544:19
[INFO] [stdout]   38:     0x6504a734ab72 - std[10d71ac2c42b111e]::panic::catch_unwind::<core[8fb95b77d25ab6c8]::panic::unwind_safe::AssertUnwindSafe<std[10d71ac2c42b111e]::thread::lifecycle::spawn_unchecked<test[213991da798b1c03]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panic.rs:359:14
[INFO] [stdout]   39:     0x6504a734ab72 - std[10d71ac2c42b111e]::thread::lifecycle::spawn_unchecked::<test[213991da798b1c03]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   40:     0x6504a734ab72 - <std[10d71ac2c42b111e]::thread::lifecycle::spawn_unchecked<test[213991da798b1c03]::run_test::{closure#1}, ()>::{closure#1} as core[8fb95b77d25ab6c8]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   41:     0x6504a76e18df - <alloc[a7ee25936407c584]::boxed::Box<dyn core[8fb95b77d25ab6c8]::ops::function::FnOnce<(), Output = ()> + core[8fb95b77d25ab6c8]::marker::Send> as core[8fb95b77d25ab6c8]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/alloc/src/boxed.rs:2275:9
[INFO] [stdout]   42:     0x6504a76e18df - <std[10d71ac2c42b111e]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   43:     0x70c3e69ccaa4 - <unknown>
[INFO] [stdout]   44:     0x70c3e6a59a64 - clone
[INFO] [stdout]   45:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     pricing::cache::tests::save_raw_cache_failure_keeps_existing_cache
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 482 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.19s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "36a70eab10dd41a6ab485315d68a6d6f3b3b32afbb4b54e6f3cc0aa9c62e39d8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "36a70eab10dd41a6ab485315d68a6d6f3b3b32afbb4b54e6f3cc0aa9c62e39d8", kill_on_drop: false }`
[INFO] [stdout] 36a70eab10dd41a6ab485315d68a6d6f3b3b32afbb4b54e6f3cc0aa9c62e39d8
