[INFO] fetching crate contribution-showcase 0.4.1...
[INFO] testing contribution-showcase-0.4.1 against 1.99.0-beta.8+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate contribution-showcase 0.4.1 into /workspace/builds/worker-6-tc1/source
[INFO] started tweaking crates.io crate contribution-showcase 0.4.1
[INFO] finished tweaking crates.io crate contribution-showcase 0.4.1
[INFO] tweaked toml for crates.io crate contribution-showcase 0.4.1 written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate contribution-showcase 0.4.1 on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate contribution-showcase 0.4.1 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 7227520d3c7e9140e12af26bc7a574f5a3a2325597c53524c7df9ed31057bcc3
[INFO] running `Command { std: "docker" "start" "7227520d3c7e9140e12af26bc7a574f5a3a2325597c53524c7df9ed31057bcc3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7227520d3c7e9140e12af26bc7a574f5a3a2325597c53524c7df9ed31057bcc3", 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" "7227520d3c7e9140e12af26bc7a574f5a3a2325597c53524c7df9ed31057bcc3" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7227520d3c7e9140e12af26bc7a574f5a3a2325597c53524c7df9ed31057bcc3", 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" "7227520d3c7e9140e12af26bc7a574f5a3a2325597c53524c7df9ed31057bcc3" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling winnow v1.0.2
[INFO] [stderr]    Compiling toml_writer v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling toml v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling contribution-showcase v0.4.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 41.96s
[INFO] running `Command { std: "docker" "inspect" "7227520d3c7e9140e12af26bc7a574f5a3a2325597c53524c7df9ed31057bcc3", 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" "7227520d3c7e9140e12af26bc7a574f5a3a2325597c53524c7df9ed31057bcc3" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling contribution-showcase v0.4.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 20.10s
[INFO] running `Command { std: "docker" "inspect" "7227520d3c7e9140e12af26bc7a574f5a3a2325597c53524c7df9ed31057bcc3", 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" "7227520d3c7e9140e12af26bc7a574f5a3a2325597c53524c7df9ed31057bcc3" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.13s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/release/deps/contribution_showcase-8adacfb99f5f45e4)
[INFO] [stdout] 
[INFO] [stdout] running 220 tests
[INFO] [stdout] test collector::tests::test_all_zero_type_breakdown_no_division_by_zero ... ok
[INFO] [stdout] test collector::tests::test_all_zero_timeline_no_division_by_zero ... ok
[INFO] [stdout] test collector::tests::test_apply_filters_date_range ... ok
[INFO] [stdout] test collector::tests::test_apply_filters_date_range_inclusive ... ok
[INFO] [stdout] test collector::tests::test_apply_filters_retains_all_when_exclude_hashes_empty_vec ... ok
[INFO] [stdout] test collector::tests::test_apply_filters_retains_all_when_no_matching_hash ... ok
[INFO] [stdout] test collector::tests::test_apply_filters_proposals_date_range ... ok
[INFO] [stdout] test collector::tests::test_apply_filters_excludes_hash ... ok
[INFO] [stdout] test collector::tests::test_apply_filters_retains_all_when_exclude_hashes_none ... ok
[INFO] [stdout] test collector::tests::test_apply_filters_short_prefix_does_not_exclude ... ok
[INFO] [stdout] test collector::tests::test_apply_filters_no_filters ... ok
[INFO] [stdout] test collector::tests::test_apply_filters_type_filter ... ok
[INFO] [stdout] test collector::tests::test_avg_daily_lines_same_date ... ok
[INFO] [stdout] test collector::tests::test_build_project_data_counts_proposals ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_boundary_13_days ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_boundary_14_months_stays_monthly ... ok
[INFO] [stdout] test collector::tests::test_avg_daily_lines_multiple_dates ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_boundary_14_days ... ok
[INFO] [stdout] test collector::tests::test_build_project_data_filters_by_project ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_boundary_15_months_to_quarterly ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_boundary_14_quarters_stays_quarterly ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_boundary_15_quarters_to_yearly ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_boundary_14_days_inclusive_daily ... ok
[INFO] [stdout] test collector::tests::test_avg_daily_lines_no_commits ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_boundary_15_weeks_to_monthly ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_boundary_61_days ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_boundary_60_days ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_boundary_14_weeks_to_weekly ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_custom_threshold_1_forces_yearly ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_custom_threshold_21_keeps_daily_longer ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_boundary_15_days_to_weekly ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_empty_commits ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_custom_threshold_7_escalates_daily_to_weekly ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_single_day ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_custom_threshold_7_escalates_weekly_to_monthly ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_quarterly_granularity ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_quarterly_contiguous_with_gaps ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_monthly_granularity ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_type_lines_gap_bucket_empty ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_type_lines_multiple_types ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_weekly_aggregation ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_weekly_granularity ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_yearly_contiguous_with_gaps ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_yearly_granularity ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_iso_week_year_boundary_weekly ... ok
[INFO] [stdout] test collector::tests::test_build_type_breakdown_empty_commits ... ok
[INFO] [stdout] test collector::tests::test_build_type_breakdown_single_type ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_type_lines_single_type ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_daily_granularity ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_iso_week_year_boundary ... ok
[INFO] [stdout] test collector::tests::test_build_timeline_type_lines_zero_lines_omitted ... ok
[INFO] [stdout] test collector::tests::test_build_type_breakdown_no_duplicate_other ... ok
[INFO] [stdout] test collector::tests::test_collect_git_commits_nonexistent_path ... ok
[INFO] [stdout] test collector::tests::test_collect_git_commits_path_without_git ... ok
[INFO] [stdout] test collector::tests::test_collect_git_commits_invalid_branch ... ok
[INFO] [stdout] test collector::tests::test_collect_git_commits_wiki_override ... ok
[INFO] [stdout] test collector::tests::test_collect_git_commits_basic ... ok
[INFO] [stdout] test collector::tests::test_collect_git_commits_all_branches_when_no_branch ... ok
[INFO] [stdout] test collector::tests::test_collect_metrics_auto_discovery_without_explicit_path ... ok
[INFO] [stdout] test collector::tests::test_collect_git_commits_parses_shortstat ... ok
[INFO] [stdout] test collector::tests::test_collect_metrics_phase3_discovers_preexisting_cobertura_xml ... ok
[INFO] [stdout] test collector::tests::test_collect_metrics_no_framework_no_coverage_file ... ok
[INFO] [stdout] test collector::tests::test_collect_metrics_known_framework_regression ... ok
[INFO] [stdout] test collector::tests::test_collect_proposals_missing_openspec_yaml ... ok
[INFO] [stdout] test collector::tests::test_collect_metrics_phase1_runs_coverage_command_without_framework ... ok
[INFO] [stdout] test collector::tests::test_collect_proposals_empty_archive ... ok
[INFO] [stdout] test collector::tests::test_collect_proposals_non_date_prefixed_skipped ... ok
[INFO] [stdout] test collector::tests::test_collect_proposals_missing_tasks_md ... ok
[INFO] [stdout] test collector::tests::test_collect_proposals_no_archive_dir ... ok
[INFO] [stdout] test collector::tests::test_collect_proposals_non_directory_entries_skipped ... ok
[INFO] [stdout] test collector::tests::test_contains_wiki_but_not_suffix_not_overridden ... ok
[INFO] [stdout] test collector::tests::test_collect_proposals_sorting_most_recent_first ... ok
[INFO] [stdout] test collector::tests::test_count_test_cases_cargo ... ok
[INFO] [stdout] test collector::tests::test_collect_proposals_with_valid_entries ... ok
[INFO] [stdout] test collector::tests::test_count_test_cases_deno_test ... ok
[INFO] [stdout] test collector::tests::test_collect_metrics_phase3_discovers_preexisting_istanbul_json ... ok
[INFO] [stdout] test collector::tests::test_count_test_cases_pytest_async ... ok
[INFO] [stdout] test collector::tests::test_collect_metrics_coverage_command_fails_no_output ... ok
[INFO] [stdout] test collector::tests::test_count_test_cases_js ... ok
[INFO] [stdout] test collector::tests::test_detect_framework_cargo ... ok
[INFO] [stdout] test collector::tests::test_count_test_cases_unknown_framework ... ok
[INFO] [stdout] test collector::tests::test_count_test_cases_vitest_each ... ok
[INFO] [stdout] test collector::tests::test_detect_framework_deno_json_with_vitest ... ok
[INFO] [stdout] test collector::tests::test_count_test_cases_python ... ok
[INFO] [stdout] test collector::tests::test_detect_framework_deno_json_without_vitest ... ok
[INFO] [stdout] test collector::tests::test_detect_framework_jest ... ok
[INFO] [stdout] test collector::tests::test_detect_framework_none ... ok
[INFO] [stdout] test collector::tests::test_detect_framework_priority_pytest_over_cargo ... ok
[INFO] [stdout] test collector::tests::test_detect_framework_priority_cargo_over_deno ... ok
[INFO] [stdout] test collector::tests::test_detect_framework_priority_vitest_over_jest ... ok
[INFO] [stdout] test collector::tests::test_detect_framework_pyproject_without_pytest ... ok
[INFO] [stdout] test collector::tests::test_detect_framework_priority_cargo_over_vitest ... ok
[INFO] [stdout] test collector::tests::test_discover_coverage_auto_fallback ... ok
[INFO] [stdout] test collector::tests::test_detect_framework_pytest ... ok
[INFO] [stdout] test collector::tests::test_detect_framework_vitest ... ok
[INFO] [stdout] test collector::tests::test_discover_coverage_auto_neither_found ... ok
[INFO] [stdout] test collector::tests::test_discover_coverage_auto_fallback_to_istanbul ... ok
[INFO] [stdout] test collector::tests::test_discover_coverage_explicit_unsupported_extension ... ok
[INFO] [stdout] test collector::tests::test_discover_coverage_none ... ok
[INFO] [stdout] test collector::tests::test_discover_coverage_with_explicit_xml_path ... ok
[INFO] [stdout] test collector::tests::test_discover_test_files_cargo ... ok
[INFO] [stdout] test collector::tests::test_discover_coverage_explicit_nonexistent_file ... ok
[INFO] [stdout] test collector::tests::test_discover_coverage_with_explicit_json_path ... ok
[INFO] [stdout] test collector::tests::test_count_test_cases_vitest_excludes_comments ... ok
[INFO] [stdout] test collector::tests::test_discover_test_files_pytest ... ok
[INFO] [stdout] test collector::tests::test_collect_git_commits_author_filter ... ok
[INFO] [stdout] test collector::tests::test_detect_framework_deno_jsonc_with_vitest ... ok
[INFO] [stdout] test collector::tests::test_discover_test_files_vitest ... ok
[INFO] [stdout] test collector::tests::test_discover_test_files_skips_excluded_dirs ... ok
[INFO] [stdout] test collector::tests::test_is_excluded_dir_non_excluded ... ok
[INFO] [stdout] test collector::tests::test_is_test_file_cargo_patterns ... ok
[INFO] [stdout] test collector::tests::test_is_test_file_pytest_patterns ... ok
[INFO] [stdout] test collector::tests::test_is_test_file_vitest_jest_patterns ... ok
[INFO] [stdout] test collector::tests::test_non_wiki_project_not_overridden ... ok
[INFO] [stdout] test collector::tests::test_is_test_file_unknown_framework ... ok
[INFO] [stdout] test collector::tests::test_parse_conventional_commit_breaking ... ok
[INFO] [stdout] test collector::tests::test_parse_cobertura_xml ... ok
[INFO] [stdout] test collector::tests::test_parse_conventional_commit_empty_scope ... ok
[INFO] [stdout] test collector::tests::test_parse_conventional_commit_empty_string ... ok
[INFO] [stdout] test collector::tests::test_parse_conventional_commit_feat ... ok
[INFO] [stdout] test collector::tests::test_parse_conventional_commit_non_matching ... ok
[INFO] [stdout] test collector::tests::test_parse_conventional_commit_breaking_with_scope ... ok
[INFO] [stdout] test collector::tests::test_parse_conventional_commit_with_scope ... ok
[INFO] [stdout] test collector::tests::test_parse_conventional_commit_merge ... ok
[INFO] [stdout] test collector::tests::test_parse_istanbul_json ... ok
[INFO] [stdout] test collector::tests::test_parse_shortstat_whitespace_only ... ok
[INFO] [stdout] test collector::tests::test_project_top_types_lines_semantics ... ok
[INFO] [stdout] test collector::tests::test_shortstat_parsing_both ... ok
[INFO] [stdout] test collector::tests::test_shortstat_parsing_deletions_only ... ok
[INFO] [stdout] test collector::tests::test_is_excluded_dir_all_excluded ... ok
[INFO] [stdout] test collector::tests::test_shortstat_parsing_insertions_only ... ok
[INFO] [stdout] test collector::tests::test_is_test_file_deno_test_patterns ... ok
[INFO] [stdout] test collector::tests::test_type_breakdown_ordering_descending_by_lines ... ok
[INFO] [stdout] test collector::tests::test_uppercase_wiki_not_overridden ... ok
[INFO] [stdout] test collector::tests::test_wiki_override_feat_becomes_docs ... ok
[INFO] [stdout] test collector::tests::test_parse_shortstat_empty_string ... ok
[INFO] [stdout] test collector::tests::test_type_label_known_types ... ok
[INFO] [stdout] test collector::tests::test_wiki_override_non_conventional_becomes_docs ... ok
[INFO] [stdout] test collector::tests::test_wiki_override_already_docs_stays_docs ... ok
[INFO] [stdout] test collector::tests::test_zero_stat_commits_contribute_zero_to_timeline ... ok
[INFO] [stdout] test config::tests::test_absolute_project_path_is_preserved ... ok
[INFO] [stdout] test collector::tests::test_type_label_unknown_fallback ... ok
[INFO] [stdout] test collector::tests::test_project_top_types_truncates_to_five ... ok
[INFO] [stdout] test config::tests::test_config_load_minimal ... ok
[INFO] [stdout] test config::tests::test_branch_validation_rejects_dash_prefix ... ok
[INFO] [stdout] test config::tests::test_config_exclude_hashes_absent_is_none ... ok
[INFO] [stdout] test config::tests::test_config_output_path_default ... ok
[INFO] [stdout] test config::tests::test_config_exclude_hashes_parsed ... ok
[INFO] [stdout] test config::tests::test_branch_validation_rejects_revspec_operators ... ok
[INFO] [stdout] test config::tests::test_config_timeline_max_buckets_absent ... ok
[INFO] [stdout] test config::tests::test_config_output_path_custom ... ok
[INFO] [stdout] test config::tests::test_config_timeline_max_buckets_zero_rejected ... ok
[INFO] [stdout] test config::tests::test_config_output_path_with_title ... ok
[INFO] [stdout] test config::tests::test_config_timeline_max_buckets_present ... ok
[INFO] [stdout] test config::tests::test_date_validation_non_zero_padded ... ok
[INFO] [stdout] test config::tests::test_date_validation_none_passes ... ok
[INFO] [stdout] test config::tests::test_date_validation_valid ... ok
[INFO] [stdout] test config::tests::test_config_project_url_absent ... ok
[INFO] [stdout] test config::tests::test_config_project_url_present ... ok
[INFO] [stdout] test config::tests::test_sanitize_cjk_only_fallback ... ok
[INFO] [stdout] test config::tests::test_sanitize_empty_string ... ok
[INFO] [stdout] test config::tests::test_sanitize_leading_trailing_hyphens ... ok
[INFO] [stdout] test config::tests::test_sanitize_mixed ... ok
[INFO] [stdout] test config::tests::test_sanitize_none ... ok
[INFO] [stdout] test config::tests::test_sanitize_consecutive_special_chars ... ok
[INFO] [stdout] test config::tests::test_project_path_resolves_relative_to_config_parent ... ok
[INFO] [stdout] test config::tests::test_date_validation_since_after_until ... ok
[INFO] [stdout] test config::tests::test_sanitize_normal_ascii ... ok
[INFO] [stdout] test config::tests::test_sanitize_special_chars ... ok
[INFO] [stdout] test tests::test_bare_invocation_returns_help_error ... ok
[INFO] [stdout] test tests::test_cli_timeline_max_buckets_default_none ... ok
[INFO] [stdout] test tests::test_cli_timeline_max_buckets_parsed ... ok
[INFO] [stdout] test tests::test_cli_timeline_max_buckets_rejects_zero ... ok
[INFO] [stdout] test config::tests::test_date_validation_invalid_format ... ok
[INFO] [stdout] test config::tests::test_date_validation_invalid_semantic_date ... ok
[INFO] [stdout] test tests::test_cli_timeline_max_buckets_override_applied ... ok
[INFO] [stdout] test tests::test_escape_angle_brackets_and_ampersand ... ok
[INFO] [stdout] test tests::test_escape_html_ampersand ... ok
[INFO] [stdout] test tests::test_escape_html_angle_brackets ... ok
[INFO] [stdout] test tests::test_escape_html_combined_characters ... ok
[INFO] [stdout] test tests::test_escape_html_double_quotes ... ok
[INFO] [stdout] test tests::test_escape_html_empty_string ... ok
[INFO] [stdout] test tests::test_escape_html_plain_text ... ok
[INFO] [stdout] test tests::test_escape_html_title_breakout_payload ... ok
[INFO] [stdout] test tests::test_escape_line_separator_chars ... ok
[INFO] [stdout] test tests::test_escape_script_close_tag ... ok
[INFO] [stdout] test tests::test_escaped_json_is_valid_js ... ok
[INFO] [stdout] test tests::test_generate_subcommand_parses_defaults ... ok
[INFO] [stdout] test collector::tests::test_collect_git_commits_multiple ... ok
[INFO] [stdout] test collector::tests::test_collect_git_commits_branch_filter ... ok
[INFO] [stdout] test tests::test_cli_title_overrides_config_and_appears_in_html ... ok
[INFO] [stdout] test tests::test_generated_html_contains_commit_trends_heading ... ok
[INFO] [stdout] test tests::test_cli_types_filters_commits ... ok
[INFO] [stdout] test tests::test_cli_comma_parsing_handles_whitespace_and_empty ... ok
[INFO] [stdout] test tests::test_init_refuses_overwrite ... ok
[INFO] [stdout] test tests::test_init_subcommand_parses_custom_output ... ok
[INFO] [stdout] test tests::test_cli_title_affects_default_output_filename ... FAILED
[INFO] [stdout] test tests::test_cli_exclude_hashes_excludes_commits ... ok
[INFO] [stdout] test tests::test_init_writes_template_to_default_path ... ok
[INFO] [stdout] test tests::test_parse_csv_list_lowercases_and_trims ... ok
[INFO] [stdout] test tests::test_old_flat_invocation_rejected ... ok
[INFO] [stdout] test tests::test_generated_html_contains_timeline_tooltip ... ok
[INFO] [stdout] test tests::test_init_writes_template_to_custom_path ... ok
[INFO] [stdout] test tests::test_run_generate_basic ... ok
[INFO] [stdout] test tests::test_generated_html_title_defaults_when_omitted ... ok
[INFO] [stdout] test tests::test_generated_html_title_matches_config ... ok
[INFO] [stdout] test tests::test_generated_html_contains_type_lines_in_json ... ok
[INFO] [stdout] test tests::test_run_generate_with_empty_url ... ok
[INFO] [stdout] test tests::test_generated_html_title_escapes_special_chars ... ok
[INFO] [stdout] test tests::test_run_init_custom_path_returns_ok ... ok
[INFO] [stdout] test tests::test_run_init_default_path_returns_ok ... ok
[INFO] [stdout] test tests::test_template_contains_required_sections ... ok
[INFO] [stdout] test tests::test_template_parses_as_valid_config ... ok
[INFO] [stdout] test tests::test_run_generate_with_date_filters ... ok
[INFO] [stdout] test tests::test_run_generate_with_author_filter ... ok
[INFO] [stdout] test tests::test_run_generate_with_javascript_url_is_safe ... ok
[INFO] [stdout] test tests::test_run_generate_without_project_url ... ok
[INFO] [stdout] test tests::test_run_generate_with_project_url ... ok
[INFO] [stdout] test tests::test_run_generate_with_special_chars_in_url ... ok
[INFO] [stdout] test tests::test_run_generate_with_output_override ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- tests::test_cli_title_affects_default_output_filename stdout ----
[INFO] [stdout] Scanning repositories...
[INFO] [stdout] Summary: 1 commits across 1 repos, 0 OpenSpec proposals
[INFO] [stdout] 
[INFO] [stdout] thread 'tests::test_cli_title_affects_default_output_filename' (860) panicked at src/main.rs:1122:28:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: Read-only file system (os error 30)
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <anyhow::Error as core::convert::From<core::io::error::Error>>::from
[INFO] [stdout]    1: contribution_showcase::run_generate
[INFO] [stdout]    2: contribution_showcase::tests::test_cli_title_affects_default_output_filename
[INFO] [stdout]    3: <contribution_showcase::tests::test_cli_title_affects_default_output_filename::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]    4: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]    5: test::run_test::{closure#0}
[INFO] [stdout]    6: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]    7: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]    8: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]    9: <unknown>
[INFO] [stdout]   10: clone
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x60f409467ea1 - <<std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x60f40947f41a - core[df12db4294e9bfd3]::fmt::write
[INFO] [stdout]    2:     0x60f40946cb0c - <alloc[2182bb758b4b3781]::vec::Vec<u8> as core[df12db4294e9bfd3]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x60f409441246 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x60f40945f149 - std[70759c8f55707aa4]::panicking::default_hook
[INFO] [stdout]    5:     0x60f409397f10 - test[9d35eded1c95d3be]::test_main_inner::<test[9d35eded1c95d3be]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]    6:     0x60f40945f302 - std[70759c8f55707aa4]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x60f4094412f2 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x60f409439799 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace::<std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x60f409441ffd - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind
[INFO] [stdout]   10:     0x60f40947fb8c - core[df12db4294e9bfd3]::panicking::panic_fmt
[INFO] [stdout]   11:     0x60f40947f962 - core[df12db4294e9bfd3]::result::unwrap_failed
[INFO] [stdout]   12:     0x60f409319522 - contribution_showcase[a5cb21c22bb2cfac]::tests::test_cli_title_affects_default_output_filename
[INFO] [stdout]   13:     0x60f40934db49 - <contribution_showcase[a5cb21c22bb2cfac]::tests::test_cli_title_affects_default_output_filename::{closure#0} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   14:     0x60f40938b1fb - test[9d35eded1c95d3be]::__rust_begin_short_backtrace::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]   15:     0x60f409398865 - test[9d35eded1c95d3be]::run_test::{closure#0}
[INFO] [stdout]   16:     0x60f409392124 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>
[INFO] [stdout]   17:     0x60f40939b9c2 - <std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   18:     0x60f409466ef9 - <std[70759c8f55707aa4]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   19:     0x79b0a65bfdfa - <unknown>
[INFO] [stdout]   20:     0x79b0a66533d4 - clone
[INFO] [stdout]   21:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     tests::test_cli_title_affects_default_output_filename
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 219 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.57s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--bin contribution-showcase`
[INFO] running `Command { std: "docker" "inspect" "7227520d3c7e9140e12af26bc7a574f5a3a2325597c53524c7df9ed31057bcc3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7227520d3c7e9140e12af26bc7a574f5a3a2325597c53524c7df9ed31057bcc3", kill_on_drop: false }`
[INFO] [stdout] 7227520d3c7e9140e12af26bc7a574f5a3a2325597c53524c7df9ed31057bcc3
