[INFO] fetching crate linthis 0.15.3... [INFO] testing linthis-0.15.3 against try#dec9417b8611e34e787a3e4c37686b5131f9e5c5 for pr-154210-1 [INFO] extracting crate linthis 0.15.3 into /workspace/builds/worker-7-tc2/source [INFO] started tweaking crates.io crate linthis 0.15.3 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate linthis 0.15.3 [INFO] tweaked toml for crates.io crate linthis 0.15.3 written to /workspace/builds/worker-7-tc2/source/Cargo.toml [INFO] validating manifest of crates.io crate linthis 0.15.3 on toolchain dec9417b8611e34e787a3e4c37686b5131f9e5c5 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate linthis 0.15.3 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" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "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/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 7a78712db0aa7e1c1442d77b30f55d5be34c7487f20e1ed120e97628a4c54810 [INFO] running `Command { std: "docker" "start" "-a" "7a78712db0aa7e1c1442d77b30f55d5be34c7487f20e1ed120e97628a4c54810", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "7a78712db0aa7e1c1442d77b30f55d5be34c7487f20e1ed120e97628a4c54810", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "7a78712db0aa7e1c1442d77b30f55d5be34c7487f20e1ed120e97628a4c54810", kill_on_drop: false }` [INFO] [stdout] 7a78712db0aa7e1c1442d77b30f55d5be34c7487f20e1ed120e97628a4c54810 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] be50ef3f8570ad1a5330b6c27aa89ba5024fd7c67c60ea80e6ca63e2fe0b21a7 [INFO] running `Command { std: "docker" "start" "-a" "be50ef3f8570ad1a5330b6c27aa89ba5024fd7c67c60ea80e6ca63e2fe0b21a7", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.103 [INFO] [stderr] Compiling quote v1.0.42 [INFO] [stderr] Compiling libc v0.2.178 [INFO] [stderr] Compiling find-msvc-tools v0.1.5 [INFO] [stderr] Compiling indexmap v2.12.1 [INFO] [stderr] Compiling http v0.2.12 [INFO] [stderr] Compiling serde_json v1.0.96 [INFO] [stderr] Compiling rustls v0.21.12 [INFO] [stderr] Compiling rustix v0.38.44 [INFO] [stderr] Compiling indexmap v1.9.3 [INFO] [stderr] Compiling rustix v1.1.2 [INFO] [stderr] Compiling instability v0.3.11 [INFO] [stderr] Compiling rayon-core v1.11.0 [INFO] [stderr] Compiling thiserror v1.0.40 [INFO] [stderr] Compiling regex-syntax v0.8.8 [INFO] [stderr] Compiling clap_lex v0.5.0 [INFO] [stderr] Compiling cc v1.2.50 [INFO] [stderr] Compiling regex-syntax v0.7.5 [INFO] [stderr] Compiling anyhow v1.0.71 [INFO] [stderr] Compiling unicode-truncate v1.1.0 [INFO] [stderr] Compiling walkdir v2.3.3 [INFO] [stderr] Compiling compact_str v0.8.1 [INFO] [stderr] Compiling lru v0.12.5 [INFO] [stderr] Compiling webpki-roots v0.25.4 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling xxhash-rust v0.8.15 [INFO] [stderr] Compiling similar v2.7.0 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling syn v2.0.111 [INFO] [stderr] Compiling http-body v0.4.6 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling regex-automata v0.4.13 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling socket2 v0.6.1 [INFO] [stderr] Compiling getrandom v0.2.16 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling is-terminal v0.4.17 [INFO] [stderr] Compiling socket2 v0.5.10 [INFO] [stderr] Compiling inotify-sys v0.1.5 [INFO] [stderr] Compiling anstream v0.3.2 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling num_cpus v1.17.0 [INFO] [stderr] Compiling inotify v0.9.6 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling clap_builder v4.3.0 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Compiling dashmap v5.5.3 [INFO] [stderr] Compiling filetime v0.2.26 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling dirs-sys v0.4.1 [INFO] [stderr] Compiling mio v0.8.11 [INFO] [stderr] Compiling atty v0.2.14 [INFO] [stderr] Compiling directories v5.0.1 [INFO] [stderr] Compiling tempfile v3.23.0 [INFO] [stderr] Compiling signal-hook-mio v0.2.5 [INFO] [stderr] Compiling crossterm v0.28.1 [INFO] [stderr] Compiling notify v6.1.1 [INFO] [stderr] Compiling colored v2.0.0 [INFO] [stderr] Compiling fs2 v0.4.3 [INFO] [stderr] Compiling rayon v1.7.0 [INFO] [stderr] Compiling regex v1.8.4 [INFO] [stderr] Compiling env_logger v0.10.0 [INFO] [stderr] Compiling globset v0.4.14 [INFO] [stderr] Compiling rustls-webpki v0.101.7 [INFO] [stderr] Compiling sct v0.7.1 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling darling_core v0.23.0 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling pin-project-internal v1.1.10 [INFO] [stderr] Compiling serde_repr v0.1.20 [INFO] [stderr] Compiling strum_macros v0.26.4 [INFO] [stderr] Compiling tower-lsp-macros v0.9.0 [INFO] [stderr] Compiling thiserror-impl v1.0.40 [INFO] [stderr] Compiling clap_derive v4.3.0 [INFO] [stderr] Compiling auto_impl v1.3.0 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling pin-project v1.1.10 [INFO] [stderr] Compiling tokio v1.49.0 [INFO] [stderr] Compiling futures-util v0.3.31 [INFO] [stderr] Compiling zerofrom v0.1.6 [INFO] [stderr] Compiling strum v0.26.3 [INFO] [stderr] Compiling yoke v0.8.1 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling clap v4.3.0 [INFO] [stderr] Compiling zerovec v0.11.5 [INFO] [stderr] Compiling zerotrie v0.2.3 [INFO] [stderr] Compiling darling_macro v0.23.0 [INFO] [stderr] Compiling darling v0.23.0 [INFO] [stderr] Compiling tinystr v0.8.2 [INFO] [stderr] Compiling potential_utf v0.1.4 [INFO] [stderr] Compiling icu_collections v2.1.1 [INFO] [stderr] Compiling icu_locale_core v2.1.1 [INFO] [stderr] Compiling ratatui v0.28.1 [INFO] [stderr] Compiling icu_provider v2.1.1 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling icu_normalizer v2.1.1 [INFO] [stderr] Compiling icu_properties v2.1.2 [INFO] [stderr] Compiling tower v0.4.13 [INFO] [stderr] Compiling futures v0.3.31 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling serde_yaml v0.9.17 [INFO] [stderr] Compiling toml v0.5.11 [INFO] [stderr] Compiling chrono v0.4.42 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling lsp-types v0.94.1 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling tokio-rustls v0.24.1 [INFO] [stderr] Compiling h2 v0.3.27 [INFO] [stderr] Compiling hyper v0.14.32 [INFO] [stderr] Compiling hyper-rustls v0.24.2 [INFO] [stderr] Compiling reqwest v0.11.27 [INFO] [stderr] Compiling tower-lsp v0.20.0 [INFO] [stderr] Compiling linthis v0.15.3 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 25s [INFO] running `Command { std: "docker" "inspect" "be50ef3f8570ad1a5330b6c27aa89ba5024fd7c67c60ea80e6ca63e2fe0b21a7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "be50ef3f8570ad1a5330b6c27aa89ba5024fd7c67c60ea80e6ca63e2fe0b21a7", kill_on_drop: false }` [INFO] [stdout] be50ef3f8570ad1a5330b6c27aa89ba5024fd7c67c60ea80e6ca63e2fe0b21a7 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 1134cabb47feb35b6baab2d484183eec845132ea315daad0f1104c79316cfdb5 [INFO] running `Command { std: "docker" "start" "-a" "1134cabb47feb35b6baab2d484183eec845132ea315daad0f1104c79316cfdb5", kill_on_drop: false }` [INFO] [stderr] Compiling linthis v0.15.3 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `super::*` [INFO] [stdout] --> src/cli/hook/mod.rs:144:9 [INFO] [stdout] | [INFO] [stdout] 144 | use super::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ALL_AGENT_PROVIDERS` and `agent_event_skill_metadata` [INFO] [stdout] --> src/cli/hook/mod.rs:148:27 [INFO] [stdout] | [INFO] [stdout] 148 | agent_skill_path, agent_event_skill_metadata, install_agent_plugin_from_dir, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 149 | copy_dir_recursive, ALL_AGENT_PROVIDERS, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::script::build_hook_command` [INFO] [stdout] --> src/cli/hook/mod.rs:151:9 [INFO] [stdout] | [INFO] [stdout] 151 | use super::script::build_hook_command; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 40.57s [INFO] running `Command { std: "docker" "inspect" "1134cabb47feb35b6baab2d484183eec845132ea315daad0f1104c79316cfdb5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1134cabb47feb35b6baab2d484183eec845132ea315daad0f1104c79316cfdb5", kill_on_drop: false }` [INFO] [stdout] 1134cabb47feb35b6baab2d484183eec845132ea315daad0f1104c79316cfdb5 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] bf5a2f1e9dd380b4396676734ac7b5dd31556c83c315e14ace711bda0d1fcbfe [INFO] running `Command { std: "docker" "start" "-a" "bf5a2f1e9dd380b4396676734ac7b5dd31556c83c315e14ace711bda0d1fcbfe", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `super::*` [INFO] [stderr] --> src/cli/hook/mod.rs:144:9 [INFO] [stderr] | [INFO] [stderr] 144 | use super::*; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `ALL_AGENT_PROVIDERS` and `agent_event_skill_metadata` [INFO] [stderr] --> src/cli/hook/mod.rs:148:27 [INFO] [stderr] | [INFO] [stderr] 148 | agent_skill_path, agent_event_skill_metadata, install_agent_plugin_from_dir, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 149 | copy_dir_recursive, ALL_AGENT_PROVIDERS, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::script::build_hook_command` [INFO] [stderr] --> src/cli/hook/mod.rs:151:9 [INFO] [stderr] | [INFO] [stderr] 151 | use super::script::build_hook_command; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `linthis` (bin "linthis" test) generated 3 warnings (run `cargo fix --bin "linthis" -p linthis --tests` to apply 3 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.43s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/linthis-0e90cf81f8b4e383) [INFO] [stdout] [INFO] [stdout] running 581 tests [INFO] [stdout] test ai::context::tests::test_detect_language ... ok [INFO] [stdout] test ai::prompts::tests::test_category_specific_templates ... ok [INFO] [stdout] test ai::prompts::tests::test_prompt_template ... ok [INFO] [stdout] test ai::prompts::tests::test_prompt_builder ... ok [INFO] [stdout] test ai::context::tests::test_extract_context ... ok [INFO] [stdout] test ai::context::tests::test_context_options_default ... ok [INFO] [stdout] test ai::provider::tests::test_mock_no_fallback_needed ... ok [INFO] [stdout] test ai::context::tests::test_extract_imports ... ok [INFO] [stdout] test ai::provider::tests::test_cli_name ... ok [INFO] [stdout] test ai::provider::tests::test_mock_provider ... ok [INFO] [stdout] test ai::prompts::tests::test_issue_category_parsing ... ok [INFO] [stdout] test ai::provider::tests::test_mock_provider_available ... ok [INFO] [stdout] test ai::provider::tests::test_provider_config_defaults ... ok [INFO] [stdout] test ai::provider::tests::test_provider_kind_parsing ... ok [INFO] [stdout] test ai::provider::tests::test_provider_name ... ok [INFO] [stdout] test ai::suggestions::tests::test_ai_suggester_mock ... ok [INFO] [stdout] test ai::suggestions::tests::test_detect_language ... ok [INFO] [stdout] test ai::suggestions::tests::test_categorize_issue ... ok [INFO] [stdout] test ai::suggestions::tests::test_fix_suggestion ... ok [INFO] [stdout] test ai::suggestions::tests::test_suggestion_options_default ... ok [INFO] [stdout] test ai::suggestions::tests::test_suggestion_result ... ok [INFO] [stdout] test benchmark::tests::test_benchmark_result_total_duration ... ok [INFO] [stdout] test benchmark::tests::test_format_duration_ms ... ok [INFO] [stdout] test benchmark::tests::test_speedup_calculation ... ok [INFO] [stdout] test cache::storage::tests::test_cache_prune ... ok [INFO] [stdout] test cache::hash::tests::test_file_hash_different_content ... ok [INFO] [stdout] test benchmark::tests::test_format_speedup ... ok [INFO] [stdout] test cache::types::tests::test_cache_stats_empty ... ok [INFO] [stdout] test cache::storage::tests::test_cache_clear ... ok [INFO] [stdout] test cache::storage::tests::test_cache_new ... ok [INFO] [stdout] test cache::hash::tests::test_is_file_changed_same_content ... ok [INFO] [stdout] test cache::types::tests::test_cached_issue_roundtrip ... ok [INFO] [stdout] test checkers::cpp::tests::test_check_objc_method_lengths_custom_threshold ... ok [INFO] [stdout] test cache::storage::tests::test_cache_update_and_check ... ok [INFO] [stdout] test cache::storage::tests::test_cache_save_load ... ok [INFO] [stdout] test checkers::cpp::tests::test_check_objc_method_lengths_exactly_at_threshold_no_issue ... ok [INFO] [stdout] test checkers::cpp::tests::test_check_objc_method_lengths_blank_and_comments_not_counted ... ok [INFO] [stdout] test checkers::cpp::tests::test_check_objc_method_lengths_multiple_methods_each_checked ... ok [INFO] [stdout] test ai::suggestions::tests::test_suggestions_report ... ok [INFO] [stdout] test checkers::cpp::tests::test_check_objc_method_lengths_over_threshold_reports_issue ... ok [INFO] [stdout] test checkers::cpp::tests::test_check_objc_method_lengths_under_threshold_no_issue ... ok [INFO] [stdout] test cache::storage::tests::test_cache_stats ... ok [INFO] [stdout] test checkers::cpp::tests::test_count_sloc_plain_code ... ok [INFO] [stdout] test cache::types::tests::test_cache_stats ... ok [INFO] [stdout] test ai::suggestions::tests::test_parse_diff_with_context ... ok [INFO] [stdout] test cache::hash::tests::test_file_hash_deterministic ... ok [INFO] [stdout] test checkers::cpp::tests::test_count_sloc_skips_blank_lines ... ok [INFO] [stdout] test ai::suggestions::tests::test_parse_unified_diff_multiline ... ok [INFO] [stdout] test checkers::cpp::tests::test_count_sloc_skips_line_comments ... ok [INFO] [stdout] test ai::suggestions::tests::test_parse_ai_response ... ok [INFO] [stdout] test ai::suggestions::tests::test_parse_unified_diff ... ok [INFO] [stdout] test checkers::cpp::tests::test_count_sloc_skips_multiline_block_comment ... ok [INFO] [stdout] test checkers::cpp::tests::test_count_sloc_skips_single_line_block_comment ... ok [INFO] [stdout] test checkers::cpp::tests::test_count_sloc_trailing_comment_counts_as_code ... ok [INFO] [stdout] test checkers::cpp::tests::test_cpplint_config_default ... ok [INFO] [stdout] test checkers::cpp::tests::test_extract_method_name_class_method ... ok [INFO] [stdout] test checkers::cpp::tests::test_extract_method_name_multi_arg ... ok [INFO] [stdout] test checkers::cpp::tests::test_extract_method_name_simple ... ok [INFO] [stdout] test checkers::cpp::tests::test_extract_method_name_with_single_arg ... ok [INFO] [stdout] test checkers::cpp::tests::test_merge_filters_empty_strings ... ok [INFO] [stdout] test checkers::cpp::tests::test_merge_filters_both_present ... ok [INFO] [stdout] test checkers::cpp::tests::test_parse_clang_tidy_irrelevant_line ... ok [INFO] [stdout] test checkers::cpp::tests::test_parse_clang_tidy_clang_diagnostic_filtered ... ok [INFO] [stdout] test checkers::cpp::tests::test_parse_clang_tidy_error ... ok [INFO] [stdout] test checkers::cpp::tests::test_parse_clang_tidy_no_bracket ... ok [INFO] [stdout] test checkers::cpp::tests::test_merge_filters_trims_whitespace ... ok [INFO] [stdout] test checkers::cpp::tests::test_merge_filters_base_none ... ok [INFO] [stdout] test checkers::cpp::tests::test_parse_clang_tidy_note_line ... ok [INFO] [stdout] test checkers::cpp::tests::test_parse_cpplint_cfg_nonexistent_file ... ok [INFO] [stdout] test checkers::cpp::tests::test_merge_filters_removes_duplicates ... ok [INFO] [stdout] test checkers::cpp::tests::test_parse_clang_tidy_warning ... ok [INFO] [stdout] test checkers::cpp::tests::test_parse_cpplint_cfg_multiple_filters ... ok [INFO] [stdout] test checkers::cpp::tests::test_parse_cpplint_comment_spacing ... ok [INFO] [stdout] test checkers::cpp::tests::test_parse_cpplint_cfg_both ... ok [INFO] [stdout] test checkers::cpp::tests::test_parse_cpplint_cfg_with_comments ... ok [INFO] [stdout] test checkers::cpp::tests::test_parse_cpplint_done_processing ... ok [INFO] [stdout] test cache::hash::tests::test_is_file_changed_different_hash ... ok [INFO] [stdout] test checkers::cpp::tests::test_parse_cpplint_cfg_empty_lines ... ok [INFO] [stdout] test checkers::cpp::tests::test_parse_cpplint_cfg_linelength ... ok [INFO] [stdout] test checkers::cpp::tests::test_parse_cpplint_endif_comment ... ok [INFO] [stdout] test checkers::cpp::tests::test_parse_cpplint_header_guard ... ok [INFO] [stdout] test checkers::cpp::tests::test_parse_cpplint_line_length ... ok [INFO] [stdout] test checkers::cpp::tests::test_parse_cpplint_multiline_string_filtered ... ok [INFO] [stdout] test checkers::cpp::tests::test_parse_cpplint_standard_warning ... ok [INFO] [stdout] test checkers::cpp::tests::test_parse_cpplint_total_errors ... ok [INFO] [stdout] test checkers::dart::tests::test_parse_analyze_output ... ok [INFO] [stdout] test checkers::dart::tests::test_parse_empty_output ... ok [INFO] [stdout] test checkers::dart::tests::test_parse_warning ... ok [INFO] [stdout] test checkers::php::tests::test_parse_empty_output ... ok [INFO] [stdout] test checkers::kotlin::tests::test_parse_empty_output ... ok [INFO] [stdout] test checkers::php::tests::test_parse_phpcs_output ... ok [INFO] [stdout] test checkers::lua::tests::test_parse_luacheck_output ... ok [INFO] [stdout] test checkers::csharp::tests::test_parse_filters_other_files ... ok [INFO] [stdout] test checkers::ruby::tests::test_parse_empty_output ... ok [INFO] [stdout] test checkers::python::tests::test_parse_empty_output ... ok [INFO] [stdout] test checkers::ruby::tests::test_parse_rubocop_output ... ok [INFO] [stdout] test checkers::python::tests::test_parse_invalid_json ... ok [INFO] [stdout] test checkers::csharp::tests::test_parse_empty_output ... ok [INFO] [stdout] test checkers::csharp::tests::test_parse_dotnet_output ... ok [INFO] [stdout] test checkers::scala::tests::test_parse_scalafix_output ... ok [INFO] [stdout] test checkers::ruby::tests::test_parse_warning_severity ... ok [INFO] [stdout] test checkers::python::tests::test_severity_mapping ... ok [INFO] [stdout] test checkers::kotlin::tests::test_parse_ktlint_output ... ok [INFO] [stdout] test checkers::lua::tests::test_parse_empty_output ... ok [INFO] [stdout] test checkers::cpp::tests::test_parse_cpplint_cfg_filter ... ok [INFO] [stdout] test checkers::scala::tests::test_parse_simple_format ... ok [INFO] [stdout] test checkers::cpp::tests::test_cpp_checker_with_cpplint_oc_config ... ok [INFO] [stdout] test checkers::python::tests::test_parse_ruff_json_output ... ok [INFO] [stdout] test checkers::shell::tests::test_parse_shellcheck_output ... ok [INFO] [stdout] test checkers::shell::tests::test_parse_empty_output ... ok [INFO] [stdout] test checkers::typescript::tests::test_eslint_file_ignored_pattern_filtered ... ok [INFO] [stdout] test checkers::swift::tests::test_parse_empty_output ... ok [INFO] [stdout] test checkers::shell::tests::test_parse_info_level ... ok [INFO] [stdout] test checkers::typescript::tests::test_eslint_real_issue_not_filtered ... ok [INFO] [stdout] test checkers::swift::tests::test_parse_swiftlint_output ... ok [INFO] [stdout] test complexity::analyzer::tests::test_analysis_options_default ... ok [INFO] [stdout] test complexity::analyzer::tests::test_analysis_result_default ... ok [INFO] [stdout] test checkers::scala::tests::test_parse_empty_output ... ok [INFO] [stdout] test complexity::languages::go::tests::test_analyze_simple_function ... ok [INFO] [stdout] test complexity::languages::go::tests::test_detect_function ... ok [INFO] [stdout] test complexity::languages::go::tests::test_go_analyzer_creation ... ok [INFO] [stdout] test complexity::languages::java::tests::test_detect_method ... ok [INFO] [stdout] test complexity::languages::java::tests::test_complexity_with_conditionals ... ok [INFO] [stdout] test complexity::languages::java::tests::test_analyze_simple_class ... ok [INFO] [stdout] test complexity::languages::java::tests::test_java_analyzer_creation ... ok [INFO] [stdout] test complexity::languages::rust::tests::test_analyze_simple_function ... ok [INFO] [stdout] test complexity::languages::python::tests::test_analyze_simple_function ... ok [INFO] [stdout] test complexity::languages::python::tests::test_extract_function_name ... ok [INFO] [stdout] test complexity::languages::python::tests::test_python_analyzer_creation ... ok [INFO] [stdout] test complexity::languages::go::tests::test_complexity_with_conditionals ... ok [INFO] [stdout] test complexity::languages::rust::tests::test_cyclomatic_complexity ... ok [INFO] [stdout] test checkers::typescript::tests::test_eslint_file_ignored_filtered ... ok [INFO] [stdout] test checkers::cpp::tests::test_cpp_checker_default_oc_fn_length ... ok [INFO] [stdout] test complexity::languages::python::tests::test_complexity_with_conditionals ... ok [INFO] [stdout] test checkers::cpp::tests::test_cpp_checker_with_cpplint_cpp_config ... ok [INFO] [stdout] test complexity::languages::rust::tests::test_detect_function ... ok [INFO] [stdout] test complexity::languages::rust::tests::test_rust_analyzer_creation ... ok [INFO] [stdout] test complexity::languages::typescript::tests::test_analyze_simple_function ... ok [INFO] [stdout] test complexity::languages::typescript::tests::test_typescript_analyzer_creation ... ok [INFO] [stdout] test complexity::metrics::tests::test_complexity_metrics_default ... ok [INFO] [stdout] test complexity::metrics::tests::test_cyclomatic_level ... ok [INFO] [stdout] test checkers::cpp::tests::test_cpp_checker_with_compile_commands_dir ... ok [INFO] [stdout] test complexity::metrics::tests::test_file_metrics ... ok [INFO] [stdout] test complexity::languages::typescript::tests::test_detect_function ... ok [INFO] [stdout] test complexity::analyzer::tests::test_complexity_analyzer_creation ... ok [INFO] [stdout] test checkers::cpp::tests::test_cpp_checker_with_config ... ok [INFO] [stdout] test complexity::metrics::tests::test_function_metrics ... ok [INFO] [stdout] test complexity::report::tests::test_format_html ... ok [INFO] [stdout] test complexity::report::tests::test_format_human ... ok [INFO] [stdout] test complexity::report::tests::test_format_json ... ok [INFO] [stdout] test complexity::report::tests::test_format_markdown ... ok [INFO] [stdout] test complexity::report::tests::test_format_parsing ... ok [INFO] [stdout] test complexity::thresholds::tests::test_check_cyclomatic ... ok [INFO] [stdout] test complexity::thresholds::tests::test_threshold_strict ... ok [INFO] [stdout] test config::cli::tests::test_parse_scalar_value ... ok [INFO] [stdout] test config::migrate::converters::prettier::tests::test_generate_prettier_js ... ok [INFO] [stdout] test config::migrate::converters::eslint::tests::test_generate_eslint_js ... ok [INFO] [stdout] test config::migrate::converters::python::tests::test_generate_ruff_toml_from_black ... ok [INFO] [stdout] test config::migrate::converters::python::tests::test_generate_ruff_toml_with_isort ... ok [INFO] [stdout] test complexity::thresholds::tests::test_threshold_defaults ... ok [INFO] [stdout] test config::migrate::parsers::eslint::tests::test_parse_json_config ... ok [INFO] [stdout] test config::migrate::parsers::prettier::tests::test_parse_json_config ... ok [INFO] [stdout] test config::migrate::parsers::eslint::tests::test_parse_rule_value ... ok [INFO] [stdout] test config::migrate::detect::tests::test_detect_no_configs ... ok [INFO] [stdout] test config::migrate::parsers::python::tests::test_parse_isort_config ... ok [INFO] [stdout] test config::migrate::parsers::prettier::tests::test_to_js_object ... ok [INFO] [stdout] test config::cli::tests::test_config_add_includes ... ok [INFO] [stdout] test config::migrate::detect::tests::test_detect_eslint_json_config ... ok [INFO] [stdout] test config::resolver::tests::test_builder ... ok [INFO] [stdout] test config::migrate::validate::tests::test_validate_suggests_linthis_init ... ok [INFO] [stdout] test config::migrate::detect::tests::test_detect_black_config ... ok [INFO] [stdout] test config::migrate::validate::tests::test_validate_warns_about_multiple_eslint_configs ... ok [INFO] [stdout] test config::cli::tests::test_config_add_dedup ... ok [INFO] [stdout] test config::cli::tests::test_config_set_max_complexity ... ok [INFO] [stdout] test config::migrate::detect::tests::test_detect_prettier_config ... ok [INFO] [stdout] test config::resolver::tests::test_config_resolver_sorting ... ok [INFO] [stdout] test config::migrate::parsers::python::tests::test_parse_black_config ... ok [INFO] [stdout] test config::resolver::tests::test_config_source_priority ... ok [INFO] [stdout] test config::resolver::tests::test_get_config_names_python ... ok [INFO] [stdout] test config::resolver::tests::test_get_config_names_typescript ... ok [INFO] [stdout] test config::resolver::tests::test_get_plugin_config ... ok [INFO] [stdout] test config::resolver::tests::test_get_plugin_config_not_found ... ok [INFO] [stdout] test config::resolver::tests::test_is_plugin_config_path ... ok [INFO] [stdout] test config::resolver::tests::test_local_config_has_priority ... ok [INFO] [stdout] test config::resolver::tests::test_resolver_len_and_is_empty ... ok [INFO] [stdout] test config::resolver::tests::test_plugin_config_used_when_no_local ... ok [INFO] [stdout] test config::tests::test_built_in_defaults ... ok [INFO] [stdout] test config::tests::test_config_default ... ok [INFO] [stdout] test config::tests::test_backward_compatibility ... ok [INFO] [stdout] test config::tests::test_config_merge ... ok [INFO] [stdout] test config::tests::test_config_merge_empty_languages_preserves ... ok [INFO] [stdout] test config::tests::test_config_merge_includes_extends ... ok [INFO] [stdout] test config::tests::test_config_merge_languages ... ok [INFO] [stdout] test config::tests::test_config_merge_verbose ... ok [INFO] [stdout] test config::tests::test_config_new ... ok [INFO] [stdout] test config::tests::test_cpp_fn_length_from_toml ... ok [INFO] [stdout] test config::tests::test_cpp_language_config_from_toml ... ok [INFO] [stdout] test config::tests::test_fn_length_merge_order_plugin_then_project ... ok [INFO] [stdout] test config::tests::test_generate_default_toml_is_valid ... ok [INFO] [stdout] test config::tests::test_get_plugin_sources_empty ... ok [INFO] [stdout] test config::tests::test_get_plugin_sources_with_plugins ... ok [INFO] [stdout] test config::tests::test_generate_default_toml_has_expected_values ... ok [INFO] [stdout] test config::tests::test_language_overrides_simplified_syntax ... ok [INFO] [stdout] test config::tests::test_new_field_names ... ok [INFO] [stdout] test config::tests::test_plugin_source_with_all_fields ... ok [INFO] [stdout] test config::tests::test_oc_fn_length_default_is_none ... ok [INFO] [stdout] test config::tests::test_objectivec_alias ... ok [INFO] [stdout] test config::tests::test_source_config_default ... ok [INFO] [stdout] test config::tests::test_language_overrides_merge_none_preserves ... ok [INFO] [stdout] test config::tests::test_project_config_path ... ok [INFO] [stdout] test fixers::cpplint::tests::test_fix_comment_spacing_cpplint ... ok [INFO] [stdout] test config::tests::test_plugin_config_default ... ok [INFO] [stdout] test config::tests::test_oc_fn_length_from_toml ... ok [INFO] [stdout] test config::tests::test_plugin_source_enabled_default ... ok [INFO] [stdout] test config::tests::test_source_config_from_toml ... ok [INFO] [stdout] test fixers::cpplint::tests::test_fix_comment_spacing_preserves_url ... ok [INFO] [stdout] test config::tests::test_fn_length_project_config_without_plugin ... ok [INFO] [stdout] test config::tests::test_fn_length_no_plugin_falls_back_to_none ... ok [INFO] [stdout] test fixers::cpplint::tests::test_fix_comment_spacing_triple_slash ... ok [INFO] [stdout] test fixers::cpplint::tests::test_fix_comment_spacing_url_and_comment ... ok [INFO] [stdout] test config::tests::test_language_overrides_merge ... ok [INFO] [stdout] test fixers::cpplint::tests::test_fix_header_guard_from_error ... ok [INFO] [stdout] test fixers::cpplint::tests::test_fix_todo_from_error ... ok [INFO] [stdout] test fixers::cpplint::tests::test_insert_header_guard_after_block_comment ... ok [INFO] [stdout] test fixers::cpplint::tests::test_insert_missing_header_guard ... ok [INFO] [stdout] test config::tests::test_fn_length_project_config_overrides_plugin ... ok [INFO] [stdout] test config::tests::test_fn_length_plugin_linthis_toml_loaded ... ok [INFO] [stdout] test fixers::cpplint::tests::test_parse_cpplint_output ... ok [INFO] [stdout] test fixers::source::tests::test_fix_comment_spacing_basic ... ok [INFO] [stdout] test fixers::cpplint::tests::test_parse_whitespace_comments_error ... ok [INFO] [stdout] test fixers::cpplint::tests::test_fix_endif_line ... ok [INFO] [stdout] test fixers::cpplint::tests::test_parse_missing_header_guard ... ok [INFO] [stdout] test fixers::source::tests::test_fix_comment_spacing_already_has_space ... ok [INFO] [stdout] test fixers::source::tests::test_fix_comment_spacing_empty_comment ... ok [INFO] [stdout] test fixers::source::tests::test_fix_comment_spacing_char_literal ... ok [INFO] [stdout] test fixers::source::tests::test_fix_comment_spacing_escaped_quote ... ok [INFO] [stdout] test fixers::source::tests::test_fix_comment_spacing_preserves_url ... ok [INFO] [stdout] test fixers::source::tests::test_fix_comment_spacing_preserves_multiple_urls ... ok [INFO] [stdout] test fixers::source::tests::test_fix_comment_spacing_chinese ... ok [INFO] [stdout] test fixers::source::tests::test_fix_comment_spacing_string_with_slashes ... ok [INFO] [stdout] test fixers::source::tests::test_fix_comment_spacing_quote_in_char_literal ... ok [INFO] [stdout] test fixers::source::tests::test_fix_lone_semicolon_keeps_valid ... ok [INFO] [stdout] test fixers::source::tests::test_fix_comment_spacing_triple_slash ... ok [INFO] [stdout] test fixers::source::tests::test_fix_comment_spacing_url_and_comment ... ok [INFO] [stdout] test fixers::source::tests::test_fix_lone_semicolon_removes ... ok [INFO] [stdout] test fixers::source::tests::test_fix_lone_semicolon_with_whitespace ... ok [INFO] [stdout] test fixers::source::tests::test_fix_long_comments_chinese ... ok [INFO] [stdout] test fixers::source::tests::test_fix_long_comments_breaks_long_line ... ok [INFO] [stdout] test fixers::source::tests::test_is_in_cpp_string ... ok [INFO] [stdout] test fixers::source::tests::test_fix_long_comments_short_line ... ok [INFO] [stdout] test fixers::source::tests::test_fix_pragma_keeps_normal ... ok [INFO] [stdout] test fixers::source::tests::test_fix_pragma_mark_separator ... ok [INFO] [stdout] test fixers::source::tests::test_fix_pragma_with_section_name ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_ns_type_after_paren ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_ns_type_after_space ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_ns_type_at_line_start ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_ns_type_no_false_positive_dns ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_ns_type_no_false_positive_lowercase ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_ns_type_no_false_positive_part_of_word ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_ns_type_nsarray ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_ns_type_nsstring ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_ns_type_pure_cpp ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_objc_syntax_array_literal ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_objc_syntax_implementation ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_objc_syntax_class_method ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_objc_syntax_instance_method ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_objc_syntax_interface ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_objc_syntax_nsarray ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_objc_syntax_nonnull ... ok [INFO] [stdout] test formatters::cpp::tests::test_detect_language_cpp_file ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_objc_syntax_nsdictionary ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_objc_syntax_nserror ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_objc_syntax_nsinteger ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_objc_syntax_nsobject ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_objc_syntax_nsstring ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_objc_syntax_nsuinteger ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_objc_syntax_nsurl ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_objc_syntax_nullable ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_objc_syntax_protocol ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_objc_syntax_pure_cpp ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_objc_syntax_string_literal ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_objc_syntax_ns_enum ... ok [INFO] [stdout] test formatters::cpp::tests::test_detect_language_h_file_cpp ... ok [INFO] [stdout] test formatters::cpp::tests::test_detect_language_m_file ... ok [INFO] [stdout] test formatters::cpp::tests::test_contains_objc_syntax_ns_options ... ok [INFO] [stdout] test formatters::cpp::tests::test_detect_language_mm_file ... ok [INFO] [stdout] test interactive::ai_fix::tests::test_ai_fix_config_default ... ok [INFO] [stdout] test interactive::ai_fix::tests::test_ai_fix_config_with_provider ... ok [INFO] [stdout] test interactive::editor::tests::test_get_editor_default ... ok [INFO] [stdout] test interactive::menu::tests::test_interactive_action_clone ... ok [INFO] [stdout] test interactive::menu::tests::test_interactive_result_default ... ok [INFO] [stdout] test interactive::menu::tests::test_interactive_action_goto ... ok [INFO] [stdout] test interactive::nolint::tests::test_generate_cpp_nolint_clang_tidy ... ok [INFO] [stdout] test interactive::menu::tests::test_interactive_action_variants ... ok [INFO] [stdout] test interactive::nolint::tests::test_generate_cpp_nolint_cpplint ... ok [INFO] [stdout] test interactive::nolint::tests::test_generate_eslint_disable ... ok [INFO] [stdout] test interactive::nolint::tests::test_generate_cpp_nolint_empty ... ok [INFO] [stdout] test formatters::cpp::tests::test_detect_language_h_file_oc_interface ... ok [INFO] [stdout] test interactive::nolint::tests::test_generate_java_suppress ... ok [INFO] [stdout] test interactive::nolint::tests::test_generate_python_noqa ... ok [INFO] [stdout] test interactive::nolint::tests::test_generate_python_type_ignore ... ok [INFO] [stdout] test interactive::ai_fix::tests::test_ai_fix_result_default ... ok [INFO] [stdout] test interactive::nolint::tests::test_generate_go_nolint ... ok [INFO] [stdout] test interactive::nolint::tests::test_generate_rust_allow ... ok [INFO] [stdout] test formatters::cpp::tests::test_detect_language_h_file_oc_property ... ok [INFO] [stdout] test interactive::nolint::tests::test_generate_rust_allow_short ... ok [INFO] [stdout] test interactive::quickfix::tests::test_format_issue_quickfix_no_column ... ok [INFO] [stdout] test interactive::quickfix::tests::test_generate_quickfix_empty ... ok [INFO] [stdout] test interactive::nolint::tests::test_describe_nolint_action ... ok [INFO] [stdout] test interactive::quickfix::tests::test_format_issue_quickfix_no_code ... ok [INFO] [stdout] test interactive::nolint::tests::test_get_indentation ... ok [INFO] [stdout] test interactive::quickfix::tests::test_format_issue_quickfix_basic ... ok [INFO] [stdout] test interactive::quickfix::tests::test_generate_quickfix_multiple ... ok [INFO] [stdout] test license::policy::tests::test_license_category ... ok [INFO] [stdout] test license::policy::tests::test_policy_check_allowed ... ok [INFO] [stdout] test license::policy::tests::test_policy_check_denied ... ok [INFO] [stdout] test license::policy::tests::test_policy_default ... ok [INFO] [stdout] test license::languages::go::tests::test_go_scanner_detect ... ok [INFO] [stdout] test license::report::tests::test_report_format_from_str ... ok [INFO] [stdout] test license::languages::rust::tests::test_rust_scanner_detect ... ok [INFO] [stdout] test license::report::tests::test_report_format ... ok [INFO] [stdout] test license::policy::tests::test_policy_strict ... ok [INFO] [stdout] test license::scanner::tests::test_scan_options_default ... ok [INFO] [stdout] test interactive::quickfix::tests::test_format_issue_quickfix_escapes_newlines ... ok [INFO] [stdout] test license::scanner::tests::test_scan_result_default ... ok [INFO] [stdout] test license::spdx::tests::test_parse_expression ... ok [INFO] [stdout] test license::spdx::tests::test_pattern_matching ... ok [INFO] [stdout] test license::scanner::tests::test_license_scanner_creation ... ok [INFO] [stdout] test license::spdx::tests::test_spdx_is_copyleft ... ok [INFO] [stdout] test license::spdx::tests::test_spdx_from_str ... ok [INFO] [stdout] test lsp::diagnostics::tests::test_severity_mapping ... ok [INFO] [stdout] test lsp::diagnostics::tests::test_to_diagnostic ... ok [INFO] [stdout] test license::spdx::tests::test_spdx_is_permissive ... ok [INFO] [stdout] test license::scanner::tests::test_package_license_new ... ok [INFO] [stdout] test lsp::diagnostics::tests::test_diagnostic_with_suggestion ... ok [INFO] [stdout] test lsp::server::tests::test_lsp_mode_default ... ok [INFO] [stdout] test lsp::document::tests::test_document_lifecycle ... ok [INFO] [stdout] test lsp::server::tests::test_lsp_mode_from_str ... ok [INFO] [stdout] test plugin::auto_sync::tests::test_auto_sync_config_default ... ok [INFO] [stdout] test plugin::auto_sync::tests::test_auto_sync_config_is_disabled ... ok [INFO] [stdout] test plugin::auto_sync::tests::test_auto_sync_config_validate ... ok [INFO] [stdout] test plugin::auto_sync::tests::test_auto_sync_config_should_prompt ... ok [INFO] [stdout] test plugin::auto_sync::tests::test_should_sync_disabled ... ok [INFO] [stdout] test plugin::auto_sync::tests::test_get_last_sync_time_none ... ok [INFO] [stdout] test plugin::cache::tests::test_format_size ... ok [INFO] [stdout] test plugin::cache::tests::test_url_to_cache_path ... ok [INFO] [stdout] test plugin::auto_sync::tests::test_should_sync_never_synced ... ok [INFO] [stdout] test license::languages::node::tests::test_node_scanner_detect ... ok [INFO] [stdout] test plugin::cache::tests::test_is_cached_empty ... ok [INFO] [stdout] test plugin::config_manager::tests::test_add_duplicate_alias ... ok [INFO] [stdout] test plugin::fetcher::tests::test_looks_like_commit_hash ... ok [INFO] [stdout] test plugin::manifest::tests::test_scaffold_manifest ... ok [INFO] [stdout] test plugin::manifest::tests::test_parse_full_manifest ... ok [INFO] [stdout] test plugin::config_manager::tests::test_remove_nonexistent ... ok [INFO] [stdout] test plugin::manifest::tests::test_parse_minimal_manifest ... ok [INFO] [stdout] test plugin::registry::tests::test_resolve_unknown_name ... ok [INFO] [stdout] test plugin::registry::tests::test_builtin_registry_has_official ... ok [INFO] [stdout] test plugin::registry::tests::test_resolve_url_passthrough ... ok [INFO] [stdout] test plugin::tests::test_name_from_url_github_https ... ok [INFO] [stdout] test plugin::tests::test_name_from_url_github_ssh ... ok [INFO] [stdout] test plugin::tests::test_name_from_url_no_git_suffix ... ok [INFO] [stdout] test plugin::tests::test_name_from_url_simple_path ... ok [INFO] [stdout] test plugin::tests::test_plugin_error_display_clone_failed ... ok [INFO] [stdout] test plugin::config_manager::tests::test_add_plugin_with_ref ... ok [INFO] [stdout] test plugin::tests::test_plugin_error_display_git_not_installed ... ok [INFO] [stdout] test plugin::tests::test_plugin_error_display_incompatible_version ... ok [INFO] [stdout] test license::languages::java::tests::test_java_scanner_detect ... ok [INFO] [stdout] test plugin::tests::test_plugin_error_display_not_cached ... ok [INFO] [stdout] test plugin::tests::test_plugin_source_new_from_https_url_no_git_suffix ... ok [INFO] [stdout] test plugin::tests::test_plugin_error_display_unknown_plugin ... ok [INFO] [stdout] test plugin::auto_sync::tests::test_time_since_last_sync ... ok [INFO] [stdout] test plugin::tests::test_plugin_source_is_not_local_path ... ok [INFO] [stdout] test plugin::config_manager::tests::test_get_plugin_by_alias ... ok [INFO] [stdout] test plugin::auto_sync::tests::test_should_sync_interval ... ok [INFO] [stdout] test license::languages::python::tests::test_python_scanner_detect ... ok [INFO] [stdout] test plugin::tests::test_plugin_source_new_from_local_path_parent ... ok [INFO] [stdout] test plugin::auto_sync::tests::test_update_and_get_last_sync_time ... ok [INFO] [stdout] test plugin::config_manager::tests::test_add_plugin ... ok [INFO] [stdout] test plugin::registry::tests::test_resolve_registry_name ... ok [INFO] [stdout] test plugin::tests::test_plugin_error_display_invalid_manifest ... ok [INFO] [stdout] test plugin::loader::tests::test_extract_configs ... ok [INFO] [stdout] test plugin::config_manager::tests::test_remove_plugin ... ok [INFO] [stdout] test plugin::tests::test_plugin_source_new_from_local_path_absolute ... ok [INFO] [stdout] test plugin::tests::test_plugin_source_new_from_local_path_relative ... ok [INFO] [stdout] test plugin::tests::test_plugin_source_new_from_https_url ... ok [INFO] [stdout] test plugin::tests::test_plugin_source_new_from_registry_name ... ok [INFO] [stdout] test plugin::tests::test_plugin_source_with_ref ... ok [INFO] [stdout] test plugin::tests::test_plugin_source_with_ref_branch ... ok [INFO] [stdout] test plugin::tests::test_plugin_source_with_ref_commit_hash ... ok [INFO] [stdout] test presets::tests::test_preset_name_parse ... ok [INFO] [stdout] test presets::tests::test_airbnb_preset ... ok [INFO] [stdout] test presets::tests::test_standard_preset ... ok [INFO] [stdout] test reports::consistency::tests::test_calculate_consistency_score ... ok [INFO] [stdout] test plugin::fetcher::tests::test_git_available ... ok [INFO] [stdout] test plugin::tests::test_plugin_source_new_from_ssh_url ... ok [INFO] [stdout] test reports::html::tests::test_truncate_message ... ok [INFO] [stdout] test presets::tests::test_google_preset ... ok [INFO] [stdout] test reports::consistency::tests::test_consistency_analysis_empty ... ok [INFO] [stdout] test reports::html::tests::test_generate_html_report_empty ... ok [INFO] [stdout] test reports::statistics::tests::test_severity_counts_total ... ok [INFO] [stdout] test reports::statistics::tests::test_format_human ... ok [INFO] [stdout] test reports::html::tests::test_html_escape ... ok [INFO] [stdout] test reports::statistics::tests::test_statistics_from_run_result ... ok [INFO] [stdout] test reports::html::tests::test_generate_html_report_with_issues ... ok [INFO] [stdout] test reports::templates::tests::test_generate_trend_chart_svg ... ok [INFO] [stdout] test reports::templates::tests::test_truncate_label ... ok [INFO] [stdout] test reports::trends::tests::test_parse_result_timestamp ... ok [INFO] [stdout] test reports::templates::tests::test_generate_bar_chart_svg ... ok [INFO] [stdout] test reports::consistency::tests::test_consistency_analysis_with_issues ... ok [INFO] [stdout] test reports::templates::tests::test_report_css_not_empty ... ok [INFO] [stdout] test reports::trends::tests::test_trend_analysis_empty ... ok [INFO] [stdout] test reports::templates::tests::test_html_report_template ... ok [INFO] [stdout] test reports::trends::tests::test_trend_analysis_degrading ... ok [INFO] [stdout] test reports::trends::tests::test_trend_analysis_improving ... ok [INFO] [stdout] test reports::trends::tests::test_trend_direction_display ... ok [INFO] [stdout] test review::analyzer::tests::test_determine_assessment_critical ... ok [INFO] [stdout] test review::analyzer::tests::test_determine_assessment_needs_work ... ok [INFO] [stdout] test review::analyzer::tests::test_determine_assessment_ready ... ok [INFO] [stdout] test review::analyzer::tests::test_extract_json_from_markdown ... ok [INFO] [stdout] test review::analyzer::tests::test_extract_json_plain ... ok [INFO] [stdout] test review::analyzer::tests::test_extract_json_with_surrounding_text ... ok [INFO] [stdout] test review::analyzer::tests::test_parse_review_response ... ok [INFO] [stdout] test review::background::tests::test_review_status_display ... ok [INFO] [stdout] test review::diff::tests::test_chunk_diff_single_chunk ... ok [INFO] [stdout] test review::diff::tests::test_estimate_tokens ... ok [INFO] [stdout] test review::diff::tests::test_hunk_header_parsing ... ok [INFO] [stdout] test review::diff::tests::test_parse_binary_file ... ok [INFO] [stdout] test review::diff::tests::test_parse_empty_diff ... ok [INFO] [stdout] test review::diff::tests::test_parse_deleted_file ... ok [INFO] [stdout] test review::diff::tests::test_parse_new_file ... ok [INFO] [stdout] test review::diff::tests::test_parse_multi_file_diff ... ok [INFO] [stdout] test review::diff::tests::test_parse_renamed_file ... ok [INFO] [stdout] test review::notifier::tests::test_build_template_vars ... ok [INFO] [stdout] test review::notifier::tests::test_expand_template ... ok [INFO] [stdout] test review::notifier::tests::test_expand_template_no_match ... ok [INFO] [stdout] test review::platform::tests::test_expand_template ... ok [INFO] [stdout] test review::platform::tests::test_extract_domain_https ... ok [INFO] [stdout] test review::platform::tests::test_extract_domain_ssh ... ok [INFO] [stdout] test review::platform::tests::test_extract_domain_ssh_scheme ... ok [INFO] [stdout] test review::platform::tests::test_resolve_platform_builtin ... ok [INFO] [stdout] test review::platform::tests::test_sanitize_branch_name ... ok [INFO] [stdout] test review::platform::tests::test_resolve_platform_user_override ... ok [INFO] [stdout] test review::prompts::tests::test_build_review_prompt_single_file ... ok [INFO] [stdout] test review::prompts::tests::test_build_review_prompt_skips_binary ... ok [INFO] [stdout] test review::fixer::tests::test_apply_fix_multi_line ... ok [INFO] [stdout] test review::diff::tests::test_parse_single_file_diff ... ok [INFO] [stdout] test review::fixer::tests::test_generate_and_apply_fixes_no_fixable ... ok [INFO] [stdout] test review::background::tests::test_review_status_display_completed ... ok [INFO] [stdout] test review::background::tests::test_timestamp_is_numeric ... ok [INFO] [stdout] test review::fixer::tests::test_apply_fix_single_line ... ok [INFO] [stdout] test review::report::tests::test_empty_result_report ... ok [INFO] [stdout] test review::report::tests::test_markdown_report_contains_sections ... ok [INFO] [stdout] test review::report::tests::test_markdown_report_issue_formatting ... ok [INFO] [stdout] test review::report::tests::test_notification_summary ... ok [INFO] [stdout] test review::reviewer::tests::test_resolve_reviewers_cli_priority ... ok [INFO] [stdout] test review::prompts::tests::test_system_prompt_contains_dimensions ... ok [INFO] [stdout] test review::reviewer::tests::test_resolve_reviewers_config_fallback ... ok [INFO] [stdout] test rules::config::tests::test_custom_rule_applies_to_all ... ok [INFO] [stdout] test rules::config::tests::test_custom_rule_builder ... ok [INFO] [stdout] test rules::config::tests::test_rules_config_default ... ok [INFO] [stdout] test rules::config::tests::test_severity_override_to_severity ... ok [INFO] [stdout] test rules::custom_checker::tests::test_custom_checker_disabled_rule ... ok [INFO] [stdout] test rules::custom_checker::tests::test_custom_checker_empty ... ok [INFO] [stdout] test rules::config::tests::test_deserialize_rules_config ... ok [INFO] [stdout] test rules::config::tests::test_rules_config_merge ... ok [INFO] [stdout] test rules::custom_checker::tests::test_custom_checker_invalid_regex ... ok [INFO] [stdout] test rules::filter::tests::test_filter_disabled_exact ... ok [INFO] [stdout] test rules::filter::tests::test_filter_disabled_prefix ... ok [INFO] [stdout] test review::reviewer::tests::test_resolve_reviewers_empty_cli ... ok [INFO] [stdout] test rules::filter::tests::test_filter_issues ... ok [INFO] [stdout] test rules::filter::tests::test_filter_severity_override ... ok [INFO] [stdout] test rules::filter::tests::test_merge_language_config ... ok [INFO] [stdout] test rules::custom_checker::tests::test_custom_checker_column_tracking ... ok [INFO] [stdout] test rules::custom_checker::tests::test_custom_checker_simple_pattern ... ok [INFO] [stdout] test rules::custom_checker::tests::test_custom_checker_extension_filter ... ok [INFO] [stdout] test security::scanner::tests::test_scan_options_default ... ok [INFO] [stdout] test security::advisories::tests::test_suppression_list ... ok [INFO] [stdout] test security::scanner::tests::test_scan_result_default ... ok [INFO] [stdout] test rules::custom_checker::tests::test_custom_checker_language_filter ... ok [INFO] [stdout] test security::languages::java::tests::test_java_scanner_detect ... ok [INFO] [stdout] test security::vulnerability::tests::test_severity_threshold ... ok [INFO] [stdout] test security::vulnerability::tests::test_severity_from_str ... ok [INFO] [stdout] test self_update::tests::test_get_current_version ... ok [INFO] [stdout] test security::vulnerability::tests::test_severity_ordering ... ok [INFO] [stdout] test security::languages::go::tests::test_go_scanner_detect ... ok [INFO] [stdout] test self_update::tests::test_self_update_config_should_prompt ... ok [INFO] [stdout] test self_update::tests::test_self_update_config_validate ... ok [INFO] [stdout] test rules::filter::tests::test_filter_stats ... ok [INFO] [stdout] test rules::custom_checker::tests::test_rule_info ... ok [INFO] [stdout] test security::languages::node::tests::test_node_scanner_detect ... ok [INFO] [stdout] test security::languages::python::tests::test_python_scanner_detect ... ok [INFO] [stdout] test security::languages::rust::tests::test_rust_scanner_detect ... ok [INFO] [stdout] test rules::custom_checker::tests::test_custom_checker_with_suggestion ... ok [INFO] [stdout] test rules::custom_checker::tests::test_custom_checker_with_severity ... ok [INFO] [stdout] test security::report::tests::test_report_format ... ok [INFO] [stdout] test security::advisories::tests::test_advisory_database ... ok [INFO] [stdout] test self_update::tests::test_should_check_never_checked ... ok [INFO] [stdout] test self_update::tests::test_self_update_config_default ... ok [INFO] [stdout] test self_update::tests::test_version_comparison ... ok [INFO] [stdout] test tui::app::tests::test_app_state_transitions ... ok [INFO] [stdout] test self_update::tests::test_self_update_config_is_disabled ... ok [INFO] [stdout] test tui::app::tests::test_focus_switching ... ok [INFO] [stdout] test tui::app::tests::test_force_rerun ... ok [INFO] [stdout] test tui::app::tests::test_navigation ... ok [INFO] [stdout] test tui::event::tests::test_help_toggle ... ok [INFO] [stdout] test tui::event::tests::test_navigation_keys ... ok [INFO] [stdout] test tui::event::tests::test_quit_with_ctrl_c ... ok [INFO] [stdout] test tui::event::tests::test_rerun_request ... ok [INFO] [stdout] test tui::event::tests::test_tab_switches_focus ... ok [INFO] [stdout] test tui::ui::tests::test_format_path_long ... ok [INFO] [stdout] test tui::event::tests::test_quit_with_q ... ok [INFO] [stdout] test tui::ui::tests::test_format_path_short ... ok [INFO] [stdout] test tui::ui::tests::test_severity_color ... ok [INFO] [stdout] test tui::widgets::file_tree::tests::test_truncate_path ... ok [INFO] [stdout] test utils::language::tests::test_parse_languages ... ok [INFO] [stdout] test utils::output::tests::test_format_issue_human ... ok [INFO] [stdout] test utils::output::tests::test_format_issue_github_actions ... ok [INFO] [stdout] test utils::types::tests::test_format_result_changed ... ok [INFO] [stdout] test tui::widgets::issue_list::tests::test_severity_display ... ok [INFO] [stdout] test tui::widgets::file_tree::tests::test_status_display ... ok [INFO] [stdout] test self_update::tests::test_update_and_get_last_check_time ... ok [INFO] [stdout] test utils::types::tests::test_lint_issue_with_source ... ok [INFO] [stdout] test utils::types::tests::test_run_result_add_format_result_changed ... ok [INFO] [stdout] test utils::types::tests::test_format_result_error ... ok [INFO] [stdout] test utils::types::tests::test_format_result_unchanged ... ok [INFO] [stdout] test utils::types::tests::test_format_result_with_diff ... ok [INFO] [stdout] test utils::types::tests::test_run_result_add_format_result_unchanged ... ok [INFO] [stdout] test utils::language::tests::test_extension_mapping ... ok [INFO] [stdout] test utils::types::tests::test_lint_issue_builder_chaining ... ok [INFO] [stdout] test utils::types::tests::test_lint_issue_new ... ok [INFO] [stdout] test utils::types::tests::test_lint_issue_with_code ... ok [INFO] [stdout] test utils::types::tests::test_lint_issue_with_suggestion ... ok [INFO] [stdout] test utils::types::tests::test_lint_issue_with_column ... ok [INFO] [stdout] test utils::types::tests::test_lint_issue_with_language ... ok [INFO] [stdout] test utils::types::tests::test_run_mode_kind_default ... ok [INFO] [stdout] test utils::types::tests::test_run_result_add_issue ... ok [INFO] [stdout] test utils::types::tests::test_run_result_calculate_exit_code_format_error ... ok [INFO] [stdout] test utils::types::tests::test_run_result_calculate_exit_code_success ... ok [INFO] [stdout] test utils::types::tests::test_run_result_calculate_exit_code_with_error ... ok [INFO] [stdout] test utils::types::tests::test_run_result_calculate_exit_code_with_warning ... ok [INFO] [stdout] test utils::types::tests::test_run_result_count_files_with_issues_empty ... ok [INFO] [stdout] test utils::types::tests::test_run_result_new ... ok [INFO] [stdout] test utils::types::tests::test_severity_display_error ... ok [INFO] [stdout] test utils::types::tests::test_severity_display_info ... ok [INFO] [stdout] test tui::widgets::help::tests::test_centered_rect ... ok [INFO] [stdout] test utils::types::tests::test_severity_display_warning ... ok [INFO] [stdout] test utils::types::tests::test_severity_equality ... ok [INFO] [stdout] test utils::unicode::tests::test_column_width_mixed ... ok [INFO] [stdout] test utils::unicode::tests::test_break_text_chinese_punctuation ... ok [INFO] [stdout] test utils::unicode::tests::test_break_text_at_space ... ok [INFO] [stdout] test utils::unicode::tests::test_column_width_ascii ... ok [INFO] [stdout] test utils::unicode::tests::test_column_width_cjk ... ok [INFO] [stdout] test utils::unicode::tests::test_column_width_empty ... ok [INFO] [stdout] test utils::unicode::tests::test_column_width_fullwidth ... ok [INFO] [stdout] test utils::unicode::tests::test_column_width_korean ... ok [INFO] [stdout] test utils::unicode::tests::test_column_width_japanese ... ok [INFO] [stdout] test utils::unicode::tests::test_break_text_short ... ok [INFO] [stdout] test utils::types::tests::test_run_result_count_files_with_issues ... ok [INFO] [stdout] test utils::unicode::tests::test_is_wide_char_cjk_ranges ... ok [INFO] [stdout] test utils::unicode::tests::test_is_wide_char_japanese ... ok [INFO] [stdout] test utils::unicode::tests::test_is_wide_char_korean ... ok [INFO] [stdout] test utils::unicode::tests::test_break_text_no_break_point ... ok [INFO] [stdout] test utils::unicode::tests::test_is_wide_char ... ok [INFO] [stdout] test watch::state::tests::test_watch_state_counts ... ok [INFO] [stdout] test watch::state::tests::test_watch_state_recent_changes ... ok [INFO] [stdout] test utils::walker::tests::test_matches_language_filter ... ok [INFO] [stdout] test watch::debounce::tests::test_debouncer_flush ... ok [INFO] [stdout] test watch::debounce::tests::test_debouncer_remove_not_debounced ... ok [INFO] [stdout] test watch::state::tests::test_file_info_update ... ok [INFO] [stdout] test watch::state::tests::test_file_status_symbols ... ok [INFO] [stdout] test utils::walker::tests::test_is_excluded ... ok [INFO] [stdout] test watch::watcher::tests::test_should_skip_path ... ok [INFO] [stdout] test watch::state::tests::test_file_info_creation ... ok [INFO] [stdout] test watch::watcher::tests::test_file_watcher_creation ... ok [INFO] [stdout] test watch::watcher::tests::test_watch_event_lintable ... ok [INFO] [stdout] test security::scanner::tests::test_security_scanner_creation ... ok [INFO] [stdout] test watch::debounce::tests::test_debouncer_multiple_files ... ok [INFO] [stdout] test watch::debounce::tests::test_debouncer_basic ... ok [INFO] [stdout] test watch::debounce::tests::test_time_until_ready ... ok [INFO] [stdout] test watch::watcher::tests::test_file_watcher_detects_changes ... ok [INFO] [stdout] test watch::debounce::tests::test_debouncer_coalesce ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 581 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.42s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/linthis-69fe3ba7f04fb5d6) [INFO] [stdout] [INFO] [stdout] running 29 tests [INFO] [stderr] Running tests/cli_tests.rs (/opt/rustwide/target/debug/deps/cli_tests-947cabd2c533c0be) [INFO] [stdout] test cli::complexity::tests::test_complexity_command_options ... ok [INFO] [stdout] test cli::hook::tests::test_cmsg_content_contains_linthis_cmsg ... ok [INFO] [stdout] test cli::hook::tests::test_agent_plugin_id_unified ... ok [INFO] [stdout] test cli::hook::tests::test_dedup_agent_and_git_with_agent_coexist ... ok [INFO] [stdout] test cli::hook::tests::test_copy_dir_recursive ... ok [INFO] [stdout] test cli::hook::tests::test_dedup_base_and_with_agent ... ok [INFO] [stdout] test cli::hook::tests::test_dedup_events_removes_exact_dups ... ok [INFO] [stdout] test cli::hook::tests::test_dedup_exact_duplicate ... ok [INFO] [stdout] test cli::hook::tests::test_dedup_prek_pair ... ok [INFO] [stdout] test cli::hook::tests::test_fallback_agent_only_yes ... ok [INFO] [stdout] test cli::hook::tests::test_fallback_empty_types_and_events ... ok [INFO] [stdout] test cli::hook::tests::test_fallback_types_provided_events_empty ... ok [INFO] [stdout] test cli::hook::tests::test_review_content_contains_git_diff ... ok [INFO] [stdout] test cli::hook::tests::test_skill_path_claude_per_event ... ok [INFO] [stdout] test cli::hook::tests::test_lint_content_contains_linthis_s ... ok [INFO] [stdout] test cli::hook::tests::test_skill_path_with_custom_names ... ok [INFO] [stdout] test cli::hook::tests::test_skill_path_cursor_per_event ... ok [INFO] [stdout] test cli::watch::tests::test_watch_config_default ... ok [INFO] [stdout] test cli::hook::tests::test_fixed_agent_plugin_dir_default_fallback ... ok [INFO] [stdout] test cli::hook::tests::test_fixed_agent_plugin_dir_not_found ... ok [INFO] [stdout] test cli::hook::tests::test_skill_path_codebuddy_per_event ... ok [INFO] [stdout] test cli::hook::tests::test_skill_path_gemini_per_event ... ok [INFO] [stdout] test cli::hook::tests::test_install_agent_plugin_from_dir_single_file_provider ... ok [INFO] [stdout] test cli::hook::tests::test_install_agent_plugin_from_dir_hooks_json ... ok [INFO] [stdout] test cli::hook::tests::test_fixed_agent_plugin_dir_provider_override ... ok [INFO] [stdout] test cli::hook::tests::test_fallback_mixed_yes ... ok [INFO] [stdout] test cli::hook::tests::test_skill_path_claude_global ... ok [INFO] [stdout] test cli::hook::tests::test_install_agent_plugin_from_dir_skill_and_command ... ok [INFO] [stdout] test cli::hook::tests::test_install_agent_plugin_from_dir_with_subdirs ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 80 tests [INFO] [stdout] test integration::cache_tests::test_cache_creation ... ok [INFO] [stdout] test integration::cache_tests::test_cache_clear ... ok [INFO] [stdout] test integration::cache_tests::test_cache_hit ... ok [INFO] [stdout] test integration::cache_tests::test_cache_corrupted_recovery ... ok [INFO] [stdout] test integration::check_tests::test_check_multiple_files ... ok [INFO] [stdout] test integration::check_tests::test_check_no_save_result ... ok [INFO] [stdout] test integration::cache_tests::test_cache_miss_on_file_change ... ok [INFO] [stdout] test integration::check_tests::test_check_json_output ... ok [INFO] [stdout] test integration::check_tests::test_check_with_exclude ... ok [INFO] [stdout] test integration::cache_tests::test_cache_status ... ok [INFO] [stdout] test integration::check_tests::test_check_with_language_flag ... ok [INFO] [stdout] test integration::config_tests::test_config_list ... ok [INFO] [stdout] test integration::check_tests::test_python_check_bad_file ... ok [INFO] [stdout] test integration::error_tests::test_checker_failure_continues ... ok [INFO] [stdout] test integration::config_tests::test_config_get ... ok [INFO] [stdout] test integration::config_tests::test_config_set ... ok [INFO] [stdout] test integration::config_tests::test_config_set_get_workflow ... ok [INFO] [stdout] test integration::cache_tests::test_cache_disabled ... ok [INFO] [stdout] test integration::config_tests::test_init_creates_config ... ok [INFO] [stdout] test integration::error_tests::test_file_not_found_error ... ok [INFO] [stdout] test integration::error_tests::test_empty_project ... ok [INFO] [stdout] test integration::error_tests::test_verbose_error_output ... ok [INFO] [stdout] test integration::format_tests::test_format_already_formatted ... ok [INFO] [stdout] test integration::format_tests::test_format_multiple_files ... ok [INFO] [stdout] test integration::format_tests::test_format_quiet_mode ... ok [INFO] [stdout] test integration::format_tests::test_format_with_exclude ... ok [INFO] [stdout] test integration::config_tests::test_init_with_hook ... ok [INFO] [stdout] test integration::check_tests::test_check_nonexistent_file ... ok [INFO] [stdout] test integration::language_tests::test_cpp_check ... ok [INFO] [stdout] test integration::language_tests::test_cpp_format ... ok [INFO] [stdout] test integration::format_tests::test_python_format_file ... ok [INFO] [stdout] test integration::language_tests::test_dart_format ... ok [INFO] [stdout] test integration::language_tests::test_dart_check ... ok [INFO] [stdout] test integration::language_tests::test_go_format ... ok [INFO] [stdout] test integration::language_tests::test_java_check ... ok [INFO] [stdout] test integration::language_tests::test_java_format ... ok [INFO] [stdout] test integration::language_tests::test_kotlin_check ... ok [INFO] [stdout] test integration::config_tests::test_config_project_file ... ok [INFO] [stdout] test integration::check_tests::test_python_check_good_file ... ok [INFO] [stdout] test integration::check_tests::test_check_verbose_mode ... ok [INFO] [stdout] test integration::check_tests::test_check_empty_directory ... ok [INFO] [stdout] test integration::check_tests::test_check_quiet_mode ... ok [INFO] [stdout] test integration::language_tests::test_swift_check ... ok [INFO] [stdout] test integration::language_tests::test_typescript_format ... ok [INFO] [stdout] test integration::language_tests::test_swift_format ... ok [INFO] [stdout] test integration::language_tests::test_typescript_check ... ok [INFO] [stdout] test integration::plugin_tests::test_plugin_add_invalid_url ... ok [INFO] [stdout] test integration::config_tests::test_init_force ... ok [INFO] [stdout] test integration::language_tests::test_lua_format ... ok [INFO] [stdout] test integration::error_tests::test_formatter_failure_continues ... ok [INFO] [stdout] test integration::error_tests::test_invalid_config_error ... ok [INFO] [stdout] test integration::language_tests::test_lua_check ... ok [INFO] [stdout] test integration::language_tests::test_go_check ... ok [INFO] [stdout] test integration::error_tests::test_permission_handling ... ok [INFO] [stdout] test integration::language_tests::test_kotlin_format ... ok [INFO] [stdout] test integration::error_tests::test_unsupported_language_handling ... ok [INFO] [stdout] test integration::plugin_tests::test_plugin_global_flag ... ok [INFO] [stdout] test integration::config_tests::test_hook_install ... ok [INFO] [stdout] test integration::plugin_tests::test_plugin_remove_nonexistent ... ok [INFO] [stdout] test integration::plugin_tests::test_plugin_validate ... ok [INFO] [stdout] test integration::plugin_tests::test_plugin_clean ... ok [INFO] [stdout] test integration::plugin_tests::test_plugin_list_empty ... ok [INFO] [stdout] test integration::plugin_tests::test_plugin_sync_empty ... ok [INFO] [stdout] test test_hook_install_multi_type_parses ... ok [INFO] [stdout] test integration::test_nonexistent_path ... ok [INFO] [stdout] test integration::test_help_flag ... ok [INFO] [stdout] test test_hook_install_repeated_event_parses ... ok [INFO] [stdout] test integration::test_hook_help ... ok [INFO] [stdout] test integration::test_plugin_help ... ok [INFO] [stdout] test integration::test_config_help ... ok [INFO] [stdout] test integration::test_version_flag ... ok [INFO] [stdout] test integration::test_quiet_mode ... ok [INFO] [stdout] test integration::test_init_help ... ok [INFO] [stdout] test integration::config_tests::test_hook_uninstall ... ok [INFO] [stdout] test integration::test_verbose_mode ... ok [INFO] [stdout] test integration::plugin_tests::test_plugin_add_with_name ... ok [INFO] [stdout] test integration::plugin_tests::test_plugin_add_remove_workflow ... ok [INFO] [stdout] test integration::plugin_tests::test_plugin_add_duplicate ... ok [INFO] [stdout] test integration::error_tests::test_missing_tool_graceful ... ok [INFO] [stdout] test integration::format_tests::test_rust_format_file ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 80 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.64s [INFO] [stdout] [INFO] [stderr] Doc-tests linthis [INFO] [stdout] [INFO] [stdout] running 11 tests [INFO] [stdout] test src/ai/mod.rs - ai (line 19) ... ignored [INFO] [stdout] test src/checkers/mod.rs - checkers (line 42) ... ignored [INFO] [stdout] test src/complexity/mod.rs - complexity (line 23) - compile ... ok [INFO] [stdout] test src/checkers/mod.rs - checkers (line 57) - compile ... ok [INFO] [stdout] test src/config/mod.rs - config (line 54) - compile ... ok [INFO] [stdout] test src/rules/mod.rs - rules (line 53) - compile ... ok [INFO] [stdout] test src/lib.rs - (line 48) - compile ... ok [INFO] [stdout] test src/license/mod.rs - license (line 24) - compile ... ok [INFO] [stdout] test src/security/mod.rs - security (line 33) - compile ... ok [INFO] [stdout] test src/config/mod.rs - config::Config (line 86) - compile ... ok [INFO] [stdout] test src/watch/mod.rs - watch (line 25) - compile ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 9 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.45s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "bf5a2f1e9dd380b4396676734ac7b5dd31556c83c315e14ace711bda0d1fcbfe", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "bf5a2f1e9dd380b4396676734ac7b5dd31556c83c315e14ace711bda0d1fcbfe", kill_on_drop: false }` [INFO] [stdout] bf5a2f1e9dd380b4396676734ac7b5dd31556c83c315e14ace711bda0d1fcbfe