[INFO] cloning repository https://github.com/eckeltdev/cpp-doctor
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/eckeltdev/cpp-doctor" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Feckeltdev%2Fcpp-doctor", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Feckeltdev%2Fcpp-doctor'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] cb7a834b015161b6e6f66fae2c7250d3ff5c13f1
[INFO] testing eckeltdev/cpp-doctor against 1.98.0-beta.1 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Feckeltdev%2Fcpp-doctor" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-7-tc2/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/eckeltdev/cpp-doctor
[INFO] finished tweaking git repo https://github.com/eckeltdev/cpp-doctor
[INFO] tweaked toml for git repo https://github.com/eckeltdev/cpp-doctor written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/eckeltdev/cpp-doctor on toolchain 1.98.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/eckeltdev/cpp-doctor already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 7f43b8d460ac8e04eaf803de6f79a3c3ea5a04577465930c3b1072fe391a2af0
[INFO] running `Command { std: "docker" "start" "7f43b8d460ac8e04eaf803de6f79a3c3ea5a04577465930c3b1072fe391a2af0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7f43b8d460ac8e04eaf803de6f79a3c3ea5a04577465930c3b1072fe391a2af0", 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" "7f43b8d460ac8e04eaf803de6f79a3c3ea5a04577465930c3b1072fe391a2af0" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7f43b8d460ac8e04eaf803de6f79a3c3ea5a04577465930c3b1072fe391a2af0", 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" "7f43b8d460ac8e04eaf803de6f79a3c3ea5a04577465930c3b1072fe391a2af0" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling memchr v2.8.2
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling winnow v1.0.3
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling either v1.16.0
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling memo-map v0.3.3
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling toml_writer v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling log v0.4.32
[INFO] [stderr]    Compiling unsafe-libyaml v0.2.11
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling which v8.0.3
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[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 thiserror-impl v2.0.18
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling regex v1.12.4
[INFO] [stderr]    Compiling globset v0.4.18
[INFO] [stderr]    Compiling minijinja v2.20.0
[INFO] [stderr]    Compiling serde_yaml_ng v0.10.0
[INFO] [stderr]    Compiling cpp-doctor v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 39.53s
[INFO] running `Command { std: "docker" "inspect" "7f43b8d460ac8e04eaf803de6f79a3c3ea5a04577465930c3b1072fe391a2af0", 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" "7f43b8d460ac8e04eaf803de6f79a3c3ea5a04577465930c3b1072fe391a2af0" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling memchr v2.8.2
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling difflib v0.4.0
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling normalize-line-endings v0.3.0
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling assert_cmd v2.2.2
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling console v0.16.3
[INFO] [stderr]    Compiling similar v2.7.0
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling vte v0.14.1
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling strip-ansi-escapes v0.2.1
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling regex v1.12.4
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling insta v1.48.0
[INFO] [stderr]    Compiling globset v0.4.18
[INFO] [stderr]    Compiling cpp-doctor v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 42.14s
[INFO] running `Command { std: "docker" "inspect" "7f43b8d460ac8e04eaf803de6f79a3c3ea5a04577465930c3b1072fe391a2af0", 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" "7f43b8d460ac8e04eaf803de6f79a3c3ea5a04577465930c3b1072fe391a2af0" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.20s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/cppdoctor-0e6a9c03dfbb374c)
[INFO] [stdout] 
[INFO] [stdout] running 552 tests
[INFO] [stdout] test agent::planner::tests::one_task_per_category_with_diagnostics ... ok
[INFO] [stdout] test agent::planner::tests::ordering_is_severity_then_frequency_then_category ... ok
[INFO] [stdout] test agent::planner::tests::plan_is_byte_identical_across_runs ... ok
[INFO] [stdout] test agent::planner::tests::clean_report_yields_no_tasks ... ok
[INFO] [stdout] test agent::planner::tests::skill_section_parser_extracts_paragraph_bullets_and_steps ... ok
[INFO] [stdout] test agent::skills::tests::every_category_resolves_to_a_skill ... ok
[INFO] [stdout] test agent::planner::tests::tied_categories_break_by_canonical_order ... ok
[INFO] [stdout] test agent::skills::tests::frontmatter_is_stripped_from_every_skill ... ok
[INFO] [stdout] test agent::skills::tests::every_skill_starts_with_a_top_level_title ... ok
[INFO] [stdout] test agent::planner::tests::verify_cmds_are_the_three_command_sequence ... ok
[INFO] [stdout] test agent::skills::tests::skills_are_sorted_and_unique ... ok
[INFO] [stdout] test agent::skills::tests::strip_frontmatter_drops_the_yaml_block ... ok
[INFO] [stdout] test agent::skills::tests::ownership_category_maps_to_ownership_audit ... ok
[INFO] [stdout] test agent::skills::tests::strip_frontmatter_returns_input_when_no_fence ... ok
[INFO] [stdout] test agent::skills::tests::the_six_required_skill_files_are_present ... ok
[INFO] [stdout] test agent::skills::tests::there_are_exactly_six_skills ... ok
[INFO] [stdout] test agent::styleguide::tests::committed_skill_has_valid_frontmatter ... ok
[INFO] [stdout] test agent::styleguide::tests::disabling_a_family_omits_its_rules_and_heading ... ok
[INFO] [stdout] test agent::styleguide::tests::committed_skill_is_up_to_date_with_the_registry ... ok
[INFO] [stdout] test agent::styleguide::tests::disabling_layout_drops_the_threshold_note ... ok
[INFO] [stdout] test agent::styleguide::tests::build_family_rides_require_compile_commands ... ok
[INFO] [stdout] test agent::styleguide::tests::every_enabled_rule_appears_exactly_once ... ok
[INFO] [stdout] test agent::planner::tests::task_fields_are_sourced_from_the_skill ... ok
[INFO] [stdout] test agent::skills::tests::every_skill_has_all_seven_section_15_headings ... ok
[INFO] [stdout] test agent::planner::tests::strip_numbered_handles_markers_and_non_markers ... ok
[INFO] [stdout] test agent::styleguide::tests::one_line_collapses_multiline_examples ... ok
[INFO] [stdout] test agent::styleguide::tests::render_carries_valid_frontmatter ... ok
[INFO] [stdout] test agent::styleguide::tests::render_includes_the_suppression_escape_hatch ... ok
[INFO] [stdout] test agent::styleguide::tests::render_includes_the_four_locked_sections ... ok
[INFO] [stdout] test agent::styleguide::tests::render_groups_rules_under_family_headings ... ok
[INFO] [stdout] test agent::styleguide::tests::render_states_the_configured_standard ... ok
[INFO] [stdout] test agent::styleguide::tests::render_includes_an_enabled_rules_good_example ... ok
[INFO] [stdout] test agent::styleguide::tests::render_includes_the_naming_summary ... ok
[INFO] [stdout] test agent::styleguide::tests::render_has_exactly_one_trailing_newline ... ok
[INFO] [stdout] test agent::styleguide::tests::render_is_deterministic_across_two_renders ... ok
[INFO] [stdout] test agent::styleguide::tests::render_surfaces_layout_thresholds_when_layout_is_on ... ok
[INFO] [stdout] test agent::skills::tests::unknown_skill_name_is_none ... ok
[INFO] [stdout] test agent::styleguide::tests::render_includes_the_verify_loop_steps ... ok
[INFO] [stdout] test agent::styleguide::tests::render_carries_no_timestamp ... ok
[INFO] [stdout] test agent::task::tests::category_round_trips_through_as_str_and_parse ... ok
[INFO] [stdout] test agent::task::tests::every_category_maps_to_a_known_skill_name ... ok
[INFO] [stdout] test agent::task::tests::parse_is_case_insensitive_and_accepts_aliases ... ok
[INFO] [stdout] test agent::task::tests::rule_ids_classify_into_categories ... ok
[INFO] [stdout] test agent::task::tests::variant_order_is_the_canonical_order ... ok
[INFO] [stdout] test agent::task::tests::task_serializes_with_all_seven_section_15_fields ... ok
[INFO] [stdout] test agent::verifier::tests::sequence_is_the_three_documented_commands_in_order ... ok
[INFO] [stdout] test agent::tests::render_plan_renders_all_section_15_headings ... ok
[INFO] [stdout] test agent::verifier::tests::sequence_is_deterministic ... ok
[INFO] [stdout] test cmakegen::bootstrap::tests::bootstrap_is_a_noop_under_ci_and_skip ... ok
[INFO] [stdout] test cmakegen::bootstrap::tests::bootstrap_defines_the_macro_and_root_flag ... ok
[INFO] [stdout] test cli::tests::init_flags_parse ... ok
[INFO] [stdout] test agent::tests::task_embeds_the_skill_and_a_single_task ... ok
[INFO] [stdout] test agent::tests::render_plan_is_byte_identical_across_runs ... ok
[INFO] [stdout] test cli::tests::cli_definition_is_valid ... ok
[INFO] [stdout] test cli::tests::cmake_manager_flags_parse ... ok
[INFO] [stdout] test cmakegen::bootstrap::tests::bootstrap_makes_toml_a_configure_dependency ... ok
[INFO] [stdout] test cmakegen::bootstrap::tests::bootstrap_locates_binary_not_builds_from_source ... ok
[INFO] [stdout] test cmakegen::bootstrap::tests::bootstrap_warns_and_continues_when_binary_absent ... ok
[INFO] [stdout] test cmakegen::cmakelists::tests::compile_and_link_options_are_emitted_in_declaration_order ... ok
[INFO] [stdout] test cmakegen::cmakelists::tests::dependency_link_field_respects_condition ... ok
[INFO] [stdout] test cmakegen::cmakelists::tests::dependency_link_field_wires_into_compiling_targets ... ok
[INFO] [stdout] test cmakegen::cmakelists::tests::deps_are_delegated_to_the_fragment ... ok
[INFO] [stdout] test cmakegen::cmakelists::tests::conditional_compile_options_are_guarded ... ok
[INFO] [stdout] test cmakegen::cmakelists::tests::dependency_link_field_uses_each_targets_scope ... ok
[INFO] [stdout] test cmakegen::cmakelists::tests::conditional_sources_are_guarded ... ok
[INFO] [stdout] test cmakegen::cmakelists::tests::in_tree_guard_present_by_default ... ok
[INFO] [stdout] test cmakegen::cmakelists::tests::emits_minimum_version_and_project ... ok
[INFO] [stdout] test cmakegen::cmakelists::tests::interface_target_uses_interface_scope ... ok
[INFO] [stdout] test cmakegen::cmakelists::tests::dependency_link_field_is_skipped_for_interface_targets ... ok
[INFO] [stdout] test cmakegen::cmakelists::tests::link_libraries_existence_check_for_namespaced ... ok
[INFO] [stdout] test cmakegen::cmakelists::tests::extra_includes_are_preserved ... ok
[INFO] [stdout] test cmakegen::cmakelists::tests::executable_target_uses_add_executable ... ok
[INFO] [stdout] test cmakegen::cmakelists::tests::install_and_test_sections ... ok
[INFO] [stdout] test cmakegen::cmakelists::tests::properties_are_emitted_sorted ... ok
[INFO] [stdout] test cmakegen::cmakelists::tests::render_is_byte_deterministic ... ok
[INFO] [stdout] test cmakegen::cmakelists::tests::managed_output_has_header_and_bootstrap_include ... ok
[INFO] [stdout] test cmakegen::cmakelists::tests::managed_output_exports_compile_commands ... ok
[INFO] [stdout] test cmakegen::cmakelists::tests::subdirs_are_emitted ... ok
[INFO] [stdout] test cmakegen::cmakelists::tests::options_and_root_option ... ok
[INFO] [stdout] test agent::tests::render_plan_for_empty_tasks_says_healthy ... ok
[INFO] [stdout] test cmakegen::deps_cmake::tests::fetchcontent_git_emits_declare_and_makeavailable ... ok
[INFO] [stdout] test cmakegen::cmakelists::tests::template_target_expands_kind_and_links ... ok
[INFO] [stdout] test cmakegen::deps_cmake::tests::empty_deps_renders_a_standalone_stub ... ok
[INFO] [stdout] test cmakegen::deps_cmake::tests::cpm_bootstraps_and_adds_package ... ok
[INFO] [stdout] test cmakegen::deps_cmake::tests::conditional_dependency_is_guarded ... ok
[INFO] [stdout] test cmakegen::deps_cmake::tests::render_is_deterministic ... ok
[INFO] [stdout] test cmakegen::deps_cmake::tests::vcpkg_emits_find_package ... ok
[INFO] [stdout] test cmakegen::marker::tests::contains_block_detects_presence ... ok
[INFO] [stdout] test cmakegen::marker::tests::injection_is_idempotent ... ok
[INFO] [stdout] test cmakegen::marker::tests::injects_into_empty_or_plain_file ... ok
[INFO] [stdout] test cmakegen::marker::tests::updates_existing_block_in_place_preserving_surroundings ... ok
[INFO] [stdout] test cmakegen::tests::fragment_mode_only_owns_the_fragment_and_marker_block ... ok
[INFO] [stdout] test agent::tests::render_plan_has_no_timestamp ... ok
[INFO] [stdout] test cmakegen::tests::files_are_sorted_by_path ... ok
[INFO] [stdout] test cmakegen::tests::fragment_output_is_includeable_and_idempotent ... ok
[INFO] [stdout] test cmakegen::tests::markers_and_header_are_stable ... ok
[INFO] [stdout] test cmakegen::tests::vcpkg_dependency_emits_manifest_in_both_modes ... ok
[INFO] [stdout] test cmakegen::tests::managed_mode_without_deps_skips_the_fragment ... ok
[INFO] [stdout] test cmakegen::vcpkg::tests::render_is_deterministic ... ok
[INFO] [stdout] test cli::tests::every_command_has_a_stable_name ... ok
[INFO] [stdout] test cmakegen::vcpkg::tests::package_override_is_used ... ok
[INFO] [stdout] test cmakegen::writer::tests::finish_normalizes_trailing_whitespace ... ok
[INFO] [stdout] test cmakegen::vcpkg::tests::renders_sorted_packages_with_metadata ... ok
[INFO] [stdout] test cmakegen::writer::tests::if_endif_indents_the_body ... ok
[INFO] [stdout] test cmakegen::writer::tests::keyword_args_skip_when_empty ... ok
[INFO] [stdout] test cmakegen::writer::tests::quote_matches_cmkr_rules ... ok
[INFO] [stdout] test cmakegen::writer::tests::simple_command_is_one_line ... ok
[INFO] [stdout] test cmakegen::writer::tests::raw_block_reindents ... ok
[INFO] [stdout] test commands::add::tests::git_url_spec_implies_fetchcontent_git ... ok
[INFO] [stdout] test commands::add::tests::link_flag_populates_link_field_sorted_and_deduped ... ok
[INFO] [stdout] test commands::add::tests::name_at_version_defaults_to_find_package ... ok
[INFO] [stdout] test cmakegen::vcpkg::tests::no_vcpkg_deps_renders_nothing ... ok
[INFO] [stdout] test commands::add::tests::no_link_means_an_empty_link_field ... ok
[INFO] [stdout] test commands::add::tests::add_writes_block_and_lockfile_and_regenerates ... ok
[INFO] [stdout] test commands::add::tests::owner_repo_without_method_defaults_to_fetchcontent_git ... ok
[INFO] [stdout] test commands::add::tests::subdirectory_method_is_excluded_from_lint ... ok
[INFO] [stdout] test commands::add::tests::add_is_idempotent_in_the_manifest ... ok
[INFO] [stdout] test commands::add_target::tests::add_library_target_lays_down_header_and_source ... ok
[INFO] [stdout] test commands::add_target::tests::invalid_target_name_is_rejected ... ok
[INFO] [stdout] test commands::add_target::tests::add_executable_target_writes_block_and_source ... ok
[INFO] [stdout] test commands::add_target::tests::add_target_is_idempotent ... ok
[INFO] [stdout] # Ownership Audit
[INFO] [stdout] 
[INFO] [stdout] ## Goal
[INFO] [stdout] 
[INFO] [stdout] Find and remove raw ownership hazards in the C++ sources, replacing manual
[INFO] [stdout] allocation and deallocation with RAII so that lifetimes are expressed in the
[INFO] [stdout] type system rather than maintained by hand.
[INFO] [stdout] 
[INFO] [stdout] ## Inputs
[INFO] [stdout] 
[INFO] [stdout] - The `cpp-doctor check --json out/report.json` output, filtered to the `ownership.*` rule ids.
[INFO] [stdout] - The source files those diagnostics point at.
[INFO] [stdout] - The project's `.cpp-doctor.yaml` (for include and exclude paths).
[INFO] [stdout] 
[INFO] [stdout] ## Allowed changes
[INFO] [stdout] 
[INFO] [stdout] - Replacing raw `new T(args)` with `std::make_unique<T>(args)` for single ownership.
[INFO] [stdout] - Replacing genuinely shared ownership with `std::make_shared<T>(args)`.
[INFO] [stdout] - Replacing manual `delete` with RAII (smart pointers, containers, scope-bound objects).
[INFO] [stdout] - Adding lifetime-clarifying comments where non-owning raw pointers remain.
[INFO] [stdout] 
[INFO] [stdout] ## Forbidden changes
[INFO] [stdout] 
[INFO] [stdout] - Changing observable behavior or public API signatures.
[INFO] [stdout] - Introducing `std::shared_ptr` where single ownership is correct.
[INFO] [stdout] - Suppressing the rule instead of fixing the hazard.
[INFO] [stdout] - Touching files outside the configured include paths.
[INFO] [stdout] 
[INFO] [stdout] ## Procedure
[INFO] [stdout] 
[INFO] [stdout] 1. Run `cpp-doctor check --json out/report.json`.
[INFO] [stdout] 2. Group the `ownership.no-raw-new` and `ownership.no-raw-delete` diagnostics by file; run `cpp-doctor explain ownership.no-raw-new` for the rationale and suggested rewrite.
[INFO] [stdout] 3. For each `new`, decide single versus shared ownership and rewrite with `std::make_unique` or `std::make_shared`.
[INFO] [stdout] 4. Remove the matching manual `delete` and let RAII run the destructor.
[INFO] [stdout] 5. Run `cpp-doctor format` to normalize the edits.
[INFO] [stdout] 6. Build and test.
[INFO] [stdout] 7. Re-run `cpp-doctor check` and summarize the changed files and the ownership decisions made.
[INFO] [stdout] 
[INFO] [stdout] ## Verification commands
[INFO] [stdout] 
[INFO] [stdout] ```bash
[INFO] [stdout] cpp-doctor check --json out/report.json
[INFO] [stdout] cpp-doctor explain ownership.no-raw-new
[INFO] [stdout] cpp-doctor check
[INFO] [stdout] cmake --build build
[INFO] [stdout] ctest --test-dir build
[INFO] [stdout] ```
[INFO] [stdout] 
[INFO] [stdout] ## Expected output summary
[INFO] [stdout] 
[INFO] [stdout] A list of the files changed, each raw allocation converted to a smart pointer,
[INFO] [stdout] no remaining `ownership.*` diagnostics, and a clean build and test run.
[INFO] [stdout] 
[INFO] [stdout] ---
[INFO] [stdout] 
[INFO] [stdout] # cpp-doctor Agent Plan
[INFO] [stdout] 
[INFO] [stdout] Project: example
[INFO] [stdout] Profile: strict-systems
[INFO] [stdout] Tasks: 1
[INFO] [stdout] 
[INFO] [stdout] ## 1. Resolve ownership hazards
[INFO] [stdout] 
[INFO] [stdout] Category: ownership
[INFO] [stdout] Severity: note
[INFO] [stdout] 
[INFO] [stdout] ### Goal
[INFO] [stdout] 
[INFO] [stdout] Find and remove raw ownership hazards in the C++ sources, replacing manual allocation and deallocation with RAII so that lifetimes are expressed in the type system rather than maintained by hand.
[INFO] [stdout] 
[INFO] [stdout] ### Inputs
[INFO] [stdout] 
[INFO] [stdout] - The `cpp-doctor check --json out/report.json` output, filtered to the `ownership.*` rule ids.
[INFO] [stdout] - The source files those diagnostics point at.
[INFO] [stdout] - The project's `.cpp-doctor.yaml` (for include and exclude paths).
[INFO] [stdout] 
[INFO] [stdout] ### Allowed changes
[INFO] [stdout] 
[INFO] [stdout] - Replacing raw `new T(args)` with `std::make_unique<T>(args)` for single ownership.
[INFO] [stdout] - Replacing genuinely shared ownership with `std::make_shared<T>(args)`.
[INFO] [stdout] - Replacing manual `delete` with RAII (smart pointers, containers, scope-bound objects).
[INFO] [stdout] - Adding lifetime-clarifying comments where non-owning raw pointers remain.
[INFO] [stdout] 
[INFO] [stdout] ### Forbidden changes
[INFO] [stdout] 
[INFO] [stdout] - Changing observable behavior or public API signatures.
[INFO] [stdout] - Introducing `std::shared_ptr` where single ownership is correct.
[INFO] [stdout] - Suppressing the rule instead of fixing the hazard.
[INFO] [stdout] - Touching files outside the configured include paths.
[INFO] [stdout] 
[INFO] [stdout] ### Procedure
[INFO] [stdout] 
[INFO] [stdout] 1. Run `cpp-doctor check --json out/report.json`.
[INFO] [stdout] 2. Group the `ownership.no-raw-new` and `ownership.no-raw-delete` diagnostics by file; run `cpp-doctor explain ownership.no-raw-new` for the rationale and suggested rewrite.
[INFO] [stdout] 3. For each `new`, decide single versus shared ownership and rewrite with `std::make_unique` or `std::make_shared`.
[INFO] [stdout] 4. Remove the matching manual `delete` and let RAII run the destructor.
[INFO] [stdout] 5. Run `cpp-doctor format` to normalize the edits.
[INFO] [stdout] 6. Build and test.
[INFO] [stdout] 7. Re-run `cpp-doctor check` and summarize the changed files and the ownership decisions made.
[INFO] [stdout] 
[INFO] [stdout] ### Verification commands
[INFO] [stdout] 
[INFO] [stdout] ```bash
[INFO] [stdout] cpp-doctor check
[INFO] [stdout] cmake --build build
[INFO] [stdout] ctest --test-dir build
[INFO] [stdout] ```
[INFO] [stdout] 
[INFO] [stdout] ### Expected output
[INFO] [stdout] 
[INFO] [stdout] A list of the files changed, each raw allocation converted to a smart pointer, no remaining `ownership.*` diagnostics, and a clean build and test run.
[INFO] [stdout] test commands::agent::tests::task_known_category_passes ... ok
[INFO] [stdout] test commands::agent::tests::task_unknown_category_is_exit_2 ... ok
[INFO] [stdout] test agent::tests::task_unknown_category_is_config_error ... ok
[INFO] [stdout] test agent::tests::verify_commands_are_the_three_sequence ... ok
[INFO] [stdout] test agent::verifier::tests::build_dir_is_interpolated ... ok
[INFO] [stdout] test cmakegen::deps_cmake::tests::find_package_uses_package_override ... ok
[INFO] [stdout] test cmakegen::deps_cmake::tests::subdirectory_emits_add_subdirectory ... ok
[INFO] [stdout] test commands::add::tests::owner_repo_shorthand_expands_with_explicit_method ... ok
[INFO] [stdout] test commands::build::tests::missing_cmakelists_is_stale ... ok
[INFO] [stdout] test commands::build::tests::no_manifest_with_existing_cmakelists_points_at_plain_cmake ... ok
[INFO] [stdout] test commands::check::tests::all_overrides_changed_to_full_discovery ... ok
[INFO] [stdout] test commands::build::tests::no_manifest_without_cmakelists_keeps_generic_message ... ok
[INFO] [stdout] test commands::build::tests::fresh_cmakelists_is_not_stale ... ok
[INFO] [stdout] test commands::check::tests::explicit_paths_override_discovery ... ok
[INFO] [stdout] # cpp-doctor Agent Plan
[INFO] [stdout] 
[INFO] [stdout] Project: example
[INFO] [stdout] Profile: strict-systems
[INFO] [stdout] Tasks: 0
[INFO] [stdout] 
[INFO] [stdout] No diagnostics found. The project is healthy; there is nothing to remediate.
[INFO] [stdout] # cpp-doctor Agent Plan
[INFO] [stdout] 
[INFO] [stdout] Project: example
[INFO] [stdout] Profile: strict-systems
[INFO] [stdout] Tasks: 2
[INFO] [stdout] 
[INFO] [stdout] ## 1. Resolve ownership hazards
[INFO] [stdout] 
[INFO] [stdout] Category: ownership
[INFO] [stdout] Severity: error
[INFO] [stdout] 
[INFO] [stdout] ### Goal
[INFO] [stdout] 
[INFO] [stdout] Find and remove raw ownership hazards in the C++ sources, replacing manual allocation and deallocation with RAII so that lifetimes are expressed in the type system rather than maintained by hand.
[INFO] [stdout] 
[INFO] [stdout] ### Inputs
[INFO] [stdout] 
[INFO] [stdout] - The `cpp-doctor check --json out/report.json` output, filtered to the `ownership.*` rule ids.
[INFO] [stdout] - The source files those diagnostics point at.
[INFO] [stdout] - The project's `.cpp-doctor.yaml` (for include and exclude paths).
[INFO] [stdout] 
[INFO] [stdout] ### Allowed changes
[INFO] [stdout] 
[INFO] [stdout] - Replacing raw `new T(args)` with `std::make_unique<T>(args)` for single ownership.
[INFO] [stdout] - Replacing genuinely shared ownership with `std::make_shared<T>(args)`.
[INFO] [stdout] - Replacing manual `delete` with RAII (smart pointers, containers, scope-bound objects).
[INFO] [stdout] - Adding lifetime-clarifying comments where non-owning raw pointers remain.
[INFO] [stdout] 
[INFO] [stdout] ### Forbidden changes
[INFO] [stdout] 
[INFO] [stdout] - Changing observable behavior or public API signatures.
[INFO] [stdout] - Introducing `std::shared_ptr` where single ownership is correct.
[INFO] [stdout] - Suppressing the rule instead of fixing the hazard.
[INFO] [stdout] - Touching files outside the configured include paths.
[INFO] [stdout] 
[INFO] [stdout] ### Procedure
[INFO] [stdout] 
[INFO] [stdout] 1. Run `cpp-doctor check --json out/report.json`.
[INFO] [stdout] 2. Group the `ownership.no-raw-new` and `ownership.no-raw-delete` diagnostics by file; run `cpp-doctor explain ownership.no-raw-new` for the rationale and suggested rewrite.
[INFO] [stdout] 3. For each `new`, decide single versus shared ownership and rewrite with `std::make_unique` or `std::make_shared`.
[INFO] [stdout] 4. Remove the matching manual `delete` and let RAII run the destructor.
[INFO] [stdout] 5. Run `cpp-doctor format` to normalize the edits.
[INFO] [stdout] 6. Build and test.
[INFO] [stdout] 7. Re-run `cpp-doctor check` and summarize the changed files and the ownership decisions made.
[INFO] [stdout] 
[INFO] [stdout] ### Verification commands
[INFO] [stdout] 
[INFO] [stdout] ```bash
[INFO] [stdout] cpp-doctor check
[INFO] [stdout] cmake --build build
[INFO] [stdout] ctest --test-dir build
[INFO] [stdout] ```
[INFO] [stdout] 
[INFO] [stdout] ### Expected output
[INFO] [stdout] 
[INFO] [stdout] A list of the files changed, each raw allocation converted to a smart pointer, no remaining `ownership.*` diagnostics, and a clean build and test run.
[INFO] [stdout] 
[INFO] [stdout] ## 2. Fix build / compile-database policy
[INFO] [stdout] 
[INFO] [stdout] Category: build
[INFO] [stdout] Severity: error
[INFO] [stdout] 
[INFO] [stdout] ### Goal
[INFO] [stdout] 
[INFO] [stdout] Carry out a small, behavior-preserving C++ refactor that resolves a batch of cpp-doctor diagnostics while keeping the change reviewable and the build green at every step.
[INFO] [stdout] 
[INFO] [stdout] ### Inputs
[INFO] [stdout] 
[INFO] [stdout] - The `cpp-doctor check --json out/report.json` output (the full diagnostic set).
[INFO] [stdout] - The source files those diagnostics point at.
[INFO] [stdout] - The project's `.cpp-doctor.yaml`, `.clang-format`, and `.clang-tidy`.
[INFO] [stdout] 
[INFO] [stdout] ### Allowed changes
[INFO] [stdout] 
[INFO] [stdout] - Mechanical, behavior-preserving edits that resolve specific diagnostics.
[INFO] [stdout] - The safe automatic fix set applied with `cpp-doctor fix --safe`.
[INFO] [stdout] - Formatting normalization via `cpp-doctor format` (or `cpp-doctor fix --format-only`).
[INFO] [stdout] - Small local extractions (helper functions, named constants) that improve readability without changing behavior.
[INFO] [stdout] 
[INFO] [stdout] ### Forbidden changes
[INFO] [stdout] 
[INFO] [stdout] - Changing observable behavior or public API without an explicit instruction.
[INFO] [stdout] - Large speculative rewrites unrelated to the reported diagnostics.
[INFO] [stdout] - Suppressing diagnostics instead of resolving them.
[INFO] [stdout] - Touching files outside the configured include paths.
[INFO] [stdout] 
[INFO] [stdout] ### Procedure
[INFO] [stdout] 
[INFO] [stdout] 1. Run `cpp-doctor check --json out/report.json`.
[INFO] [stdout] 2. Group the diagnostics by file and by rule id.
[INFO] [stdout] 3. Pick one rule id or one file as the unit of work; run `cpp-doctor explain <rule-id>` if you are unsure what a diagnostic means.
[INFO] [stdout] 4. Let the tool absorb the mechanical part first with `cpp-doctor fix --safe`, then apply the smallest behavior-preserving edit for whatever remains.
[INFO] [stdout] 5. Run `cpp-doctor format`.
[INFO] [stdout] 6. Build and test.
[INFO] [stdout] 7. Re-run `cpp-doctor check` to confirm the diagnostics are gone.
[INFO] [stdout] 8. Summarize the changed files and the diagnostics resolved.
[INFO] [stdout] 
[INFO] [stdout] ### Verification commands
[INFO] [stdout] 
[INFO] [stdout] ```bash
[INFO] [stdout] cpp-doctor check
[INFO] [stdout] cmake --build build
[INFO] [stdout] ctest --test-dir build
[INFO] [stdout] ```
[INFO] [stdout] 
[INFO] [stdout] ### Expected output
[INFO] [stdout] 
[INFO] [stdout] A list of the files changed, the specific diagnostics resolved, no new diagnostics introduced, and a clean build and test run.
[INFO] [stdout] test commands::check::tests::clean_project_yields_passed_report ... ok
[INFO] [stdout] test commands::check::tests::clean_run_omits_suppression_hint ... ok
[INFO] [stdout] test commands::check::tests::missing_clang_tools_do_not_fail_check ... ok
[INFO] [stdout] test commands::agent::tests::plan_on_clean_project_passes ... ok
[INFO] [stdout] test agent::tests::verify_passes_on_a_clean_tree ... ok
[INFO] [stdout] test agent::tests::verify_fails_on_a_dirty_tree ... ok
[INFO] [stdout] test agent::tests::plan_over_dirty_project_lists_tasks ... ok
[INFO] [stdout] test commands::check::tests::persist_and_reload_round_trips ... ok
[INFO] [stdout] test commands::agent::tests::plan_on_dirty_project_fails ... ok
[INFO] [stdout] test commands::check::tests::remap_tidy_severity_promotes_findings_but_keeps_notes ... ok
[INFO] [stdout] test commands::check::tests::raw_new_source_yields_a_rule_violation ... ok
[INFO] [stdout] test commands::agent::tests::verify_clean_passes_dirty_fails ... ok
[INFO] [stdout] test commands::check::tests::report_records_every_stage_sorted_by_name ... ok
[INFO] [stdout] test commands::check::tests::persisted_reports_are_byte_identical_across_runs ... ok
[INFO] [stdout] test commands::check::tests::translation_unit_filter ... ok
[INFO] [stdout] test commands::check::tests::resolve_tidy_severity_precedence ... ok
[INFO] [stdout] test commands::doctor::tests::ci_requirement_passes_with_workflow ... ok
[INFO] [stdout] test commands::ci::tests::sarif_flag_is_a_non_goal_exit_2 ... ok
[INFO] [stdout] test commands::check::tests::resolve_tidy_severity_honors_config_warnings_as_errors ... ok
[INFO] [stdout] test commands::check::tests::tidy_severity_off_skips_the_stage ... ok
[INFO] [stdout] test commands::doctor::tests::json_key_order_is_versioned_and_stable ... ok
[INFO] [stdout] test commands::ci::tests::clean_project_exits_0 ... ok
[INFO] [stdout] test commands::doctor::tests::existing_include_paths_pass ... ok
[INFO] [stdout] test commands::doctor::tests::missing_optional_tools_warn_not_fail ... ok
[INFO] [stdout] test commands::doctor::tests::report_is_healthy_when_no_check_fails ... ok
[INFO] [stdout] test commands::doctor::tests::report_is_unhealthy_when_a_check_fails ... ok
[INFO] [stdout] test commands::doctor::tests::sanitizer_requirement_fails_without_targets ... ok
[INFO] [stdout] test commands::doctor::tests::sanitizer_requirement_passes_with_flag ... ok
[INFO] [stdout] test commands::doctor::tests::version_line_formats_with_and_without_version ... ok
[INFO] [stdout] test commands::explain::tests::autofix_line_reflects_the_flag ... ok
[INFO] [stdout] test commands::explain::tests::clang_tidy_check_parses_hyphenated_group ... ok
[INFO] [stdout] test commands::check::tests::terminal_render_shows_suppression_hint_when_findings_present ... ok
[INFO] [stdout] test commands::explain::tests::clang_tidy_check_parses_misc_include_cleaner ... ok
[INFO] [stdout] test commands::explain::tests::clang_tidy_check_parses_simple_group ... ok
[INFO] [stdout] test commands::explain::tests::clang_tidy_groups_are_sorted_and_unique ... ok
[INFO] [stdout] test commands::explain::tests::clang_tidy_parse_rejects_dotted_and_unknown_ids ... ok
[INFO] [stdout] test commands::doctor::tests::missing_optional_compile_db_only_warns ... ok
[INFO] [stdout] test commands::explain::tests::include_cleaner_explanation_documents_per_tu_iwyu_and_opt_out ... ok
[INFO] [stdout] test commands::explain::tests::no_color_render_has_no_ansi ... ok
[INFO] [stdout] test commands::explain::tests::every_registered_rule_explains_without_panicking ... ok
[INFO] [stdout] test commands::explain::tests::render_list_lists_every_rule_with_severity_and_title ... ok
[INFO] [stdout] test commands::explain::tests::known_rule_renders_all_section_8_8_fields ... ok
[INFO] [stdout] test commands::doctor::tests::missing_required_compile_db_fails ... ok
[INFO] [stdout] ownership.no-raw-new
[INFO] [stdout] 
[INFO] [stdout] Title: Avoid raw owning `new`
[INFO] [stdout] Severity: error
[INFO] [stdout] Rationale: A raw `new` produces an owning pointer the caller must remember to `delete`, which is error-prone. Smart pointers express ownership in the type and free the memory automatically.
[INFO] [stdout] Autofix: no (detected only; fixes are delegated to clang-format / clang-tidy)
[INFO] [stdout] 
[INFO] [stdout] Bad example:
[INFO] [stdout]   Widget* w = new Widget(args);
[INFO] [stdout] 
[INFO] [stdout] Good example:
[INFO] [stdout]   auto w = std::make_unique<Widget>(args);
[INFO] [stdout] 
[INFO] [stdout] Suggested fix:
[INFO] [stdout]   Replace raw `new` with std::make_unique<T>() (single owner) or std::make_shared<T>() (shared ownership).
[INFO] [stdout] 
[INFO] [stdout] Related clang-tidy checks:
[INFO] [stdout]   - cppcoreguidelines-owning-memory
[INFO] [stdout]   - modernize-make-unique
[INFO] [stdout] test commands::explain::tests::run_returns_passed_for_a_known_rule ... ok
[INFO] [stdout] test commands::explain::tests::unknown_rule_is_a_config_error_with_suggestions ... ok
[INFO] [stdout] cpp-doctor custom rules
[INFO] [stdout] 
[INFO] [stdout] build.require-compile-commands (error) — Project needs compile_commands.json
[INFO] [stdout] comments.no-todo-without-owner (note) — TODO/FIXME needs an owner
[INFO] [stdout] concurrency.no-detached-thread (warning) — Avoid detached threads
[INFO] [stdout] concurrency.no-volatile-sync (error) — `volatile` is not synchronization
[INFO] [stdout] concurrency.require-relaxed-comment (warning) — Explain relaxed memory order
[INFO] [stdout] dangerous.no-c-style-cast (warning) — Avoid C-style casts
[INFO] [stdout] dangerous.no-memcpy-nontrivial-warning (warning) — Verify `memcpy` targets are trivially copyable
[INFO] [stdout] headers.no-relative-parent-include (warning) — No `../` parent-relative includes
[INFO] [stdout] headers.no-using-namespace (error) — No `using namespace` in headers
[INFO] [stdout] headers.require-include-guard (warning) — Header needs an include guard
[INFO] [stdout] layout.abi-struct-needs-size-assert (warning) — Packed struct needs a size assertion
[INFO] [stdout] layout.file-too-large (warning) — File is too large
[INFO] [stdout] layout.function-too-large (warning) — Function is too large
[INFO] [stdout] ownership.no-raw-delete (error) — Avoid raw `delete`
[INFO] [stdout] ownership.no-raw-new (error) — Avoid raw owning `new`
[INFO] [stdout] 
[INFO] [stdout] Run `cpp-doctor explain <id>` for the full write-up of any rule.
[INFO] [stdout] test commands::explain::tests::run_with_list_returns_passed ... ok
[INFO] [stdout] test commands::explain::tests::run_returns_config_error_for_unknown_rule ... ok
[INFO] [stdout] test commands::fix::tests::collapses_multiple_trailing_newlines_to_one ... ok
[INFO] [stdout] test commands::fix::tests::crlf_normalizes_to_lf ... ok
[INFO] [stdout] test commands::fix::tests::empty_file_stays_empty ... ok
[INFO] [stdout] test commands::fix::tests::format_only_disables_tidy ... ok
[INFO] [stdout] test commands::fix::tests::format_only_overrides_unsafe ... ok
[INFO] [stdout] test commands::fix::tests::is_safe_autofix_matches_only_the_curated_set ... ok
[INFO] [stdout] test commands::fix::tests::missing_final_newline_is_added ... ok
[INFO] [stdout] test commands::fix::tests::safe_tidy_checks_excludes_unsafe_under_default ... ok
[INFO] [stdout] test commands::explain::tests::unknown_rule_without_relatives_still_guides ... ok
[INFO] [stdout] test commands::fix::tests::default_plan_is_safe_baseline ... ok
[INFO] [stdout] test commands::fix::tests::whitespace_cleanup_is_idempotent ... ok
[INFO] [stdout] test commands::fix::tests::unsafe_flag_enables_risky_fixes ... ok
[INFO] [stdout] test commands::fix::tests::whitespace_cleanup_strips_trailing_and_adds_final_newline ... ok
[INFO] [stdout] test commands::format::tests::relativize_strips_root_prefix ... ok
[INFO] [stdout] test commands::format::tests::resolve_targets_uses_explicit_paths_sorted ... ok
[INFO] [stdout] test commands::fix::tests::already_clean_file_is_unchanged ... ok
[INFO] [stdout] test commands::ci::tests::dirty_project_exits_1 ... ok
[INFO] [stdout] test commands::gen::tests::upsert_appends_a_new_block ... ok
[INFO] [stdout] test commands::gen::tests::gen_without_manifest_is_a_tooling_error ... ok
[INFO] [stdout] test commands::gen::tests::upsert_is_idempotent ... ok
[INFO] [stdout] test commands::ci::tests::json_report_is_written_to_path ... ok
[INFO] [stdout] test commands::gen::tests::gen_writes_managed_cmakelists_with_header ... ok
[INFO] [stdout] test commands::gen::tests::gen_is_byte_identical_when_run_twice ... ok
[INFO] [stdout] test commands::format::tests::resolve_targets_discovers_when_no_paths ... ok
[INFO] [stdout] test commands::init::tests::clang_baselines_are_byte_exact ... ok
[INFO] [stdout] test commands::gen::tests::write_if_changed_skips_identical_content ... ok
[INFO] [stdout] test commands::init::tests::base_init_does_not_emit_ci_files ... ok
[INFO] [stdout] test commands::init::tests::ci_init_adds_both_files_byte_exact_and_keeps_base ... ok
[INFO] [stdout] test commands::init::tests::init_seeds_yaml_name_from_directory ... ok
[INFO] [stdout] test commands::init::tests::rerun_without_force_does_not_overwrite ... ok
[INFO] [stdout] test commands::init::tests::force_overwrites ... ok
[INFO] [stdout] test commands::gen::tests::upsert_replaces_an_existing_block_in_place ... ok
[INFO] [stdout] test commands::new::tests::new_dot_scaffolds_into_the_current_directory ... ok
[INFO] [stdout] test commands::init::tests::writes_three_baseline_files ... ok
[INFO] [stdout] test commands::new::tests::new_library_lays_down_header_and_source ... ok
[INFO] [stdout] test commands::new::tests::new_refuses_to_clobber_existing_manifest ... ok
[INFO] [stdout] test commands::report::tests::junit_format_is_a_non_goal_exit_2 ... ok
[INFO] [stdout] test commands::new::tests::new_is_deterministic ... ok
[INFO] [stdout] test commands::new::tests::new_named_creates_a_subdir_with_a_clean_managed_project ... ok
[INFO] [stdout] test commands::new::tests::new_greenfield_config_disables_require_compile_commands ... ok
[INFO] [stdout] test commands::self_update::tests::detect_target_matches_this_host ... ok
[INFO] [stdout] test commands::self_update::tests::normalize_version_strips_leading_v_only ... ok
[INFO] [stdout] test commands::new::tests::new_yaml_name_matches_toml_and_is_not_the_placeholder ... ok
[INFO] [stdout] test commands::self_update::tests::parses_tag_name_from_release_json ... ok
[INFO] [stdout] test commands::report::tests::reuses_persisted_report_when_present ... ok
[INFO] [stdout] test commands::report::tests::fresh_analysis_when_no_persisted_report ... ok
[INFO] [stdout] test commands::self_update::tests::triple_rejects_aarch64_linux_with_a_tooling_error ... ok
[INFO] [stdout] test commands::self_update::tests::triple_maps_supported_platforms ... ok
[INFO] [stdout] test commands::tidy::tests::resolve_jobs_maps_auto_to_default_pool ... ok
[INFO] [stdout] test commands::tidy::tests::missing_compile_db_is_a_tooling_error ... ok
[INFO] [stdout] test commands::tidy::tests::resolve_targets_uses_explicit_paths_sorted ... ok
[INFO] [stdout] test commands::tidy::tests::resolve_targets_filters_to_translation_units ... ok
[INFO] [stdout] portability-avoid-pragma-once
[INFO] [stdout] 
[INFO] [stdout] Source: clang-tidy (not a cpp-doctor custom rule)
[INFO] [stdout] Group: portability
[INFO] [stdout] 
[INFO] [stdout] This is a clang-tidy check surfaced by `cpp-doctor check`. cpp-doctor applies the configured tidy severity; the check itself is documented upstream:
[INFO] [stdout] 
[INFO] [stdout] Docs: https://clang.llvm.org/extra/clang-tidy/checks/portability/avoid-pragma-once.html
[INFO] [stdout] 
[INFO] [stdout] Tune it in `.clang-tidy` (add `-portability-avoid-pragma-once` to disable), or scope a one-off with `// NOLINT(portability-avoid-pragma-once)`.
[INFO] [stdout] test config::profile::tests::default_config_carries_the_profile ... ok
[INFO] [stdout] test commands::explain::tests::run_renders_docs_link_for_a_clang_tidy_id ... ok
[INFO] [stdout] test commands::tidy::tests::translation_unit_filter_keeps_sources_drops_headers ... ok
[INFO] [stdout] test config::profile::tests::default_profile_is_strict_systems ... ok
[INFO] [stdout] test commands::tidy::tests::compile_db_dir_is_parent_of_database ... ok
[INFO] [stdout] test config::schema::tests::config_default_tidy_does_not_treat_warnings_as_errors ... ok
[INFO] [stdout] test config::schema::tests::tidy_severity_fails_run_only_for_error_and_warning ... ok
[INFO] [stdout] test config::schema::tests::tidy_severity_maps_to_diagnostic_severity ... ok
[INFO] [stdout] test config::schema::tests::tidy_default_severity_follows_warnings_as_errors ... ok
[INFO] [stdout] test commands::self_update::tests::checksum_takes_first_token_lowercased ... ok
[INFO] [stdout] test config::schema::tests::tidy_severity_stage_runs_for_all_but_off ... ok
[INFO] [stdout] test config::tests::bad_profile_is_rejected ... ok
[INFO] [stdout] test commands::report::tests::sarif_format_is_a_non_goal_exit_2 ... ok
[INFO] [stdout] test config::tests::bad_language_standard_is_rejected ... ok
[INFO] [stdout] test config::tests::minimal_config_fills_defaults ... ok
[INFO] [stdout] test config::tests::unknown_nested_key_is_rejected ... ok
[INFO] [stdout] test config::tests::unknown_top_level_key_is_rejected ... ok
[INFO] [stdout] test config::validate::tests::blank_build_dir_names_the_project_field ... ok
[INFO] [stdout] test config::validate::tests::default_config_is_valid ... ok
[INFO] [stdout] test config::tests::config_serializes_then_parses_back_identically ... ok
[INFO] [stdout] test config::validate::tests::display_includes_field_and_message ... ok
[INFO] [stdout] test config::validate::tests::empty_include_names_the_paths_field ... ok
[INFO] [stdout] test context::tests::context_exposes_resolved_standard ... ok
[INFO] [stdout] test context::tests::tool_paths_default_to_unresolved ... ok
[INFO] [stdout] test diagnostics::ordering::tests::order_ignores_severity_and_source ... ok
[INFO] [stdout] test diagnostics::ordering::tests::shuffled_input_produces_identical_sorted_output ... ok
[INFO] [stdout] test diagnostics::ordering::tests::sorts_by_path_then_line_then_column_then_rule ... ok
[INFO] [stdout] test diagnostics::severity::tests::errors_and_warnings_are_violations_notes_are_not ... ok
[INFO] [stdout] test diagnostics::severity::tests::ordering_is_error_then_warning_then_note ... ok
[INFO] [stdout] test diagnostics::severity::tests::serde_roundtrips_lowercase ... ok
[INFO] [stdout] test diagnostics::severity::tests::wire_strings_are_lowercase ... ok
[INFO] [stdout] test diagnostics::source::tests::serde_roundtrips_lowercase ... ok
[INFO] [stdout] test diagnostics::source::tests::wire_strings_are_lowercase ... ok
[INFO] [stdout] test diagnostics::tests::json_key_order_is_stable_and_spec_shaped ... ok
[INFO] [stdout] test diagnostics::tests::relative_path_leaves_already_relative_unchanged ... ok
[INFO] [stdout] test diagnostics::tests::relative_path_strips_base_prefix ... ok
[INFO] [stdout] test diagnostics::tests::suggestion_is_omitted_when_absent ... ok
[INFO] [stdout] test error::tests::category_exit_codes_are_stable ... ok
[INFO] [stdout] test config::validate::tests::unsupported_version_names_the_version_field ... ok
[INFO] [stdout] test config::tests::empty_document_yields_full_defaults ... ok
[INFO] [stdout] test manifest::conditions::tests::condition_name_validation_matches_cmkr ... ok
[INFO] [stdout] test config::tests::jobs_accepts_auto_and_integer ... ok
[INFO] [stdout] test manifest::conditions::tests::predefined_contains_the_core_os_conditions ... ok
[INFO] [stdout] test manifest::deps::tests::fetchcontent_git_requires_git ... ok
[INFO] [stdout] test manifest::deps::tests::method_round_trips_kebab_case ... ok
[INFO] [stdout] test manifest::deps::tests::subdirectory_requires_path ... ok
[INFO] [stdout] test manifest::deps::tests::package_name_defaults_to_dep_name ... ok
[INFO] [stdout] test manifest::load::tests::load_from_missing_is_not_found ... ok
[INFO] [stdout] test manifest::load::tests::locate_failure_names_the_start_dir ... ok
[INFO] [stdout] test manifest::load::tests::load_from_reads_and_parses ... ok
[INFO] [stdout] test manifest::load::tests::parse_error_attaches_the_manifest_path ... ok
[INFO] [stdout] test manifest::lockfile::tests::lockfile_round_trips_through_toml ... ok
[INFO] [stdout] test manifest::load::tests::locate_walks_up_to_the_root ... ok
[INFO] [stdout] test manifest::lockfile::tests::lockfile_serialization_is_deterministic ... ok
[INFO] [stdout] test commands::ci::tests::json_report_is_byte_identical_across_runs ... ok
[INFO] [stdout] test manifest::lockfile::tests::write_then_read_round_trips_on_disk ... ok
[INFO] [stdout] test manifest::lockfile::tests::read_from_returns_none_when_absent ... ok
[INFO] [stdout] test manifest::parse::tests::conditional_target_keys_are_split ... ok
[INFO] [stdout] test manifest::parse::tests::clean_project_table_produces_no_warnings ... ok
[INFO] [stdout] test manifest::parse::tests::exe_and_lib_aliases_match_the_cli_flags ... ok
[INFO] [stdout] test manifest::parse::tests::install_and_test_tables ... ok
[INFO] [stdout] test manifest::parse::tests::known_keys_produce_no_warnings ... ok
[INFO] [stdout] test manifest::parse::tests::missing_project_name_is_a_field_error ... ok
[INFO] [stdout] test manifest::parse::tests::options_sorted_and_typed ... ok
[INFO] [stdout] test manifest::parse::tests::conditions_merge_predefined_and_overrides ... ok
[INFO] [stdout] test manifest::parse::tests::parses_a_representative_manifest ... ok
[INFO] [stdout] test manifest::parse::tests::dependencies_sorted_and_validated ... ok
[INFO] [stdout] test manifest::parse::tests::project_compile_commands_key_warns_and_is_ignored ... ok
[INFO] [stdout] test manifest::parse::tests::unknown_dependency_key_warns_but_does_not_fail ... ok
[INFO] [stdout] test manifest::parse::tests::unknown_dependency_method_names_the_field ... ok
[INFO] [stdout] test manifest::parse::tests::template_target_links_to_template ... ok
[INFO] [stdout] test manifest::parse::tests::unknown_target_type_lists_valid_values ... ok
[INFO] [stdout] test manifest::parse::tests::unknown_top_level_key_warns ... ok
[INFO] [stdout] test manifest::parse::tests::warnings_are_deterministic_and_sorted ... ok
[INFO] [stdout] test manifest::parse::tests::workspace_only_manifest_is_valid ... ok
[INFO] [stdout] test manifest::tests::manifest_and_lockfile_filenames_are_stable ... ok
[INFO] [stdout] test cmakegen::cmakelists::tests::static_and_shared_libraries ... ok
[INFO] [stdout] test cmakegen::deps_cmake::tests::fetchcontent_url_emits_url_hash ... ok
[INFO] [stdout] test output::json::tests::key_order_follows_declaration_not_alphabetical ... ok
[INFO] [stdout] test cmakegen::tests::generation_is_deterministic_across_runs ... ok
[INFO] [stdout] test output::json::tests::output_ends_with_a_single_newline ... ok
[INFO] [stdout] test output::junit::tests::message_is_stable_and_mentions_non_goal ... ok
[INFO] [stdout] test cmakegen::tests::managed_mode_emits_cmakelists_bootstrap_and_deps ... ok
[INFO] [stdout] test output::json::tests::identical_values_serialize_byte_identically ... ok
[INFO] [stdout] test output::markdown::tests::passed_report_has_header_and_zero_counts_no_extra_sections ... ok
[INFO] [stdout] test output::markdown::tests::failed_report_lists_top_issues_and_suggestions ... ok
[INFO] [stdout] test manifest::parse::tests::parse_is_deterministic ... ok
[INFO] [stdout] test output::markdown::tests::pluralization_is_correct_for_one ... ok
[INFO] [stdout] test output::terminal::tests::finding_without_suggestion_omits_fix_line ... ok
[INFO] [stdout] test output::terminal::tests::glyphs_are_stable ... ok
[INFO] [stdout] test output::markdown::tests::render_is_byte_identical_across_runs ... ok
[INFO] [stdout] test output::terminal::tests::colored_status_line_contains_ansi_and_text ... ok
[INFO] [stdout] test commands::self_update::tests::triple_rejects_unknown_os_and_arch ... ok
[INFO] [stdout] test config::schema::tests::tidy_severity_serializes_lowercase ... ok
[INFO] [stdout] test commands::check::tests::tidy_stage_is_skipped_with_compile_db_reason ... FAILED
[INFO] [stdout] test manifest::parse::tests::unknown_target_key_is_rejected ... ok
[INFO] [stdout] test commands::check::tests::terminal_render_surfaces_skipped_tidy_stage ... FAILED
[INFO] [stdout] test error::tests::errors_map_to_expected_categories ... ok
[INFO] [stdout] test paths::globs::tests::glob_pattern_is_respected_literally ... ok
[INFO] [stdout] test config::tests::embedded_default_config_round_trips_with_version_and_profile ... ok
[INFO] [stdout] test output::terminal::tests::finding_no_color_shows_why_and_fix ... ok
[INFO] [stdout] test paths::globs::tests::recognizes_all_cpp_extensions ... ok
[INFO] [stdout] test paths::globs::tests::invalid_glob_is_reported ... ok
[INFO] [stdout] test paths::globs::tests::rejects_non_cpp_extensions ... ok
[INFO] [stdout] test output::terminal::tests::no_color_status_line_has_no_ansi ... ok
[INFO] [stdout] test paths::globs::tests::empty_patterns_match_nothing ... ok
[INFO] [stdout] test manifest::lockfile::tests::lockfile_carries_a_generated_header ... ok
[INFO] [stdout] test paths::globs::tests::extension_match_is_case_insensitive ... ok
[INFO] [stdout] test output::terminal::tests::no_color_heading_is_plain ... ok
[INFO] [stdout] test paths::globs::tests::bare_directory_excludes_subtree ... ok
[INFO] [stdout] test output::markdown::tests::render_has_no_timestamp_or_iso_date ... ok
[INFO] [stdout] test paths::tests::missing_include_root_is_skipped ... ok
[INFO] [stdout] test paths::tests::excludes_directories_and_globs ... ok
[INFO] [stdout] test output::sarif::tests::message_is_stable_and_mentions_non_goal ... ok
[INFO] [stdout] test paths::tests::discovery_is_deterministic_across_runs ... ok
[INFO] [stdout] test paths::tests::single_file_include_is_supported ... ok
[INFO] [stdout] test paths::tests::respects_include_roots_only ... ok
[INFO] [stdout] test paths::tests::excluded_subtree_is_not_descended ... ok
[INFO] [stdout] test report::aggregate::tests::aggregate_sorts_and_tallies ... ok
[INFO] [stdout] test paths::tests::discovers_cpp_sources_in_include_roots ... ok
[INFO] [stdout] test report::aggregate::tests::suggestions_are_deterministic ... ok
[INFO] [stdout] test report::aggregate::tests::custom_rule_violation_suggests_explain_for_that_rule ... ok
[INFO] [stdout] test process::tests::missing_program_is_an_io_error ... ok
[INFO] [stdout] test report::aggregate::tests::format_difference_suggests_safe_fix_first ... ok
[INFO] [stdout] test report::aggregate::tests::top_issues_rank_severity_then_frequency_then_id ... ok
[INFO] [stdout] test report::aggregate::tests::tidy_only_violation_does_not_suggest_explain ... ok
[INFO] [stdout] test report::aggregate::tests::passed_report_has_no_suggestions ... ok
[INFO] [stdout] test paths::tests::output_is_sorted ... ok
[INFO] [stdout] test report::aggregate::tests::top_issues_respects_limit ... ok
[INFO] [stdout] test report::aggregate::tests::merge_is_order_insensitive ... ok
[INFO] [stdout] test report::status::tests::wire_strings_and_labels_are_stable ... ok
[INFO] [stdout] test process::tests::captures_stdout ... ok
[INFO] [stdout] test report::tests::empty_stages_are_omitted_from_json ... ok
[INFO] [stdout] test report::tests::had_error_overrides_to_error_status ... ok
[INFO] [stdout] test report::tests::empty_report_passes ... ok
[INFO] [stdout] test report::tests::stage_outcome_wire_strings_are_stable ... ok
[INFO] [stdout] test process::tests::locale_is_scrubbed_to_c ... ok
[INFO] [stdout] test report::status::tests::summary_tallies_by_severity ... ok
[INFO] [stdout] test report::tests::tool_status_omits_version_when_missing ... ok
[INFO] [stdout] test report::tests::with_stages_attaches_and_serializes_a_skipped_stage ... ok
[INFO] [stdout] test report::tests::violations_make_the_report_fail ... ok
[INFO] [stdout] test report::tests::diagnostics_are_stored_sorted ... ok
[INFO] [stdout] test rules::build::tests::fires_when_no_database_present ... ok
[INFO] [stdout] test rules::comments::tests::todo_in_code_identifier_does_not_fire ... ok
[INFO] [stdout] test rules::build::tests::fires_when_database_is_stale ... ok
[INFO] [stdout] test rules::build::tests::scope_is_project ... ok
[INFO] [stdout] test report::tests::json_key_order_is_spec_shaped ... ok
[INFO] [stdout] test rules::concurrency::tests::detach_fires ... ok
[INFO] [stdout] test rules::concurrency::tests::detach_silent_when_joined ... ok
[INFO] [stdout] test rules::build::tests::silent_when_database_is_clean ... ok
[INFO] [stdout] test rules::concurrency::tests::relaxed_with_preceding_comment_is_allowed ... ok
[INFO] [stdout] test rules::comments::tests::empty_parens_do_not_count_as_owner ... ok
[INFO] [stdout] test rules::comments::tests::fixme_without_owner_fires ... ok
[INFO] [stdout] test rules::concurrency::tests::volatile_allowed_with_memory_mapped_comment ... ok
[INFO] [stdout] test rules::comments::tests::owned_todo_is_allowed ... ok
[INFO] [stdout] test rules::comments::tests::unowned_todo_fires ... ok
[INFO] [stdout] test rules::dangerous::tests::c_style_cast_fires ... ok
[INFO] [stdout] test rules::comments::tests::owned_todo_with_tracker_id_is_allowed ... ok
[INFO] [stdout] test rules::concurrency::tests::volatile_fires ... ok
[INFO] [stdout] test rules::concurrency::tests::volatile_in_comment_is_ignored ... ok
[INFO] [stdout] test rules::concurrency::tests::relaxed_with_same_line_comment_is_allowed ... ok
[INFO] [stdout] test rules::dangerous::tests::cast_in_comment_is_ignored ... ok
[INFO] [stdout] test rules::dangerous::tests::function_call_is_not_a_cast ... ok
[INFO] [stdout] test rules::dangerous::tests::declaration_paren_is_not_a_cast ... ok
[INFO] [stdout] test rules::dangerous::tests::c_style_cast_fires_on_pointer_cast ... ok
[INFO] [stdout] test rules::dangerous::tests::keywords_are_sorted_for_binary_search ... ok
[INFO] [stdout] test rules::dangerous::tests::if_condition_is_not_a_cast ... ok
[INFO] [stdout] test paths::changed::tests::non_repo_yields_empty_changed_set ... ok
[INFO] [stdout] test rules::dangerous::tests::while_and_return_are_not_casts ... ok
[INFO] [stdout] test rules::concurrency::tests::volatile_allowed_with_mmio_comment ... ok
[INFO] [stdout] test rules::dangerous::tests::memcpy_silent_when_absent ... ok
[INFO] [stdout] test rules::concurrency::tests::relaxed_without_comment_fires ... ok
[INFO] [stdout] test rules::dangerous::tests::memcpy_fires ... ok
[INFO] [stdout] test rules::headers::tests::include_guard_accepts_indented_pragma_once ... ok
[INFO] [stdout] test rules::headers::tests::include_guard_silent_on_cpp_file ... ok
[INFO] [stdout] test rules::dangerous::tests::memcpy_in_string_is_ignored ... ok
[INFO] [stdout] test rules::headers::tests::parent_include_silent_for_normal_include ... ok
[INFO] [stdout] test rules::headers::tests::include_guard_silent_with_pragma_once ... ok
[INFO] [stdout] test rules::headers::tests::parent_include_silent_when_commented ... ok
[INFO] [stdout] test rules::headers::tests::parent_include_fires ... ok
[INFO] [stdout] test report::status::tests::empty_summary_has_no_violations ... ok
[INFO] [stdout] test rules::headers::tests::using_declaration_is_not_using_namespace ... ok
[INFO] [stdout] test rules::headers::tests::using_namespace_ignores_commented_directive ... ok
[INFO] [stdout] test rules::headers::tests::using_namespace_fires_in_header ... ok
[INFO] [stdout] test rules::headers::tests::using_namespace_silent_in_cpp ... ok
[INFO] [stdout] test report::status::tests::status_serializes_lowercase ... ok
[INFO] [stdout] test rules::layout::tests::abi_struct_fires_on_gnu_packed_attribute ... ok
[INFO] [stdout] test rules::headers::tests::include_guard_ignores_guard_mentioned_only_in_comment ... ok
[INFO] [stdout] test rules::headers::tests::include_guard_silent_with_classic_guard ... ok
[INFO] [stdout] test rules::headers::tests::include_guard_ignores_mismatched_ifndef_define ... ok
[INFO] [stdout] test rules::layout::tests::control_block_is_not_measured_as_a_function ... ok
[INFO] [stdout] test rules::layout::tests::effective_line_count_handles_trailing_newline ... ok
[INFO] [stdout] test rules::headers::tests::include_guard_fires_on_dot_h_header ... ok
[INFO] [stdout] test rules::layout::tests::enum_class_body_is_not_a_function ... ok
[INFO] [stdout] test rules::headers::tests::include_guard_fires_on_unguarded_header ... ok
[INFO] [stdout] test rules::layout::tests::file_too_large_fires_past_threshold ... ok
[INFO] [stdout] test rules::layout::tests::function_inside_namespace_is_measured ... ok
[INFO] [stdout] test rules::layout::tests::class_body_with_small_methods_is_not_a_function ... ok
[INFO] [stdout] test rules::layout::tests::extern_c_block_is_not_a_function ... ok
[INFO] [stdout] test rules::layout::tests::file_at_threshold_is_silent ... ok
[INFO] [stdout] test rules::layout::tests::small_function_is_silent ... ok
[INFO] [stdout] test rules::layout::tests::function_too_large_fires ... ok
[INFO] [stdout] test rules::ownership::tests::eq_default_is_not_a_raw_delete_or_new ... ok
[INFO] [stdout] test rules::ownership::tests::eq_delete_is_not_a_raw_delete ... ok
[INFO] [stdout] test rules::ownership::tests::eq_delete_with_extra_spaces_is_still_excluded ... ok
[INFO] [stdout] test rules::layout::tests::namespace_block_is_not_a_function ... ok
[INFO] [stdout] test rules::ownership::tests::raw_delete_fires ... ok
[INFO] [stdout] test rules::ownership::tests::raw_new_fires ... ok
[INFO] [stdout] test rules::layout::tests::nested_blocks_are_not_double_counted ... ok
[INFO] [stdout] test rules::layout::tests::abi_struct_silent_on_unpacked_struct ... ok
[INFO] [stdout] test rules::ownership::tests::raw_new_silent_in_comment_and_string ... ok
[INFO] [stdout] test rules::ownership::tests::raw_new_silent_on_include_new_header ... ok
[INFO] [stdout] test rules::registry::tests::by_id_round_trips_every_rule ... ok
[INFO] [stdout] test rules::registry::tests::dangerous_family_maps_to_dangerous_patterns_key ... ok
[INFO] [stdout] test rules::layout::tests::abi_struct_fires_on_bare_pragma_pack_set ... ok
[INFO] [stdout] test rules::ownership::tests::real_delete_among_eq_delete_still_fires ... ok
[INFO] [stdout] test rules::registry::tests::disabling_a_family_filters_its_rules ... ok
[INFO] [stdout] test rules::ownership::tests::raw_new_still_fires_with_include_new_present ... ok
[INFO] [stdout] test rules::registry::tests::build_family_is_gated_by_require_compile_commands ... ok
[INFO] [stdout] test rules::layout::tests::abi_struct_ignores_packed_in_comment ... ok
[INFO] [stdout] test rules::registry::tests::every_rule_exposes_full_meta ... ok
[INFO] [stdout] test rules::registry::tests::naming_family_has_no_custom_rule ... ok
[INFO] [stdout] test rules::registry::tests::suggestions_find_family_relatives ... ok
[INFO] [stdout] test rules::scan::tests::braces_inside_strings_are_ignored ... ok
[INFO] [stdout] test rules::scan::tests::char_literal_is_masked ... ok
[INFO] [stdout] test rules::scan::tests::comment_regions_cover_both_comment_kinds ... ok
[INFO] [stdout] test rules::scan::tests::escaped_quote_does_not_end_string_early ... ok
[INFO] [stdout] test rules::layout::tests::abi_struct_fires_on_packed_push_pop_without_assert ... ok
[INFO] [stdout] test rules::layout::tests::abi_struct_fires_on_attribute_packed_without_assert ... ok
[INFO] [stdout] test rules::registry::tests::iteration_order_is_deterministic_across_calls ... ok
[INFO] [stdout] test rules::scan::tests::block_comment_across_lines_is_masked ... ok
[INFO] [stdout] test rules::registry::tests::registry_has_exactly_fifteen_unique_sorted_ids ... ok
[INFO] [stdout] test rules::scan::tests::string_literal_body_is_masked ... ok
[INFO] [stdout] test rules::scan::tests::brace_spans_track_depth_and_lines ... ok
[INFO] [stdout] test rules::scan::tests::line_comment_is_masked_but_offsets_preserved ... ok
[INFO] [stdout] test rules::layout::tests::abi_struct_silent_after_pack_region_closed ... ok
[INFO] [stdout] test rules::layout::tests::abi_struct_handles_multiple_packed_structs ... ok
[INFO] [stdout] test rules::scan::tests::line_and_column_are_one_based ... ok
[INFO] [stdout] test rules::scan::tests::line_text_round_trips ... ok
[INFO] [stdout] test rules::suppress::tests::directive_inside_a_string_literal_is_not_honored ... ok
[INFO] [stdout] test rules::suppress::tests::allow_file_suppresses_anywhere ... ok
[INFO] [stdout] test rules::suppress::tests::allow_next_line_targets_the_following_line ... ok
[INFO] [stdout] test rules::suppress::tests::allow_next_line_skips_intervening_comment_and_blank_lines ... ok
[INFO] [stdout] test rules::layout::tests::abi_struct_silent_with_matching_size_assert ... ok
[INFO] [stdout] test rules::suppress::tests::bare_nolint_suppresses_every_rule_on_the_line ... ok
[INFO] [stdout] test rules::suppress::tests::nolintbegin_is_not_treated_as_a_bare_nolint ... ok
[INFO] [stdout] test rules::suppress::tests::ordinary_comment_without_directive_is_not_a_suppression ... ok
[INFO] [stdout] test rules::suppress::tests::family_spec_covers_every_rule_in_the_family ... ok
[INFO] [stdout] test rules::suppress::tests::nolint_inside_a_string_is_not_honored ... ok
[INFO] [stdout] test rules::suppress::tests::nolintnextline_skips_intervening_comment_lines ... ok
[INFO] [stdout] test rules::suppress::tests::block_comment_directive_is_honored ... ok
[INFO] [stdout] test rules::suppress::tests::bare_allow_suppresses_any_rule_on_the_line ... ok
[INFO] [stdout] test rules::suppress::tests::nolintnextline_targets_the_following_line ... ok
[INFO] [stdout] test rules::suppress::tests::bare_allow_above_the_line_does_not_suppress_the_next_line ... ok
[INFO] [stdout] test rules::suppress::tests::same_line_rule_id_suppresses_only_that_line_and_rule ... ok
[INFO] [stdout] test templates::tests::baseline_files_are_complete_and_sorted ... ok
[INFO] [stdout] test templates::tests::clang_tidy_keeps_include_cleaner_on_by_default ... ok
[INFO] [stdout] test templates::tests::clang_tidy_starts_with_the_spec_check_block ... ok
[INFO] [stdout] test rules::suppress::tests::scoped_nolint_is_left_to_clang_tidy ... ok
[INFO] [stdout] test tools::clang_format::tests::default_style_file_needs_no_arg ... ok
[INFO] [stdout] test templates::tests::clang_tidy_exempts_all_public_aggregates ... ok
[INFO] [stdout] test rules::tests::header_detection_matches_header_extensions_only ... ok
[INFO] [stdout] test tools::clang_tidy::tests::build_args_includes_compile_db_and_file ... ok
[INFO] [stdout] test templates::tests::ci_files_are_complete_and_sorted ... ok
[INFO] [stdout] test templates::tests::github_actions_matches_spec_section_16_verbatim ... ok
[INFO] [stdout] test templates::tests::pre_commit_matches_spec_section_17_verbatim ... ok
[INFO] [stdout] test tools::clang_format::tests::custom_style_file_becomes_file_arg ... ok
[INFO] [stdout] test rules::suppress::tests::comma_separated_specs_all_apply ... ok
[INFO] [stdout] test templates::tests::clang_format_matches_spec_section_11_verbatim ... ok
[INFO] [stdout] test tools::clang_tidy::tests::build_args_adds_warnings_as_errors_and_fix ... ok
[INFO] [stdout] test tools::clang_tidy::tests::build_args_pins_curated_checks_when_present ... ok
[INFO] [stdout] test tools::clang_tidy::tests::empty_path_uses_fallback ... ok
[INFO] [stdout] test tools::clang_tidy::tests::fatal_stderr_detection ... ok
[INFO] [stdout] test tools::clang_tidy::tests::shuffled_parsed_diagnostics_sort_identically ... ok
[INFO] [stdout] test tools::clang_tidy::tests::parses_diagnostic_without_check_name ... ok
[INFO] [stdout] test tools::clang_tidy::tests::run_all_over_empty_set_is_empty ... ok
[INFO] [stdout] test tools::clang_tidy::tests::strips_warnings_as_errors_suffix_from_check_name ... ok
[INFO] [stdout] test tools::clang_tidy::tests::parses_an_error_level ... ok
[INFO] [stdout] test tools::clang_tidy::tests::parses_missing_override_diagnostic ... ok
[INFO] [stdout] test tools::clang_tidy::tests::ignores_non_diagnostic_lines ... ok
[INFO] [stdout] test tools::cmake::tests::falls_back_to_first_line_when_unexpected ... ok
[INFO] [stdout] test tools::clang_tidy::tests::parses_a_warning_with_check_name ... ok
[INFO] [stdout] test tools::clang_tidy::tests::keeps_secondary_checks_but_drops_warnings_as_errors ... ok
[INFO] [stdout] test tools::clang_tidy::tests::unsafe_fixable_check_hint_points_at_manual_or_unsafe ... ok
[INFO] [stdout] test tools::clang_tidy::tests::safe_check_hint_points_at_fix_tidy ... ok
[INFO] [stdout] test tools::clang_tidy::tests::relativizes_absolute_paths_under_root ... ok
[INFO] [stdout] test tools::cmake::tests::parses_version_with_suffix ... ok
[INFO] [stdout] test tools::cmake::tests::parses_standard_version_line ... ok
[INFO] [stdout] test tools::compile_commands::tests::out_build_glob_picks_first_sorted_match ... ok
[INFO] [stdout] test tools::compile_commands::tests::locate_and_validate_reports_a_clean_database ... ok
[INFO] [stdout] test tools::compile_commands::tests::discovery_prefers_configured_path_first ... ok
[INFO] [stdout] test tools::compile_commands::tests::discovery_falls_through_to_build_dir ... ok
[INFO] [stdout] test tools::compile_commands::tests::discovery_falls_through_to_cmake_build_glob ... ok
[INFO] [stdout] test tools::compile_commands::tests::cmake_build_glob_picks_first_sorted_match ... ok
[INFO] [stdout] test tools::compile_commands::tests::load_errors_on_malformed_json ... ok
[INFO] [stdout] test tools::compile_commands::tests::load_parses_a_minimal_database ... ok
[INFO] [stdout] test tools::compile_commands::tests::locate_and_validate_returns_none_without_database ... ok
[INFO] [stdout] test tools::compile_commands::tests::discovery_returns_none_when_no_database_present ... ok
[INFO] [stdout] test tools::compile_commands::tests::discovery_falls_through_to_out_build_glob ... ok
[INFO] [stdout] test tools::cppcheck::tests::message_is_stable_and_mentions_non_goal ... ok
[INFO] [stdout] test tools::iwyu::tests::message_is_stable_and_mentions_non_goal ... ok
[INFO] [stdout] test tools::tests::tool_program_names_are_stable ... ok
[INFO] [stdout] test tools::sanitizers::tests::message_is_stable_and_mentions_non_goal ... ok
[INFO] [stdout] test tools::compile_commands::tests::precedence_build_dir_beats_out_build ... ok
[INFO] [stdout] test tools::compile_commands::tests::validate_output_is_sorted_and_deduped ... ok
[INFO] [stdout] test tools::tests::probe_yields_a_tool_paths_struct ... ok
[INFO] [stdout] test tools::compile_commands::tests::validate_reports_stale_referenced_files ... ok
[INFO] [stdout] test tools::compile_commands::tests::validate_resolves_relative_directory_against_root ... ok
[INFO] [stdout] test tools::tests::require_tool_errors_for_missing_tool_with_exit_code_2 ... ok
[INFO] [stdout] test tools::tests::which_resolves_a_universally_present_tool ... ok
[INFO] [stdout] test tools::tests::which_returns_none_for_a_missing_tool ... ok
[INFO] [stdout] test paths::changed::tests::changed_is_intersection_of_git_and_discovery ... ok
[INFO] [stdout] test tools::git::tests::changed_files_includes_modified_and_untracked ... ok
[INFO] [stdout] test tools::git::tests::detects_repo_root_and_non_repo ... ok
[INFO] [stdout] test paths::changed::tests::result_preserves_discovery_order ... ok
[INFO] [stdout] test tools::git::tests::merge_base_resolves_for_same_branch ... ok
[INFO] [stdout] test commands::doctor::tests::deep_adds_extra_checks ... ok
[INFO] [stdout] test commands::doctor::tests::checks_are_deterministic_across_runs ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- commands::check::tests::tidy_stage_is_skipped_with_compile_db_reason stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'commands::check::tests::tidy_stage_is_skipped_with_compile_db_reason' (2488) panicked at src/commands/check.rs:839:9:
[INFO] [stdout] reason should name the missing database, got: clang-tidy not found on PATH; install it to enable linting
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x63c991b19d51 - std[73adb7dc35730857]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x63c991b19d51 - std[73adb7dc35730857]::backtrace_rs::backtrace::trace_unsynchronized::<std[73adb7dc35730857]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x63c991b19d51 - std[73adb7dc35730857]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x63c991b19d51 - <<std[73adb7dc35730857]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[6883ba1bc0fe4ed1]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x63c991b33dca - <core[6883ba1bc0fe4ed1]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x63c991b33dca - core[6883ba1bc0fe4ed1]::fmt::write
[INFO] [stdout]    6:     0x63c991b2029c - std[73adb7dc35730857]::io::default_write_fmt::<alloc[55a36b64bcbf2c0d]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/io/mod.rs:626:11
[INFO] [stdout]    7:     0x63c991b2029c - <alloc[55a36b64bcbf2c0d]::vec::Vec<u8> as std[73adb7dc35730857]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/io/mod.rs:1730:13
[INFO] [stdout]    8:     0x63c991af50f6 - <std[73adb7dc35730857]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x63c991af50f6 - std[73adb7dc35730857]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x63c991b109c9 - std[73adb7dc35730857]::panicking::default_hook
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x63c9913fa300 - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn for<'a, 'b> core[6883ba1bc0fe4ed1]::ops::function::Fn<(&'a std[73adb7dc35730857]::panic::PanicHookInfo<'b>,), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send + core[6883ba1bc0fe4ed1]::marker::Sync> as core[6883ba1bc0fe4ed1]::ops::function::Fn<(&std[73adb7dc35730857]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2333:9
[INFO] [stdout]   12:     0x63c9913fa300 - test[980ffaebd391d06d]::test_main_inner::<test[980ffaebd391d06d]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x63c991b10cf2 - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn for<'a, 'b> core[6883ba1bc0fe4ed1]::ops::function::Fn<(&'a std[73adb7dc35730857]::panic::PanicHookInfo<'b>,), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send + core[6883ba1bc0fe4ed1]::marker::Sync> as core[6883ba1bc0fe4ed1]::ops::function::Fn<(&std[73adb7dc35730857]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2333:9
[INFO] [stdout]   14:     0x63c991b10cf2 - std[73adb7dc35730857]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:823:13
[INFO] [stdout]   15:     0x63c991af51a2 - std[73adb7dc35730857]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:688:13
[INFO] [stdout]   16:     0x63c991aec219 - std[73adb7dc35730857]::sys::backtrace::__rust_end_short_backtrace::<std[73adb7dc35730857]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x63c991af5ead - __rustc[a7b7b02e776dd976]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:679:5
[INFO] [stdout]   18:     0x63c991b3464c - core[6883ba1bc0fe4ed1]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x63c99112136c - cppdoctor[7919c71af08b54f0]::commands::check::tests::tidy_stage_is_skipped_with_compile_db_reason
[INFO] [stdout]                                at /opt/rustwide/workdir/src/commands/check.rs:839:9
[INFO] [stdout]   20:     0x63c991112b27 - cppdoctor[7919c71af08b54f0]::commands::check::tests::tidy_stage_is_skipped_with_compile_db_reason::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/commands/check.rs:828:54
[INFO] [stdout]   21:     0x63c991310f66 - <cppdoctor[7919c71af08b54f0]::commands::check::tests::tidy_stage_is_skipped_with_compile_db_reason::{closure#0} as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x63c9913ed63b - <fn() -> core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x63c9913ed63b - test[980ffaebd391d06d]::__rust_begin_short_backtrace::<core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>, fn() -> core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:724:18
[INFO] [stdout]   24:     0x63c9913fac85 - test[980ffaebd391d06d]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:747:74
[INFO] [stdout]   25:     0x63c9913fac85 - <core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   26:     0x63c9913fac85 - std[73adb7dc35730857]::panicking::catch_unwind::do_call::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>, core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:576:43
[INFO] [stdout]   27:     0x63c9913fac85 - std[73adb7dc35730857]::panicking::catch_unwind::<core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>, core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:544:19
[INFO] [stdout]   28:     0x63c9913fac85 - std[73adb7dc35730857]::panic::catch_unwind::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>, core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panic.rs:359:14
[INFO] [stdout]   29:     0x63c9913fac85 - test[980ffaebd391d06d]::run_test_in_process
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:747:27
[INFO] [stdout]   30:     0x63c9913fac85 - test[980ffaebd391d06d]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:668:43
[INFO] [stdout]   31:     0x63c9913f5734 - test[980ffaebd391d06d]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:698:41
[INFO] [stdout]   32:     0x63c9913f5734 - std[73adb7dc35730857]::sys::backtrace::__rust_begin_short_backtrace::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   33:     0x63c9913fddd2 - std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   34:     0x63c9913fddd2 - <core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   35:     0x63c9913fddd2 - std[73adb7dc35730857]::panicking::catch_unwind::do_call::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:576:43
[INFO] [stdout]   36:     0x63c9913fddd2 - std[73adb7dc35730857]::panicking::catch_unwind::<(), core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:544:19
[INFO] [stdout]   37:     0x63c9913fddd2 - std[73adb7dc35730857]::panic::catch_unwind::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panic.rs:359:14
[INFO] [stdout]   38:     0x63c9913fddd2 - std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   39:     0x63c9913fddd2 - <std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1} as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x63c991b18d2f - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn core[6883ba1bc0fe4ed1]::ops::function::FnOnce<(), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2319:9
[INFO] [stdout]   41:     0x63c991b18d2f - <std[73adb7dc35730857]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/thread/unix.rs:123:17
[INFO] [stdout]   42:     0x787feaf78aa4 - <unknown>
[INFO] [stdout]   43:     0x787feb005a64 - clone
[INFO] [stdout]   44:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- commands::check::tests::terminal_render_surfaces_skipped_tidy_stage stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'commands::check::tests::terminal_render_surfaces_skipped_tidy_stage' (2486) panicked at src/commands/check.rs:942:9:
[INFO] [stdout] assertion failed: text.contains("compile_commands.json")
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x63c991b19d51 - std[73adb7dc35730857]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x63c991b19d51 - std[73adb7dc35730857]::backtrace_rs::backtrace::trace_unsynchronized::<std[73adb7dc35730857]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x63c991b19d51 - std[73adb7dc35730857]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x63c991b19d51 - <<std[73adb7dc35730857]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[6883ba1bc0fe4ed1]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x63c991b33dca - <core[6883ba1bc0fe4ed1]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x63c991b33dca - core[6883ba1bc0fe4ed1]::fmt::write
[INFO] [stdout]    6:     0x63c991b2029c - std[73adb7dc35730857]::io::default_write_fmt::<alloc[55a36b64bcbf2c0d]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/io/mod.rs:626:11
[INFO] [stdout]    7:     0x63c991b2029c - <alloc[55a36b64bcbf2c0d]::vec::Vec<u8> as std[73adb7dc35730857]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/io/mod.rs:1730:13
[INFO] [stdout]    8:     0x63c991af50f6 - <std[73adb7dc35730857]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x63c991af50f6 - std[73adb7dc35730857]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x63c991b109c9 - std[73adb7dc35730857]::panicking::default_hook
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x63c9913fa300 - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn for<'a, 'b> core[6883ba1bc0fe4ed1]::ops::function::Fn<(&'a std[73adb7dc35730857]::panic::PanicHookInfo<'b>,), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send + core[6883ba1bc0fe4ed1]::marker::Sync> as core[6883ba1bc0fe4ed1]::ops::function::Fn<(&std[73adb7dc35730857]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2333:9
[INFO] [stdout]   12:     0x63c9913fa300 - test[980ffaebd391d06d]::test_main_inner::<test[980ffaebd391d06d]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x63c991b10cf2 - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn for<'a, 'b> core[6883ba1bc0fe4ed1]::ops::function::Fn<(&'a std[73adb7dc35730857]::panic::PanicHookInfo<'b>,), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send + core[6883ba1bc0fe4ed1]::marker::Sync> as core[6883ba1bc0fe4ed1]::ops::function::Fn<(&std[73adb7dc35730857]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2333:9
[INFO] [stdout]   14:     0x63c991b10cf2 - std[73adb7dc35730857]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:823:13
[INFO] [stdout]   15:     0x63c991af51d4 - std[73adb7dc35730857]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:681:13
[INFO] [stdout]   16:     0x63c991aec219 - std[73adb7dc35730857]::sys::backtrace::__rust_end_short_backtrace::<std[73adb7dc35730857]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x63c991af5ead - __rustc[a7b7b02e776dd976]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:679:5
[INFO] [stdout]   18:     0x63c991b3464c - core[6883ba1bc0fe4ed1]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x63c991b34612 - core[6883ba1bc0fe4ed1]::panicking::panic
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panicking.rs:150:5
[INFO] [stdout]   20:     0x63c991120e47 - cppdoctor[7919c71af08b54f0]::commands::check::tests::terminal_render_surfaces_skipped_tidy_stage
[INFO] [stdout]                                at /opt/rustwide/workdir/src/commands/check.rs:942:9
[INFO] [stdout]   21:     0x63c991112af7 - cppdoctor[7919c71af08b54f0]::commands::check::tests::terminal_render_surfaces_skipped_tidy_stage::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/commands/check.rs:927:53
[INFO] [stdout]   22:     0x63c991310f26 - <cppdoctor[7919c71af08b54f0]::commands::check::tests::terminal_render_surfaces_skipped_tidy_stage::{closure#0} as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x63c9913ed63b - <fn() -> core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x63c9913ed63b - test[980ffaebd391d06d]::__rust_begin_short_backtrace::<core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>, fn() -> core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:724:18
[INFO] [stdout]   25:     0x63c9913fac85 - test[980ffaebd391d06d]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:747:74
[INFO] [stdout]   26:     0x63c9913fac85 - <core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   27:     0x63c9913fac85 - std[73adb7dc35730857]::panicking::catch_unwind::do_call::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>, core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:576:43
[INFO] [stdout]   28:     0x63c9913fac85 - std[73adb7dc35730857]::panicking::catch_unwind::<core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>, core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:544:19
[INFO] [stdout]   29:     0x63c9913fac85 - std[73adb7dc35730857]::panic::catch_unwind::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>, core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panic.rs:359:14
[INFO] [stdout]   30:     0x63c9913fac85 - test[980ffaebd391d06d]::run_test_in_process
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:747:27
[INFO] [stdout]   31:     0x63c9913fac85 - test[980ffaebd391d06d]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:668:43
[INFO] [stdout]   32:     0x63c9913f5734 - test[980ffaebd391d06d]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:698:41
[INFO] [stdout]   33:     0x63c9913f5734 - std[73adb7dc35730857]::sys::backtrace::__rust_begin_short_backtrace::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   34:     0x63c9913fddd2 - std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   35:     0x63c9913fddd2 - <core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   36:     0x63c9913fddd2 - std[73adb7dc35730857]::panicking::catch_unwind::do_call::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:576:43
[INFO] [stdout]   37:     0x63c9913fddd2 - std[73adb7dc35730857]::panicking::catch_unwind::<(), core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:544:19
[INFO] [stdout]   38:     0x63c9913fddd2 - std[73adb7dc35730857]::panic::catch_unwind::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panic.rs:359:14
[INFO] [stdout]   39:     0x63c9913fddd2 - std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   40:     0x63c9913fddd2 - <std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1} as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   41:     0x63c991b18d2f - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn core[6883ba1bc0fe4ed1]::ops::function::FnOnce<(), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2319:9
[INFO] [stdout]   42:     0x63c991b18d2f - <std[73adb7dc35730857]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/thread/unix.rs:123:17
[INFO] [stdout]   43:     0x787feaf78aa4 - <unknown>
[INFO] [stdout]   44:     0x787feb005a64 - clone
[INFO] [stdout]   45:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     commands::check::tests::terminal_render_surfaces_skipped_tidy_stage
[INFO] [stdout]     commands::check::tests::tidy_stage_is_skipped_with_compile_db_reason
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 550 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.58s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "7f43b8d460ac8e04eaf803de6f79a3c3ea5a04577465930c3b1072fe391a2af0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7f43b8d460ac8e04eaf803de6f79a3c3ea5a04577465930c3b1072fe391a2af0", kill_on_drop: false }`
[INFO] [stdout] 7f43b8d460ac8e04eaf803de6f79a3c3ea5a04577465930c3b1072fe391a2af0
