[INFO] fetching crate unfault-analysis 0.2.1... [INFO] testing unfault-analysis-0.2.1 against try#dec9417b8611e34e787a3e4c37686b5131f9e5c5 for pr-154210-2 [INFO] extracting crate unfault-analysis 0.2.1 into /workspace/builds/worker-3-tc2/source [INFO] started tweaking crates.io crate unfault-analysis 0.2.1 [INFO] finished tweaking crates.io crate unfault-analysis 0.2.1 [INFO] tweaked toml for crates.io crate unfault-analysis 0.2.1 written to /workspace/builds/worker-3-tc2/source/Cargo.toml [INFO] validating manifest of crates.io crate unfault-analysis 0.2.1 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 unfault-analysis 0.2.1 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] 3c0d3d3e05955759a69ce604bc4d729e19e564776d1e0e1671758c3be50515ed [INFO] running `Command { std: "docker" "start" "-a" "3c0d3d3e05955759a69ce604bc4d729e19e564776d1e0e1671758c3be50515ed", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3c0d3d3e05955759a69ce604bc4d729e19e564776d1e0e1671758c3be50515ed", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3c0d3d3e05955759a69ce604bc4d729e19e564776d1e0e1671758c3be50515ed", kill_on_drop: false }` [INFO] [stdout] 3c0d3d3e05955759a69ce604bc4d729e19e564776d1e0e1671758c3be50515ed [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] 05e13dfa14f4d37cf65a440cb7b075f3e57f6909cf84d9b57ebc5b9c487f4606 [INFO] running `Command { std: "docker" "start" "-a" "05e13dfa14f4d37cf65a440cb7b075f3e57f6909cf84d9b57ebc5b9c487f4606", kill_on_drop: false }` [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling indexmap v2.14.0 [INFO] [stderr] Compiling tree-sitter-go v0.25.0 [INFO] [stderr] Compiling tree-sitter-java v0.23.5 [INFO] [stderr] Compiling tree-sitter-typescript v0.23.2 [INFO] [stderr] Compiling tree-sitter-javascript v0.25.0 [INFO] [stderr] Compiling tree-sitter-hcl v1.1.0 [INFO] [stderr] Compiling tree-sitter-json v0.24.8 [INFO] [stderr] Compiling tree-sitter-python v0.25.0 [INFO] [stderr] Compiling tree-sitter-rust v0.24.2 [INFO] [stderr] Compiling tree-sitter-yaml v0.7.2 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling hashbrown v0.15.5 [INFO] [stderr] Compiling saa v5.5.1 [INFO] [stderr] Compiling streaming-iterator v0.1.9 [INFO] [stderr] Compiling similar v2.7.0 [INFO] [stderr] Compiling rayon v1.12.0 [INFO] [stderr] Compiling arc-swap v1.9.1 [INFO] [stderr] Compiling sdd v4.8.5 [INFO] [stderr] Compiling scc v3.7.0 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling tokio-macros v2.7.0 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling tokio v1.52.0 [INFO] [stderr] Compiling tree-sitter v0.25.10 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling petgraph v0.8.3 [INFO] [stderr] Compiling unfault-core v0.3.1 [INFO] [stderr] Compiling unfault-analysis v0.2.1 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 45.02s [INFO] running `Command { std: "docker" "inspect" "05e13dfa14f4d37cf65a440cb7b075f3e57f6909cf84d9b57ebc5b9c487f4606", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "05e13dfa14f4d37cf65a440cb7b075f3e57f6909cf84d9b57ebc5b9c487f4606", kill_on_drop: false }` [INFO] [stdout] 05e13dfa14f4d37cf65a440cb7b075f3e57f6909cf84d9b57ebc5b9c487f4606 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] 2d09b32ea6ea691ddff6f509d7728d94b8b0a860ac9ac5feec1190e54ce8417a [INFO] running `Command { std: "docker" "start" "-a" "2d09b32ea6ea691ddff6f509d7728d94b8b0a860ac9ac5feec1190e54ce8417a", kill_on_drop: false }` [INFO] [stderr] Compiling unfault-analysis v0.2.1 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused variable: `rule` [INFO] [stdout] --> src/rules/python/frameworks/django/orm_select_related.rs:322:13 [INFO] [stdout] | [INFO] [stdout] 322 | let rule = DjangoOrmSelectRelatedRule::new(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_rule` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `file_id` [INFO] [stdout] --> src/rules/typescript/frameworks/nextjs.rs:371:14 [INFO] [stdout] | [INFO] [stdout] 371 | let (file_id, sem) = parse_and_build_semantics( [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_and_build_semantics` is never used [INFO] [stdout] --> src/rules/rust/unbounded_memory.rs:344:8 [INFO] [stdout] | [INFO] [stdout] 344 | fn parse_and_build_semantics(source: &str) -> (FileId, Arc) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison is useless due to type limits [INFO] [stdout] --> src/engine.rs:206:17 [INFO] [stdout] | [INFO] [stdout] 206 | assert!(initial_count >= 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_comparisons)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 37.54s [INFO] running `Command { std: "docker" "inspect" "2d09b32ea6ea691ddff6f509d7728d94b8b0a860ac9ac5feec1190e54ce8417a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2d09b32ea6ea691ddff6f509d7728d94b8b0a860ac9ac5feec1190e54ce8417a", kill_on_drop: false }` [INFO] [stdout] 2d09b32ea6ea691ddff6f509d7728d94b8b0a860ac9ac5feec1190e54ce8417a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] beb50a0337d33a5fbd798fc5241035f92ca31026d8813dec7129bd8e1c947c37 [INFO] running `Command { std: "docker" "start" "-a" "beb50a0337d33a5fbd798fc5241035f92ca31026d8813dec7129bd8e1c947c37", kill_on_drop: false }` [INFO] [stderr] warning: unused variable: `rule` [INFO] [stderr] --> src/rules/python/frameworks/django/orm_select_related.rs:322:13 [INFO] [stderr] | [INFO] [stderr] 322 | let rule = DjangoOrmSelectRelatedRule::new(); [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_rule` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `file_id` [INFO] [stderr] --> src/rules/typescript/frameworks/nextjs.rs:371:14 [INFO] [stderr] | [INFO] [stderr] 371 | let (file_id, sem) = parse_and_build_semantics( [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_id` [INFO] [stderr] [INFO] [stderr] warning: function `parse_and_build_semantics` is never used [INFO] [stderr] --> src/rules/rust/unbounded_memory.rs:344:8 [INFO] [stderr] | [INFO] [stderr] 344 | fn parse_and_build_semantics(source: &str) -> (FileId, Arc) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: comparison is useless due to type limits [INFO] [stderr] --> src/engine.rs:206:17 [INFO] [stderr] | [INFO] [stderr] 206 | assert!(initial_count >= 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_comparisons)]` on by default [INFO] [stderr] [INFO] [stderr] warning: `unfault-analysis` (lib test) generated 4 warnings (run `cargo fix --lib -p unfault-analysis --tests` to apply 2 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.15s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/unfault_analysis-9d37db9a14bf21ba) [INFO] [stdout] [INFO] [stdout] running 2368 tests [INFO] [stdout] test config::tests::test_config_clone ... ok [INFO] [stdout] test config::tests::test_config_deserialize_from_json ... ok [INFO] [stdout] test config::tests::test_config_custom_value ... ok [INFO] [stdout] test dependencies::extractor::tests::test_determine_block_type_module ... ok [INFO] [stdout] test config::tests::test_default_config ... ok [INFO] [stdout] test dependencies::extractor::tests::test_extract_go_library_gorm ... ok [INFO] [stdout] test dependencies::tests::test_determine_block_type_method ... ok [INFO] [stdout] test dependencies::tests::test_determine_block_type_lambda ... ok [INFO] [stdout] test dependencies::tests::test_determine_block_type_module ... ok [INFO] [stdout] test dependencies::tests::test_determine_block_type_function ... ok [INFO] [stdout] test dependencies::extractor::tests::test_determine_block_type_lambda ... ok [INFO] [stdout] test config::tests::test_config_serialize_deserialize ... ok [INFO] [stdout] test dependencies::url_parser::tests::test_is_dynamic_env_var ... ok [INFO] [stdout] test dependencies::url_parser::tests::test_is_dynamic_fstring ... ok [INFO] [stdout] test dependencies::extractor::tests::test_extract_go_library_sql ... ok [INFO] [stdout] test dependencies::url_parser::tests::test_is_dynamic_python_os_environ ... ok [INFO] [stdout] test config::tests::test_config_debug ... ok [INFO] [stdout] test dependencies::url_parser::tests::test_looks_like_url_postgres ... ok [INFO] [stdout] test dependencies::url_parser::tests::test_looks_like_url_postgres_port ... ok [INFO] [stdout] test dependencies::url_parser::tests::test_looks_like_url_redis_port ... ok [INFO] [stdout] test dependencies::url_parser::tests::test_extract_http_url ... ok [INFO] [stdout] test dependencies::url_parser::tests::test_extract_redis_url ... ok [INFO] [stdout] test dependencies::url_parser::tests::test_extract_postgres_url ... ok [INFO] [stdout] test dependencies::url_parser::tests::test_not_url_number ... ok [INFO] [stdout] test dependencies::url_parser::tests::test_not_url_simple_text ... ok [INFO] [stdout] test engine::tests::test_engine_analyze_with_context ... ok [INFO] [stdout] test dependencies::url_parser::tests::test_extract_python_os_environ ... ok [INFO] [stdout] test dependencies::url_parser::tests::test_empty_string ... ok [INFO] [stdout] test engine::tests::test_engine_config_load_full ... ok [INFO] [stdout] test engine::tests::test_engine_config_is_arc_swappable ... ok [INFO] [stdout] test dependencies::url_parser::tests::test_extract_domain_only ... ok [INFO] [stdout] test engine::tests::test_engine_analyze_empty_contexts ... ok [INFO] [stdout] test dependencies::url_parser::tests::test_extract_env_var_syntax ... ok [INFO] [stdout] test dependencies::url_parser::tests::test_extract_python_os_getenv ... ok [INFO] [stdout] test dependencies::url_parser::tests::test_extract_https_url ... ok [INFO] [stdout] test dependencies::url_parser::tests::test_extract_go_os_getenv ... ok [INFO] [stdout] test dependencies::url_parser::tests::test_extract_mongodb_url ... ok [INFO] [stdout] test dependencies::url_parser::tests::test_extract_host_port ... ok [INFO] [stdout] test dependencies::url_parser::tests::test_no_url_in_text ... ok [INFO] [stdout] test error::tests::test_engine_error_config_display ... ok [INFO] [stdout] test engine::tests::test_engine_new_with_custom_config ... ok [INFO] [stdout] test error::tests::test_engine_error_aborted_by_caller_display ... ok [INFO] [stdout] test engine::tests::test_engine_registry_load_full ... ok [INFO] [stdout] test engine::tests::test_engine_rule_registry_is_arc_swappable ... ok [INFO] [stdout] test engine::tests::test_engine_with_defaults_and_builtin_rules ... ok [INFO] [stdout] test error::tests::test_engine_error_config_debug ... ok [INFO] [stdout] test dependencies::url_parser::tests::test_looks_like_url_https ... ok [INFO] [stdout] test engine::tests::test_engine_with_default_config ... ok [INFO] [stdout] test dependencies::extractor::tests::test_determine_block_type_function ... ok [INFO] [stdout] test dependencies::url_parser::tests::test_looks_like_url_domain ... ok [INFO] [stdout] test error::tests::test_engine_error_from_graph_error ... ok [INFO] [stdout] test error::tests::test_engine_error_from_anyhow ... ok [INFO] [stdout] test error::tests::test_engine_error_from_semantic_error ... ok [INFO] [stdout] test error::tests::test_engine_error_from_rule_error ... ok [INFO] [stdout] test error::tests::test_engine_error_from_parse_error ... ok [INFO] [stdout] test error::tests::test_engine_error_from_session_error ... ok [INFO] [stdout] test error::tests::test_error_source_chain_parse ... ok [INFO] [stdout] test error::tests::test_error_source_chain_rule ... ok [INFO] [stdout] test error::tests::test_graph_error_debug ... ok [INFO] [stdout] test error::tests::test_graph_error_inconsistent_display ... ok [INFO] [stdout] test error::tests::test_engine_error_channel_closed_display ... ok [INFO] [stdout] test error::tests::test_session_error_debug ... ok [INFO] [stdout] test error::tests::test_semantic_error_file_display ... ok [INFO] [stdout] test error::tests::test_session_error_missing_context_display ... ok [INFO] [stdout] test error::tests::test_session_error_invalid_state_display ... ok [INFO] [stdout] test graph::tests::build_code_graph_empty_semantics ... ok [INFO] [stdout] test error::tests::test_rule_error_failed_display ... ok [INFO] [stdout] test error::tests::test_graph_error_build_display ... ok [INFO] [stdout] test error::tests::test_parse_error_file_display ... ok [INFO] [stdout] test error::tests::test_semantic_error_file_debug ... ok [INFO] [stdout] test graph::tests::build_code_graph_middleware_attached_to_correct_app ... ok [INFO] [stdout] test graph::tests::build_code_graph_multiple_files ... ok [INFO] [stdout] test graph::tests::build_code_graph_with_fastapi_app ... ok [INFO] [stdout] test graph::tests::build_code_graph_with_fastapi_middleware ... ok [INFO] [stdout] test graph::tests::build_code_graph_single_file_no_fastapi ... ok [INFO] [stdout] test graph::tests::build_code_graph_with_external_imports ... ok [INFO] [stdout] test graph::tests::categorize_module_other ... ok [INFO] [stdout] test dependencies::url_parser::tests::test_not_dynamic_static_url ... ok [INFO] [stdout] test engine::tests::test_engine_multiple_instances_independent ... ok [INFO] [stdout] test graph::tests::build_code_graph_with_fastapi_routes ... ok [INFO] [stdout] test graph::tests::build_code_graph_with_function ... ok [INFO] [stdout] test graph::tests::categorize_module_stdlib ... ok [INFO] [stdout] test graph::tests::categorize_module_web_framework ... ok [INFO] [stdout] test graph::tests::code_graph_new_creates_empty_graph ... ok [INFO] [stdout] test graph::tests::code_graph_get_files_using_library ... ok [INFO] [stdout] test graph::tests::code_graph_get_external_dependencies ... ok [INFO] [stdout] test graph::tests::find_file_by_path_exact ... ok [INFO] [stdout] test graph::tests::code_graph_stats ... ok [INFO] [stdout] test graph::tests::graph_edge_kind_eq ... ok [INFO] [stdout] test graph::tests::graph_node_display_name ... ok [INFO] [stdout] test graph::tests::graph_node_external_module_debug ... ok [INFO] [stdout] test graph::tests::graph_node_fastapi_middleware_debug ... ok [INFO] [stdout] test graph::tests::graph_node_file_debug ... ok [INFO] [stdout] test graph::tests::graph_node_file_id ... ok [INFO] [stdout] test graph::tests::graph_node_function_debug ... ok [INFO] [stdout] test graph::tests::graph_node_is_file ... ok [INFO] [stdout] test ir::tests::test_analyze_ir_empty ... ok [INFO] [stdout] test graph::tests::categorize_module_async_runtime ... ok [INFO] [stdout] test graph::tests::categorize_module_database ... ok [INFO] [stdout] test graph::tests::categorize_module_http_client ... ok [INFO] [stdout] test graph::tests::categorize_module_logging ... ok [INFO] [stdout] test graph::tests::code_graph_debug_impl ... ok [INFO] [stdout] test graph::tests::code_graph_default_impl ... ok [INFO] [stdout] test graph::tests::graph_edge_kind_debug ... ok [INFO] [stdout] test graph::tests::graph_node_class_debug ... ok [INFO] [stdout] test graph::tests::graph_node_fastapi_app_debug ... ok [INFO] [stdout] test graph::tests::graph_node_fastapi_route_debug ... ok [INFO] [stdout] test graph::tests::build_code_graph_middleware_without_matching_app ... ok [INFO] [stdout] test graph::tests::categorize_module_resilience ... ok [INFO] [stdout] test profiles::builtin::tests::go_gin_service_has_correct_id ... ok [INFO] [stdout] test profiles::builtin::tests::go_lsp_has_correct_id ... ok [INFO] [stdout] test profiles::builtin::tests::go_lsp_includes_local_rules ... ok [INFO] [stdout] test profiles::builtin::tests::lsp_profiles_have_no_file_hints ... ok [INFO] [stdout] test ir::tests::test_ir_serialization_roundtrip ... ok [INFO] [stdout] test ir::tests::test_build_ir_empty_files ... ok [INFO] [stdout] test ir::tests::test_build_ir_multiple_files ... ok [INFO] [stdout] test ir::tests::test_build_ir_single_python_file ... ok [INFO] [stdout] test ir::tests::test_resolve_profile_rules_deduplicates ... ok [INFO] [stdout] test profiles::builtin::tests::all_builtin_profiles_have_languages ... ok [INFO] [stdout] test profiles::builtin::tests::all_builtin_profiles_have_dimensions ... ok [INFO] [stdout] test profiles::builtin::tests::lsp_profiles_have_rules ... ok [INFO] [stdout] test profiles::builtin::tests::go_lsp_excludes_cross_file_rules ... ok [INFO] [stdout] test ir::tests::test_analyze_ir_with_rules ... ok [INFO] [stdout] test profiles::builtin::tests::python_django_backend_has_correct_id ... ok [INFO] [stdout] test profiles::builtin::tests::python_fastapi_backend_has_file_hints ... ok [INFO] [stdout] test profiles::builtin::tests::python_lsp_excludes_cross_file_rules ... ok [INFO] [stdout] test profiles::builtin::tests::python_lsp_has_correct_id ... ok [INFO] [stdout] test profiles::builtin::tests::python_lsp_includes_local_rules ... ok [INFO] [stdout] test profiles::builtin::tests::python_fastapi_backend_has_rules ... ok [INFO] [stdout] test profiles::builtin::tests::python_maintainability_file_hints_exclude_tests ... ok [INFO] [stdout] test profiles::builtin::tests::python_maintainability_has_code_duplication_rule ... ok [INFO] [stdout] test profiles::builtin::tests::python_maintainability_has_halstead_rule ... ok [INFO] [stdout] test profiles::builtin::tests::python_maintainability_has_maintainability_dimension ... ok [INFO] [stdout] test profiles::builtin::tests::python_fastapi_backend_has_correct_id ... ok [INFO] [stdout] test profiles::builtin::tests::python_maintainability_is_opt_in ... ok [INFO] [stdout] test profiles::builtin::tests::register_builtin_profiles_adds_all_profiles ... ok [INFO] [stdout] test profiles::builtin::tests::python_maintainability_file_hints_have_max_limits ... ok [INFO] [stdout] test profiles::builtin::tests::rust_lsp_excludes_cross_file_rules ... ok [INFO] [stdout] test profiles::builtin::tests::rust_lsp_includes_local_rules ... ok [INFO] [stdout] test profiles::builtin::tests::register_builtin_profiles_includes_lsp_profiles ... ok [INFO] [stdout] test profiles::builtin::tests::register_builtin_profiles_includes_maintainability ... ok [INFO] [stdout] test profiles::builtin::tests::typescript_lsp_excludes_cross_file_rules ... ok [INFO] [stdout] test profiles::builtin::tests::rust_axum_service_has_correct_id ... ok [INFO] [stdout] test profiles::builtin::tests::typescript_express_backend_has_correct_id ... ok [INFO] [stdout] test profiles::builtin::tests::python_maintainability_has_correct_id ... ok [INFO] [stdout] test profiles::builtin::tests::rust_lsp_has_correct_id ... ok [INFO] [stdout] test profiles::builtin::tests::python_maintainability_has_file_hints ... ok [INFO] [stdout] test profiles::builtin::tests::typescript_lsp_has_correct_id ... ok [INFO] [stdout] test profiles::builtin::tests::typescript_lsp_includes_local_rules ... ok [INFO] [stdout] test profiles::tests::registry_all_returns_all_profiles ... ok [INFO] [stdout] test profiles::tests::registry_collect_rule_ids_deduplicates ... ok [INFO] [stdout] test profiles::tests::registry_get_existing_profile ... ok [INFO] [stdout] test profiles::tests::registry_collect_rule_ids_empty ... ok [INFO] [stdout] test profiles::tests::registry_get_nonexistent_profile ... ok [INFO] [stdout] test profiles::tests::registry_ids_returns_all_ids ... ok [INFO] [stdout] test profiles::tests::registry_register_adds_profile ... ok [INFO] [stdout] test profiles::tests::registry_register_overwrites_existing ... ok [INFO] [stdout] test profiles::tests::registry_new_is_empty ... ok [INFO] [stdout] test profiles::tests::registry_resolve_empty_advertised ... ok [INFO] [stdout] test profiles::tests::registry_resolve_existing_profiles ... ok [INFO] [stdout] test profiles::tests::registry_register_multiple_profiles ... ok [INFO] [stdout] test profiles::tests::registry_resolve_orders_by_confidence ... ok [INFO] [stdout] test profiles::tests::registry_resolve_skips_unknown_profiles ... ok [INFO] [stdout] test profiles::tests::registry_collect_rule_ids_from_profiles ... ok [INFO] [stdout] test profiles::tests::registry_with_builtin_profiles_has_python_fastapi ... ok [INFO] [stdout] test profiles::tests::registry_collect_file_hints_empty ... ok [INFO] [stdout] test profiles::tests::registry_collect_file_hints_from_profiles ... ok [INFO] [stdout] test profiles::tests::resolved_profiles_from_profiles ... ok [INFO] [stdout] test rules::finding::tests::cloned_rule_finding_is_independent ... ok [INFO] [stdout] test profiles::tests::registry_with_builtin_profiles_not_empty ... ok [INFO] [stdout] test rules::finding::tests::from_rule_finding_converts_description_none_to_empty_string ... ok [INFO] [stdout] test rules::finding::tests::from_rule_finding_preserves_none_fix_preview ... ok [INFO] [stdout] test rules::finding::tests::from_rule_finding_preserves_confidence ... ok [INFO] [stdout] test rules::finding::tests::from_rule_finding_generates_correct_id_format ... ok [INFO] [stdout] test rules::finding::tests::from_rule_finding_preserves_rule_id ... ok [INFO] [stdout] test rules::finding::tests::from_rule_finding_preserves_dimension ... ok [INFO] [stdout] test rules::finding::tests::from_rule_finding_preserves_fix_preview ... ok [INFO] [stdout] test rules::finding::tests::from_rule_finding_converts_description_some_to_string ... ok [INFO] [stdout] test rules::finding::tests::from_rule_finding_preserves_severity ... ok [INFO] [stdout] test rules::finding::tests::from_rule_finding_sets_diff_to_none ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_can_be_cloned ... ok [INFO] [stdout] test rules::finding::tests::from_rule_finding_uses_zero_for_none_line ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_implements_debug ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_serialization_includes_required_fields ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_roundtrip_serialization ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_serialization_skips_none_fix_preview ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_serialization_skips_none_patch ... ok [INFO] [stdout] test rules::finding::tests::from_rule_finding_preserves_title ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_can_be_deserialized_from_json ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_can_be_serialized_to_json ... ok [INFO] [stdout] test profiles::tests::registry_collect_file_hints_deduplicates_by_id ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_stores_confidence ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_stores_description ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_stores_dimension ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_stores_file_path ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_stores_fix_preview ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_stores_kind ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_stores_line ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_stores_none_column ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_stores_empty_tags ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_stores_none_line ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_stores_patch ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_stores_rule_id ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_stores_tags ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_stores_title ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_with_anti_pattern_kind ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_with_behavior_threat_kind ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_with_empty_strings ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_with_high_severity ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_with_critical_severity ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_with_correctness_dimension ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_with_info_severity ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_with_large_line_number ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_with_max_confidence ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_with_many_tags ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_with_medium_severity ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_with_performance_dimension ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_with_performance_smell_kind ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_with_min_confidence ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_with_low_severity ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_with_scalability_dimension ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_with_stability_dimension ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_with_stability_risk_kind ... ok [INFO] [stdout] test rules::go::bare_recover::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::go::channel_never_closed::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_stores_column ... ok [INFO] [stdout] test rules::go::circuit_breaker::tests::rule_has_correct_metadata ... ok [INFO] [stdout] test rules::go::channel_never_closed::tests::test_detects_channel_without_close ... ok [INFO] [stdout] test rules::go::channel_never_closed::tests::test_no_finding_when_close_present ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_stores_file_id ... ok [INFO] [stdout] test rules::go::concurrent_map_access::tests::test_detects_unsafe_map_in_goroutine ... ok [INFO] [stdout] test rules::go::concurrent_map_access::tests::test_no_finding_with_sync_map ... ok [INFO] [stdout] test rules::go::concurrent_map_access::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::go::context_background::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::go::context_background::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::go::context_background::tests::evaluate_no_finding_for_background_outside_handler ... ok [INFO] [stdout] test rules::go::concurrent_map_access::tests::test_no_finding_with_mutex ... ok [INFO] [stdout] test rules::go::context_background::tests::evaluate_detects_background_in_http_handler ... ok [INFO] [stdout] test rules::go::context_background::tests::evaluate_returns_empty_for_non_go ... ok [INFO] [stdout] test rules::go::cpu_in_hot_path::tests::test_is_http_handler_by_name ... ok [INFO] [stdout] test rules::go::context_background::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::go::context_background::tests::evaluate_no_finding_when_using_request_context ... ok [INFO] [stdout] test rules::go::context_background::tests::finding_has_correct_properties ... ok [INFO] [stdout] test rules::go::cpu_in_hot_path::tests::test_is_not_http_handler ... ok [INFO] [stdout] test rules::go::cpu_in_hot_path::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::go::defer_in_loop::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::go::defer_in_loop::tests::finding_has_correct_properties ... ok [INFO] [stdout] test rules::go::defer_in_loop::tests::evaluate_detects_defer_in_for_loop ... ok [INFO] [stdout] test rules::go::defer_in_loop::tests::evaluate_no_finding_for_defer_outside_loop ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_stores_severity ... ok [INFO] [stdout] test rules::go::empty_critical_section::tests::evaluate_no_finding_for_defer_unlock ... ok [INFO] [stdout] test rules::go::empty_critical_section::tests::evaluate_detects_lock_without_defer ... ok [INFO] [stdout] test rules::go::defer_in_loop::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::go::empty_critical_section::tests::evaluate_returns_empty_for_non_go ... ok [INFO] [stdout] test rules::go::empty_critical_section::tests::finding_has_correct_properties ... ok [INFO] [stdout] test rules::go::empty_critical_section::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::go::defer_in_loop::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::go::empty_critical_section::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::go::empty_critical_section::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::go::ephemeral_filesystem_write::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::go::defer_in_loop::tests::evaluate_returns_empty_for_non_go ... ok [INFO] [stdout] test rules::finding::tests::from_rule_finding_creates_finding ... ok [INFO] [stdout] test rules::finding::tests::from_rule_finding_preserves_kind ... ok [INFO] [stdout] test rules::finding::tests::rule_finding_stores_none_description ... ok [INFO] [stdout] test rules::go::empty_critical_section::tests::evaluate_detects_empty_critical_section ... ok [INFO] [stdout] test graph::tests::find_file_by_path_suffix ... ok [INFO] [stdout] test rules::go::error_type_assertion::tests::test_no_finding_with_errors_as ... ok [INFO] [stdout] test rules::go::error_type_assertion::tests::test_detects_error_type_assertion ... ok [INFO] [stdout] test rules::go::error_type_assertion::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::go::frameworks::echo::missing_middleware::tests::rule_has_correct_metadata ... ok [INFO] [stdout] test rules::go::frameworks::gin::tests::is_dangerous_sink_detects_command ... ok [INFO] [stdout] test rules::go::frameworks::gin::tests::is_dangerous_sink_detects_file ... ok [INFO] [stdout] test rules::go::frameworks::gin::tests::is_dangerous_sink_detects_sql ... ok [INFO] [stdout] test rules::go::frameworks::gin::tests::is_dangerous_sink_returns_none_for_safe ... ok [INFO] [stdout] test rules::go::frameworks::gin::tests::untrusted_rule_name_is_correct ... ok [INFO] [stdout] test rules::go::frameworks::gin::tests::untrusted_rule_implements_debug ... ok [INFO] [stdout] test rules::go::frameworks::gorm::connection_pool::tests::rule_has_correct_metadata ... ok [INFO] [stdout] test rules::go::frameworks::gin::tests::validation_returns_empty_for_non_go ... ok [INFO] [stdout] test rules::go::frameworks::gin::tests::untrusted_detects_param_to_sql ... ok [INFO] [stdout] test rules::go::frameworks::gorm::session_management::tests::is_write_detects_create ... ok [INFO] [stdout] test rules::go::frameworks::gin::tests::validation_detects_bind_without_tags ... ok [INFO] [stdout] test rules::go::frameworks::gin::tests::validation_rule_id_is_correct ... ok [INFO] [stdout] test rules::go::frameworks::gin::tests::validation_rule_implements_debug ... ok [INFO] [stdout] test rules::go::frameworks::gin::tests::untrusted_returns_empty_for_non_go ... ok [INFO] [stdout] test rules::go::frameworks::gorm::n_plus_one::tests::rule_has_correct_metadata ... ok [INFO] [stdout] test rules::go::frameworks::gorm::session_management::tests::is_write_ignores_read ... ok [INFO] [stdout] test rules::go::frameworks::gorm::session_management::tests::rule_has_correct_metadata ... ok [INFO] [stdout] test rules::go::frameworks::gorm::query_timeout::tests::rule_has_correct_metadata ... ok [INFO] [stdout] test rules::go::frameworks::nethttp::tests::handler_timeout_rule_implements_debug ... ok [INFO] [stdout] test rules::go::frameworks::gin::tests::untrusted_rule_id_is_correct ... ok [INFO] [stdout] test rules::go::frameworks::nethttp::tests::server_timeout_rule_id_is_correct ... ok [INFO] [stdout] test rules::go::frameworks::gin::tests::validation_rule_name_is_correct ... ok [INFO] [stdout] test rules::go::frameworks::grpc::missing_deadline::tests::rule_has_correct_metadata ... ok [INFO] [stdout] test rules::go::frameworks::echo::request_validation::tests::rule_has_correct_metadata ... ok [INFO] [stdout] test rules::go::frameworks::nethttp::tests::handler_timeout_detects_handler_with_db_call ... ok [INFO] [stdout] test rules::go::frameworks::nethttp::tests::handler_timeout_returns_empty_for_non_go ... ok [INFO] [stdout] test rules::go::frameworks::nethttp::tests::server_timeout_no_finding_for_configured_server ... ok [INFO] [stdout] test rules::go::frameworks::nethttp::tests::server_timeout_rule_implements_debug ... ok [INFO] [stdout] test rules::go::frameworks::nethttp::tests::handler_timeout_rule_id_is_correct ... ok [INFO] [stdout] test rules::go::frameworks::nethttp::tests::server_timeout_rule_name_is_correct ... ok [INFO] [stdout] test rules::go::frameworks::redis::connection_pool::tests::rule_has_correct_metadata ... ok [INFO] [stdout] test rules::go::global_mutable_state::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::go::goroutine_leak::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::go::goroutine_leak::tests::evaluate_returns_empty_for_non_go ... ok [INFO] [stdout] test rules::go::goroutine_leak::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::go::goroutine_leak::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::go::goroutine_leak::tests::finding_has_correct_dimension ... ok [INFO] [stdout] test rules::go::halstead_complexity::tests::compute_halstead_from_ast_counts_operators ... ok [INFO] [stdout] test rules::go::halstead_complexity::tests::compute_halstead_from_ast_complex_function ... ok [INFO] [stdout] test rules::go::goroutine_leak::tests::evaluate_no_finding_for_goroutine_with_context ... ok [INFO] [stdout] test rules::go::frameworks::nethttp::tests::handler_timeout_rule_name_is_correct ... ok [INFO] [stdout] test rules::go::cpu_in_hot_path::tests::test_is_http_handler_net_http ... ok [INFO] [stdout] test profiles::builtin::tests::all_builtin_profiles_have_file_hints_except_lsp ... ok [INFO] [stdout] test ir::tests::test_resolve_profile_rules ... ok [INFO] [stdout] test rules::go::frameworks::redis::missing_ttl::tests::rule_has_correct_metadata ... ok [INFO] [stdout] test rules::go::graceful_shutdown::tests::rule_has_correct_metadata ... ok [INFO] [stdout] test rules::go::global_mutable_state::tests::test_is_mutable_type ... ok [INFO] [stdout] test rules::go::halstead_complexity::tests::finding_has_correct_dimension ... ok [INFO] [stdout] test rules::go::halstead_complexity::tests::finding_has_correct_tags ... ok [INFO] [stdout] test rules::go::halstead_complexity::tests::halstead_metrics_compute_basic ... ok [INFO] [stdout] test rules::go::halstead_complexity::tests::compute_halstead_from_ast_handles_function ... ok [INFO] [stdout] test rules::go::halstead_complexity::tests::halstead_metrics_difficulty_formula ... ok [INFO] [stdout] test rules::go::halstead_complexity::tests::halstead_metrics_volume_formula ... ok [INFO] [stdout] test rules::go::halstead_complexity::tests::is_test_file_allows_regular_files ... ok [INFO] [stdout] test rules::go::halstead_complexity::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::go::halstead_complexity::tests::halstead_metrics_handles_zero_operands ... ok [INFO] [stdout] test rules::go::halstead_complexity::tests::is_test_file_detects_test_directory ... ok [INFO] [stdout] test rules::go::halstead_complexity::tests::is_test_file_detects_test_suffix ... ok [INFO] [stdout] test rules::go::halstead_complexity::tests::rule_returns_empty_for_empty_semantics ... ok [INFO] [stdout] test rules::go::halstead_complexity::tests::severity_high_for_very_complex ... ok [INFO] [stdout] test rules::go::halstead_complexity::tests::finding_has_no_patch ... ok [INFO] [stdout] test rules::go::hardcoded_secrets::tests::rule_has_correct_metadata ... ok [INFO] [stdout] test rules::go::halstead_complexity::tests::severity_medium_for_moderately_complex ... ok [INFO] [stdout] test rules::go::halstead_complexity::tests::severity_none_for_simple_functions ... ok [INFO] [stdout] test rules::go::http_timeout::tests::evaluate_detects_post_without_timeout ... ok [INFO] [stdout] test rules::go::http_retry::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::go::http_timeout::tests::evaluate_detects_http_get_without_timeout ... ok [INFO] [stdout] test rules::go::http_timeout::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::go::http_timeout::tests::evaluate_no_finding_for_client_with_timeout ... ok [INFO] [stdout] test rules::go::http_timeout::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::go::idempotency_key::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::go::http_timeout::tests::evaluate_returns_empty_for_non_go ... ok [INFO] [stdout] test rules::go::idempotency_key::tests::test_is_mutating_function ... ok [INFO] [stdout] test rules::go::http_timeout::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::go::idempotency_key::tests::test_is_http_handler ... ok [INFO] [stdout] test rules::go::large_response_memory::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::go::missing_correlation_id::tests::rule_has_correct_metadata ... ok [INFO] [stdout] test rules::go::missing_tracing::tests::rule_has_correct_metadata ... ok [INFO] [stdout] test rules::go::http_timeout::tests::finding_has_correct_properties ... ok [INFO] [stdout] test rules::go::map_without_size_hint::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::go::missing_structured_logging::tests::rule_has_correct_metadata ... ok [INFO] [stdout] test rules::go::panic_in_library::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::go::race_condition::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::go::panic_in_library::tests::test_no_finding_in_main_package ... ok [INFO] [stdout] test rules::go::map_without_size_hint::tests::test_no_finding_with_size_hint ... ok [INFO] [stdout] test rules::go::map_without_size_hint::tests::test_detects_map_in_loop_without_hint ... ok [INFO] [stdout] test rules::go::reflect_in_hot_path::tests::test_detects_reflect_in_loop ... ok [INFO] [stdout] test rules::go::regex_compile::tests::detects_compile_in_method ... ok [INFO] [stdout] test rules::go::reflect_in_hot_path::tests::test_no_finding_when_no_reflect ... ok [INFO] [stdout] test rules::go::reflect_in_hot_path::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::go::regex_compile::tests::detects_multiple_compile_in_function ... ok [INFO] [stdout] test rules::go::regex_compile::tests::extract_pattern_arg_handles_quoted_string ... ok [INFO] [stdout] test rules::go::rate_limiting::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::go::regex_compile::tests::extract_pattern_arg_handles_empty_args ... ok [INFO] [stdout] test rules::go::regex_compile::tests::extract_pattern_arg_handles_backtick_string ... ok [INFO] [stdout] test error::tests::test_rule_error_debug ... ok [INFO] [stdout] test rules::go::regex_compile::tests::detects_mustcompile_in_function ... ok [INFO] [stdout] test rules::go::regex_compile::tests::detects_compile_in_function ... ok [INFO] [stdout] test error::tests::test_parse_error_file_debug ... ok [INFO] [stdout] test rules::go::regex_compile::tests::finding_description_mentions_function_name ... ok [INFO] [stdout] test rules::go::regex_compile::tests::is_regex_compile_call_detects_variants ... ok [INFO] [stdout] test rules::go::regex_compile::tests::handles_empty_file ... ok [INFO] [stdout] test rules::go::regex_compile::tests::handles_empty_semantics ... ok [INFO] [stdout] test rules::go::regex_compile::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::go::regex_compile::tests::finding_has_correct_properties ... ok [INFO] [stdout] test rules::go::regex_compile::tests::rule_implements_default ... ok [INFO] [stdout] test rules::go::regex_compile::tests::to_camel_case_works ... ok [INFO] [stdout] test rules::go::sentinel_error_comparison::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::go::regex_compile::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::go::regex_compile::tests::suggest_constant_name_uses_function_name ... ok [INFO] [stdout] test rules::go::slice_append_in_loop::tests::test_detects_append_without_prealloc ... ok [INFO] [stdout] test rules::go::sentinel_error_comparison::tests::test_detects_direct_comparison ... ok [INFO] [stdout] test rules::go::slice_append_in_loop::tests::test_no_finding_with_prealloc ... ok [INFO] [stdout] test rules::go::slice_memory_leak::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::go::slice_memory_leak::tests::test_detects_prefix_function ... ok [INFO] [stdout] test rules::go::sql_injection::tests::evaluate_detects_string_concatenation ... ok [INFO] [stdout] test rules::go::sql_injection::tests::evaluate_no_finding_for_parameterized_query ... ok [INFO] [stdout] test rules::go::sql_injection::tests::evaluate_detects_fmt_sprintf ... ok [INFO] [stdout] test rules::go::sql_injection::tests::is_sql_query_method_detects_common_methods ... ok [INFO] [stdout] test rules::go::sql_injection::tests::evaluate_returns_empty_for_non_go ... ok [INFO] [stdout] test rules::go::sql_injection::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::go::sql_injection::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::go::sql_injection::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::go::sync_dns_lookup::tests::test_is_not_http_handler ... ok [INFO] [stdout] test rules::go::sync_dns_lookup::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::go::transaction_boundary::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::go::type_assertion_no_ok::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::go::type_assertion_no_ok::tests::test_detects_unsafe_type_assertion ... ok [INFO] [stdout] test rules::go::unbounded_cache::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::go::unbounded_goroutines::tests::rule_has_correct_metadata ... ok [INFO] [stdout] test rules::go::unbounded_memory::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::go::type_assertion_no_ok::tests::test_safe_type_assertion_not_flagged ... ok [INFO] [stdout] test rules::go::uncancelled_context::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::go::sql_injection::tests::analyze_sql_injection_risk_detects_patterns ... ok [INFO] [stdout] test rules::go::regex_compile::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::go::unchecked_error::tests::evaluate_finding_has_correct_properties ... ok [INFO] [stdout] test rules::go::unchecked_error::tests::evaluate_returns_empty_for_non_go ... ok [INFO] [stdout] test rules::go::unchecked_error::tests::evaluate_no_finding_for_checked_error ... ok [INFO] [stdout] test rules::go::unchecked_error::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::go::unchecked_error::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::go::unchecked_error::tests::rule_implements_default ... ok [INFO] [stdout] test rules::go::unchecked_error::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::go::unhandled_error_goroutine::tests::evaluate_detects_goroutine_without_recover ... ok [INFO] [stdout] test rules::go::unhandled_error_goroutine::tests::evaluate_no_finding_for_goroutine_with_recover ... ok [INFO] [stdout] test rules::go::unhandled_error_goroutine::tests::evaluate_returns_empty_for_non_go ... ok [INFO] [stdout] test rules::go::unhandled_error_goroutine::tests::finding_has_correct_properties ... ok [INFO] [stdout] test rules::go::unhandled_error_goroutine::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::go::unbounded_retry::tests::rule_has_correct_metadata ... ok [INFO] [stdout] test rules::go::unchecked_error::tests::evaluate_detects_unchecked_error ... ok [INFO] [stdout] test rules::go::unhandled_error_goroutine::tests::evaluate_detects_unhandled_error_in_goroutine ... ok [INFO] [stdout] test rules::go::goroutine_leak::tests::evaluate_detects_goroutine_without_context ... ok [INFO] [stdout] test rules::go::frameworks::nethttp::tests::server_timeout_detects_listen_and_serve ... ok [INFO] [stdout] test rules::go::halstead_complexity::tests::is_test_file_detects_testdata ... ok [INFO] [stdout] test rules::go::halstead_complexity::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::go::halstead_complexity::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::go::halstead_complexity::tests::rule_implements_default ... ok [INFO] [stdout] test rules::go::panic_in_library::tests::test_detects_panic_in_library ... ok [INFO] [stdout] test rules::go::regex_compile::tests::no_finding_for_package_level_compile ... ok [INFO] [stdout] test rules::go::slice_append_in_loop::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::go::slice_memory_leak::tests::test_detects_readall ... ok [INFO] [stdout] test rules::go::sync_dns_lookup::tests::test_is_http_handler ... ok [INFO] [stdout] test rules::go::unhandled_error_goroutine::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::go::unhandled_error_goroutine::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::go::unsafe_template::tests::test_rule_metadata ... ok [INFO] [stdout] test rules::metadata::tests::returns_none_for_unknown_rule_id ... ok [INFO] [stdout] test rules::python::async_task_no_error_handling::tests::rule_implements_default ... ok [INFO] [stdout] test rules::python::async_task_no_error_handling::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::asyncio_timeout::tests::fix_preview_contains_timeout_examples ... ok [INFO] [stdout] test rules::python::async_task_no_error_handling::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::async_task_no_error_handling::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::go::sentinel_error_comparison::tests::test_no_finding_with_errors_is ... ok [INFO] [stdout] test rules::metadata::tests::report_rules_missing_applicability_metadata ... ok [INFO] [stdout] test rules::python::asyncio_timeout::tests::detects_asyncio_wait_without_timeout ... ok [INFO] [stdout] test rules::python::asyncio_timeout::tests::patch_uses_replace_bytes ... ok [INFO] [stdout] test rules::python::asyncio_timeout::tests::patch_adds_timeout_to_asyncio_wait ... ok [INFO] [stdout] test rules::metadata::tests::rule_based_metadata_is_available_for_annotated_rules ... ok [INFO] [stdout] test rules::python::async_task_no_error_handling::tests::evaluate_detects_create_task ... ok [INFO] [stdout] test rules::python::async_task_no_error_handling::tests::evaluate_handles_empty_file ... ok [INFO] [stdout] test rules::python::async_task_no_error_handling::tests::evaluate_finding_has_correct_properties ... ok [INFO] [stdout] test rules::python::asyncio_timeout::tests::evaluate_returns_empty_for_non_asyncio_code ... ok [INFO] [stdout] test rules::python::async_task_no_error_handling::tests::evaluate_handles_empty_semantics ... ok [INFO] [stdout] test rules::python::asyncio_timeout::tests::rule_name_mentions_timeout ... ok [INFO] [stdout] test rules::python::asyncio_timeout::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::asyncio_timeout::tests::no_finding_when_timeout_present ... ok [INFO] [stdout] test rules::python::bare_except::tests::bare_except_info_has_correct_fields ... ok [INFO] [stdout] test rules::python::bare_except::tests::detects_bare_except_in_function ... ok [INFO] [stdout] test rules::python::bare_except::tests::detects_multiple_bare_excepts ... ok [INFO] [stdout] test rules::python::bare_except::tests::detects_nested_bare_except ... ok [INFO] [stdout] test rules::python::bare_except::tests::detects_bare_except_among_typed_excepts ... ok [INFO] [stdout] test rules::python::bare_except::tests::does_not_flag_except_with_tuple ... ok [INFO] [stdout] test rules::python::bare_except::tests::detects_simple_bare_except ... ok [INFO] [stdout] test rules::python::bare_except::tests::does_not_flag_except_exception ... ok [INFO] [stdout] test rules::python::bare_except::tests::evaluate_returns_empty_for_non_python ... ok [INFO] [stdout] test rules::python::bare_except::tests::evaluate_returns_empty_for_code_without_bare_except ... ok [INFO] [stdout] test rules::python::bare_except::tests::handles_async_function ... ok [INFO] [stdout] test rules::python::bare_except::tests::evaluate_finding_has_correct_properties ... ok [INFO] [stdout] test rules::python::bare_except::tests::handles_class_method ... ok [INFO] [stdout] test rules::python::bare_except::tests::does_not_flag_except_with_alias ... ok [INFO] [stdout] test rules::python::bare_except::tests::does_not_flag_except_with_attribute ... ok [INFO] [stdout] test rules::python::bare_except::tests::does_not_flag_except_with_type ... ok [INFO] [stdout] test rules::python::bare_except::tests::evaluate_detects_bare_except ... ok [INFO] [stdout] test rules::python::bare_except::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::bare_except::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::python::bare_except::tests::handles_file_without_try_except ... ok [INFO] [stdout] test rules::python::bare_except::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::code_duplication::tests::calculate_similarity_returns_0_for_empty ... ok [INFO] [stdout] test rules::python::circuit_breaker::tests::evaluate_finding_has_patch ... ok [INFO] [stdout] test rules::python::circuit_breaker::tests::evaluate_finding_has_high_severity ... ok [INFO] [stdout] test rules::python::circuit_breaker::tests::evaluate_returns_empty_when_circuit_breaker_imported ... ok [INFO] [stdout] test rules::python::circuit_breaker::tests::evaluate_detects_missing_circuit_breaker ... ok [INFO] [stdout] test rules::python::code_duplication::tests::calculate_similarity_returns_1_for_identical ... ok [INFO] [stdout] test rules::python::bare_except::tests::handles_try_else_finally ... ok [INFO] [stdout] test rules::python::bare_except::tests::rule_implements_default ... ok [INFO] [stdout] test rules::python::bare_except::tests::reports_correct_line_number ... ok [INFO] [stdout] test rules::python::circuit_breaker::tests::evaluate_returns_empty_for_non_http_code ... ok [INFO] [stdout] test rules::python::circuit_breaker::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::circuit_breaker::tests::evaluate_finding_has_fix_preview ... ok [INFO] [stdout] test rules::python::code_duplication::tests::calculate_similarity_handles_partial_match ... ok [INFO] [stdout] test rules::python::bare_except::tests::handles_empty_file ... ok [INFO] [stdout] test rules::python::circuit_breaker::tests::rule_name_mentions_circuit_breaker ... ok [INFO] [stdout] test rules::python::code_duplication::tests::different_type_annotations_produce_different_hashes ... ok [INFO] [stdout] test rules::python::code_duplication::tests::different_return_types_produce_different_hashes ... ok [INFO] [stdout] test rules::python::code_duplication::tests::is_excluded_file_allows_regular_files ... ok [INFO] [stdout] test rules::python::code_duplication::tests::handles_empty_semantics ... ok [INFO] [stdout] test rules::python::code_duplication::tests::is_excluded_file_detects_test_suffixed_files ... ok [INFO] [stdout] test rules::python::code_duplication::tests::hash_string_differs_for_different_strings ... ok [INFO] [stdout] test rules::python::code_duplication::tests::is_excluded_file_detects_test_prefixed_files ... ok [INFO] [stdout] test rules::python::code_duplication::tests::is_excluded_file_detects_conftest ... ok [INFO] [stdout] test rules::python::code_duplication::tests::is_excluded_file_detects_tests_directory ... ok [INFO] [stdout] test rules::python::code_duplication::tests::handles_empty_file ... ok [INFO] [stdout] test rules::python::code_duplication::tests::detects_identical_functions_in_same_file ... ok [INFO] [stdout] test rules::python::code_duplication::tests::finding_has_correct_properties ... ok [INFO] [stdout] test rules::python::code_duplication::tests::detects_similar_async_functions ... ok [INFO] [stdout] test rules::python::code_duplication::tests::detects_cross_file_duplication ... ok [INFO] [stdout] test rules::python::code_duplication::tests::hash_string_is_deterministic ... ok [INFO] [stdout] test rules::python::code_duplication::tests::different_param_names_not_flagged_as_duplicates ... ok [INFO] [stdout] test rules::python::code_duplication::tests::no_finding_for_small_functions ... ok [INFO] [stdout] test rules::python::code_duplication::tests::normalized_body_includes_param_names ... ok [INFO] [stdout] test rules::python::code_duplication::tests::normalized_body_includes_return_type ... ok [INFO] [stdout] test rules::python::code_duplication::tests::no_finding_for_different_functions ... ok [INFO] [stdout] test rules::python::code_duplication::tests::normalized_body_includes_toplevel_marker ... ok [INFO] [stdout] test rules::python::code_duplication::tests::normalized_body_includes_class_context ... ok [INFO] [stdout] test rules::python::code_duplication::tests::normalized_body_includes_type_annotations ... ok [INFO] [stdout] test rules::python::code_duplication::tests::normalized_body_skips_self_and_cls ... ok [INFO] [stdout] test rules::python::code_duplication::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::code_duplication::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::python::code_duplication::tests::rule_implements_default ... ok [INFO] [stdout] test rules::python::code_duplication::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::cpu_in_event_loop::tests::cpu_operation_type_descriptions_are_meaningful ... ok [INFO] [stdout] test rules::python::cpu_in_event_loop::tests::detect_cpu_intensive_operation_identifies_compression ... ok [INFO] [stdout] test rules::python::cpu_in_event_loop::tests::detect_cpu_intensive_operation_identifies_crypto ... ok [INFO] [stdout] test rules::python::cpu_in_event_loop::tests::detect_cpu_intensive_operation_identifies_json ... ok [INFO] [stdout] test rules::python::cpu_in_event_loop::tests::handles_empty_file ... ok [INFO] [stdout] test rules::python::cpu_in_event_loop::tests::handles_empty_semantics ... ok [INFO] [stdout] test rules::python::cpu_in_event_loop::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::code_duplication::tests::same_param_names_flagged_as_duplicates ... ok [INFO] [stdout] test rules::python::cpu_in_event_loop::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::python::cpu_in_event_loop::tests::finding_has_correct_properties ... ok [INFO] [stdout] test rules::python::cpu_in_event_loop::tests::no_finding_for_sync_function ... ok [INFO] [stdout] test rules::python::cpu_in_event_loop::tests::detects_json_in_async_function ... ok [INFO] [stdout] test rules::python::code_duplication::tests::skips_test_files_in_evaluation ... ok [INFO] [stdout] test rules::python::code_duplication::tests::skips_files_in_tests_directory ... ok [INFO] [stdout] test rules::python::db_timeout::tests::detects_psycopg2_connect_without_timeout ... ok [INFO] [stdout] test rules::python::db_timeout::tests::detects_sqlalchemy_async_engine_without_timeout ... ok [INFO] [stdout] test rules::python::db_timeout::tests::detects_sqlalchemy_create_engine_without_timeout ... ok [INFO] [stdout] test rules::python::db_timeout::tests::finding_has_correct_severity ... ok [INFO] [stdout] test rules::python::cpu_in_event_loop::tests::detects_crypto_in_async_function ... ok [INFO] [stdout] test rules::python::db_timeout::tests::handles_aliased_imports ... ok [INFO] [stdout] test rules::python::db_timeout::tests::fix_preview_contains_example ... ok [INFO] [stdout] test rules::python::db_timeout::tests::generates_patch_for_async_sqlalchemy_with_timeout ... ok [INFO] [stdout] test rules::python::db_timeout::tests::generates_patch_for_sqlalchemy ... ok [INFO] [stdout] test rules::python::cpu_in_event_loop::tests::no_finding_when_using_to_thread ... ok [INFO] [stdout] test rules::python::cpu_in_event_loop::tests::rule_implements_default ... ok [INFO] [stdout] test rules::python::cpu_in_event_loop::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::db_timeout::tests::detects_module_level_engine_creation ... ok [INFO] [stdout] test rules::python::db_timeout::tests::detects_asyncpg_connect_without_timeout ... ok [INFO] [stdout] test rules::python::db_timeout::tests::ignores_asyncpg_with_timeout ... ok [INFO] [stdout] test rules::python::db_timeout::tests::ignores_empty_file ... ok [INFO] [stdout] test rules::python::db_timeout::tests::ignores_non_database_code ... ok [INFO] [stdout] test rules::python::db_timeout::tests::ignores_psycopg2_with_connect_timeout ... ok [INFO] [stdout] test rules::python::db_timeout::tests::ignores_sqlalchemy_with_connect_args ... ok [INFO] [stdout] test rules::python::db_timeout::tests::patch_adds_connect_args_to_sqlalchemy ... ok [INFO] [stdout] test rules::python::db_timeout::tests::handles_multiple_database_calls ... ok [INFO] [stdout] test rules::python::db_timeout::tests::rule_has_correct_id ... ok [INFO] [stdout] test rules::python::db_timeout::tests::rule_has_correct_name ... ok [INFO] [stdout] test rules::python::db_timeout::tests::patch_adds_timeout_to_asyncpg ... ok [INFO] [stdout] test rules::python::ephemeral_filesystem_write::tests::detect_filesystem_write_identifies_tempfile ... ok [INFO] [stdout] test rules::python::ephemeral_filesystem_write::tests::detect_filesystem_write_ignores_read_mode ... ok [INFO] [stdout] test rules::python::db_timeout::tests::patch_handles_multiline_args_with_trailing_comma ... ok [INFO] [stdout] test rules::python::ephemeral_filesystem_write::tests::is_persistent_path_identifies_mounted_volumes ... ok [INFO] [stdout] test rules::python::ephemeral_filesystem_write::tests::handles_empty_file ... ok [INFO] [stdout] test rules::python::ephemeral_filesystem_write::tests::is_persistent_path_rejects_local_paths ... ok [INFO] [stdout] test rules::python::ephemeral_filesystem_write::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::python::ephemeral_filesystem_write::tests::handles_empty_semantics ... ok [INFO] [stdout] test rules::python::ephemeral_filesystem_write::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::db_timeout::tests::patch_adds_connect_timeout_to_psycopg2 ... ok [INFO] [stdout] test rules::python::ephemeral_filesystem_write::tests::rule_implements_default ... ok [INFO] [stdout] test rules::python::ephemeral_filesystem_write::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::ephemeral_filesystem_write::tests::detects_pickle_dump ... ok [INFO] [stdout] test rules::python::ephemeral_filesystem_write::tests::detects_file_open_write_mode ... ok [INFO] [stdout] test rules::python::ephemeral_filesystem_write::tests::write_operation_type_descriptions_are_meaningful ... ok [INFO] [stdout] test rules::python::ephemeral_filesystem_write::tests::no_finding_for_persistent_path ... ok [INFO] [stdout] test rules::python::ephemeral_filesystem_write::tests::no_finding_for_read_mode ... ok [INFO] [stdout] test rules::python::frameworks::async_resource_cleanup::tests::detects_aiohttp_client_session_assignment ... ok [INFO] [stdout] test rules::python::frameworks::async_resource_cleanup::tests::detects_short_form_async_client ... ok [INFO] [stdout] test rules::python::ephemeral_filesystem_write::tests::finding_has_correct_properties ... ok [INFO] [stdout] test rules::python::ephemeral_filesystem_write::tests::detects_tempfile_creation ... ok [INFO] [stdout] test rules::python::frameworks::async_resource_cleanup::tests::detects_multiple_async_clients ... ok [INFO] [stdout] test rules::python::db_timeout::tests::patch_handles_single_line_args ... ok [INFO] [stdout] test rules::python::db_timeout::tests::patch_uses_replace_bytes ... ok [INFO] [stdout] test rules::python::ephemeral_filesystem_write::tests::detect_filesystem_write_identifies_open_write ... ok [INFO] [stdout] test rules::python::frameworks::async_resource_cleanup::tests::ignores_empty_file ... ok [INFO] [stdout] test rules::python::frameworks::async_resource_cleanup::tests::ignores_sync_httpx_client ... ok [INFO] [stdout] test rules::python::frameworks::async_resource_cleanup::tests::handles_async_client_with_params ... ok [INFO] [stdout] test rules::python::frameworks::async_resource_cleanup::tests::finding_has_correct_kind ... ok [INFO] [stdout] test rules::python::frameworks::async_resource_cleanup::tests::detects_httpx_async_client_assignment ... ok [INFO] [stdout] test rules::python::frameworks::async_resource_cleanup::tests::detects_short_form_client_session ... ok [INFO] [stdout] test rules::python::frameworks::async_resource_cleanup::tests::ignores_sync_requests_client ... ok [INFO] [stdout] test rules::python::frameworks::async_resource_cleanup::tests::rule_has_correct_id ... ok [INFO] [stdout] test rules::python::frameworks::async_resource_cleanup::tests::handles_client_session_with_params ... ok [INFO] [stdout] test rules::python::frameworks::async_resource_cleanup::tests::handles_multiple_files ... ok [INFO] [stdout] test rules::python::frameworks::django::allowed_hosts::tests::evaluate_detects_wildcard_allowed_hosts ... ok [INFO] [stdout] test rules::python::frameworks::async_resource_cleanup::tests::generates_patch_for_async_client ... ok [INFO] [stdout] test rules::python::frameworks::django::allowed_hosts::tests::rule_name_mentions_allowed_hosts ... ok [INFO] [stdout] test rules::python::frameworks::django::missing_csrf::tests::rule_name_mentions_csrf ... ok [INFO] [stdout] test rules::python::frameworks::django::orm_select_related::tests::evaluate_finding_has_medium_severity ... ok [INFO] [stdout] test rules::python::frameworks::django::orm_select_related::tests::evaluate_finding_has_fix_preview ... ok [INFO] [stdout] test rules::python::frameworks::django::missing_csrf::tests::evaluate_finding_has_high_severity ... ok [INFO] [stdout] test rules::python::frameworks::django::allowed_hosts::tests::evaluate_returns_empty_for_proper_allowed_hosts ... ok [INFO] [stdout] test rules::python::frameworks::django::allowed_hosts::tests::evaluate_returns_empty_for_non_settings_file ... ok [INFO] [stdout] test rules::python::frameworks::django::allowed_hosts::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::django::missing_csrf::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::django::orm_select_related::tests::evaluate_returns_empty_for_non_django_code ... ok [INFO] [stdout] test rules::python::frameworks::django::orm_select_related::tests::is_builtin_method_detects_common_methods ... ok [INFO] [stdout] test rules::python::frameworks::django::orm_select_related::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::django::orm_select_related::tests::rule_name_mentions_select_related ... ok [INFO] [stdout] test rules::python::frameworks::django::missing_csrf::tests::evaluate_detects_csrf_exempt_call ... ok [INFO] [stdout] test rules::python::frameworks::django::missing_csrf::tests::evaluate_returns_empty_for_normal_view ... ok [INFO] [stdout] test rules::python::frameworks::django::allowed_hosts::tests::evaluate_finding_has_fix_preview ... ok [INFO] [stdout] test rules::python::frameworks::async_resource_cleanup::tests::ignores_regular_assignments ... ok [INFO] [stdout] test rules::python::frameworks::django::allowed_hosts::tests::evaluate_finding_has_high_severity_for_wildcard ... ok [INFO] [stdout] test rules::python::frameworks::django::missing_csrf::tests::evaluate_finding_has_fix_preview ... ok [INFO] [stdout] test rules::python::frameworks::django::secure_settings::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::django::allowed_hosts::tests::evaluate_detects_empty_allowed_hosts ... ok [INFO] [stdout] test rules::python::frameworks::django::secure_settings::tests::evaluate_detects_missing_settings_in_production ... ok [INFO] [stdout] test rules::python::frameworks::django::secure_settings::tests::evaluate_detects_hsts_zero ... ok [INFO] [stdout] test rules::python::frameworks::django::session_settings::tests::evaluate_finding_has_patch ... ok [INFO] [stdout] test rules::python::frameworks::django::secure_settings::tests::evaluate_returns_empty_for_secure_settings ... ok [INFO] [stdout] test rules::python::frameworks::django::session_settings::tests::evaluate_detects_insecure_session_cookie_httponly ... ok [INFO] [stdout] test rules::python::frameworks::django::secure_settings::tests::rule_name_mentions_secure ... ok [INFO] [stdout] test rules::python::frameworks::django::secure_settings::tests::evaluate_finding_has_patch ... ok [INFO] [stdout] test rules::python::frameworks::async_resource_cleanup::tests::rule_has_correct_name ... ok [INFO] [stdout] test rules::python::frameworks::django::secure_settings::tests::evaluate_detects_ssl_redirect_false ... ok [INFO] [stdout] test rules::python::frameworks::django::session_settings::tests::evaluate_returns_empty_for_secure_settings ... ok [INFO] [stdout] test rules::python::frameworks::django::secure_settings::tests::evaluate_returns_empty_for_non_settings_file ... ok [INFO] [stdout] test rules::python::frameworks::django::session_settings::tests::evaluate_detects_insecure_session_cookie_secure ... ok [INFO] [stdout] test rules::python::frameworks::django::session_settings::tests::evaluate_returns_empty_for_non_settings_file ... ok [INFO] [stdout] test rules::python::frameworks::django::session_settings::tests::evaluate_finding_has_fix_preview ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::exception_handler::tests::finding_has_fix_preview ... ok [INFO] [stdout] test rules::python::frameworks::django::session_settings::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::exception_handler::tests::finding_when_no_exception_handlers ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::exception_handler::tests::generate_exception_handler_patch_includes_http_handler ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::exception_handler::tests::generate_exception_handler_patch_uses_correct_app_var ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::exception_handler::tests::generate_exception_handler_patch_includes_imports ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::exception_handler::tests::generate_exception_handler_patch_includes_validation_handler ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::exception_handler::tests::finding_has_patch ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::exception_handler::tests::finding_when_missing_validation_handler ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::exception_handler::tests::finding_has_correct_rule_id ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::exception_handler::tests::generate_specific_handler_patch_for_validation ... ok [INFO] [stdout] test rules::python::frameworks::django::session_settings::tests::rule_name_mentions_session ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::exception_handler::tests::no_finding_for_non_fastapi_code ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::exception_handler::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::finding_has_correct_dimension ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::finding_has_correct_rule_id ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::finding_has_correct_severity ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::finding_for_each_app_without_health_check ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::exception_handler::tests::finding_for_each_app_without_handlers ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::finding_has_correct_tags ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::exception_handler::tests::generate_specific_handler_patch_for_http_exception ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::finding_patch_has_one_hunk ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::finding_has_patch ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::finding_when_no_health_endpoint ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::exception_handler::tests::no_finding_when_generic_exception_handler_present ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::exception_handler::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::exception_handler::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::generate_health_endpoint_code_has_docstrings ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::generate_health_endpoint_code_includes_health_route ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::generate_health_endpoint_code_uses_correct_app_var ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::handles_empty_semantics ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::handles_empty_file ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::generate_health_endpoint_code_includes_ready_route ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::finding_has_fix_preview ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::exception_handler::tests::no_finding_when_exception_handlers_present ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::input_validation::tests::capitalize_first_works ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::no_finding_for_non_fastapi_code ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::no_finding_when_health_in_path ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::input_validation::tests::detects_post_endpoint ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::no_finding_when_ping_endpoint_present ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::no_finding_when_health_endpoint_in_different_file ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::no_finding_when_healthz_endpoint_present ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::input_validation::tests::finding_has_correct_kind ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::no_finding_when_ready_endpoint_present ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::no_finding_when_health_endpoint_present ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::health_check::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::input_validation::tests::detects_put_endpoint ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::input_validation::tests::detects_any_type ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::input_validation::tests::detects_multiple_endpoints ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::input_validation::tests::detects_dict_type_variations ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::input_validation::tests::detects_patch_endpoint ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::input_validation::tests::fix_preview_contains_model_example ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::input_validation::tests::ignores_endpoint_with_custom_type ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::input_validation::tests::ignores_get_endpoint ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::input_validation::tests::generates_patch_with_pydantic_suggestion ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::input_validation::tests::ignores_endpoint_with_depends ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::input_validation::tests::ignores_endpoint_with_pydantic_model ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::input_validation::tests::rule_has_correct_name ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::input_validation::tests::ignores_non_fastapi_file ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::input_validation::tests::rule_has_correct_id ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::input_validation::tests::handles_multiple_files ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::exception_handler::tests::finding_when_missing_http_exception_handler ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::input_validation::tests::ignores_delete_endpoint ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::input_validation::tests::handles_router_routes ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::debug_tests::debug_sample_file_imports ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_detects_missing_cors ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_detects_multiple_apps_without_cors ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_finding_has_column_number ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_finding_has_correct_file_path ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_finding_has_correct_dimension ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_finding_has_correct_severity ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_finding_has_correct_kind ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_finding_has_description ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_finding_has_reasonable_confidence ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_finding_includes_app_name_in_title ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_finding_includes_fix_preview ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_finding_has_correct_rule_id ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_finding_has_line_number ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::input_validation::tests::ignores_empty_file ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_finding_includes_patch ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_finding_has_tags ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::input_validation::tests::handles_sync_endpoints ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_fix_preview_contains_add_middleware ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_handles_empty_semantics ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_fix_preview_contains_cors_import ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_handles_non_python_semantics ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::find_import_insertion_line_handles_single_import ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_patch_inserts_import_after_last_import_when_multiple_imports ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_only_reports_apps_without_cors ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_returns_empty_for_non_fastapi_code ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_returns_empty_when_cors_configured_in_separate_file ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_patch_handles_file_with_docstring ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_patch_has_two_hunks ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_patch_inserts_at_line_zero_when_no_imports ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_returns_empty_when_cors_is_configured ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::find_import_insertion_line_inserts_after_fastapi_import ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::find_import_insertion_line_inserts_after_last_import_when_no_fastapi ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::find_import_insertion_line_prefers_from_fastapi_over_import_fastapi ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::find_import_insertion_line_returns_zero_for_empty_imports ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::find_import_insertion_line_uses_docstring_when_no_imports ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::rate_limiting::tests::rule_name_mentions_rate_limiting ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::rate_limiting::tests::evaluate_returns_empty_for_non_fastapi_app ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::rate_limiting::tests::evaluate_finding_has_fix_preview ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::evaluate_patch_inserts_import_after_fastapi_import ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::rate_limiting::tests::evaluate_finding_has_medium_severity ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::rate_limiting::tests::evaluate_detects_missing_rate_limiting ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::rate_limiting::tests::evaluate_returns_empty_when_slowapi_imported ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::rate_limiting::tests::evaluate_finding_has_patch ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_detects_dict_param_even_with_pydantic_in_other_files ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::rate_limiting::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_finding_has_fix_preview ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_finding_has_end_line_and_column ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_finding_has_medium_severity ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_detects_missing_body_limit_with_post_route ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_detects_put_route ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_returns_empty_for_non_fastapi_app ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_finding_title_contains_route_path ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_finding_has_patch ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_returns_empty_for_get_only_routes ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_returns_empty_when_body_limit_middleware_configured ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_finding_points_to_route_decorator ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_detects_non_pydantic_class_from_separate_file ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_detects_patch_route ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_finding_description_contains_handler_name ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::is_pydantic_like_type_detects_custom_classes ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::is_pydantic_like_type_returns_false_for_empty ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::is_pydantic_like_type_handles_generic_types ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::is_pydantic_like_type_returns_false_for_fastapi_types ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::is_pydantic_like_type_returns_false_for_primitives ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_finding_highlights_decorator_only ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_detects_router_post_routes ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::rule_name_mentions_body_size ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_timeout::tests::finding_for_each_app_without_timeout ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_returns_empty_when_max_body_size_defined ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::missing_cors::tests::find_import_insertion_line_handles_multiline_import ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_skips_mixed_pydantic_and_primitive ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_skips_routes_with_custom_class_type ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_returns_empty_when_middleware_in_separate_file ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_skips_routes_with_pydantic_model_from_separate_file ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_skips_routes_with_pydantic_typed_body ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_skips_untyped_param ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_skips_routes_without_body_params ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_timeout::tests::generate_timeout_imports_includes_required_imports ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_timeout::tests::generate_timeout_middleware_call_has_default_timeout ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_timeout::tests::finding_has_correct_rule_id ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_timeout::tests::generate_timeout_imports_skips_already_present ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_timeout::tests::finding_has_correct_dimension ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_timeout::tests::finding_has_patch ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_timeout::tests::finding_has_correct_severity ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_timeout::tests::finding_patch_has_three_hunks ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_timeout::tests::generate_timeout_middleware_call_uses_correct_app_var ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_timeout::tests::generate_timeout_middleware_class_includes_class ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_triggers_on_primitive_typed_body ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_timeout::tests::handles_empty_semantics ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_skips_routes_with_inherited_pydantic_model ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_timeout::tests::finding_has_fix_preview ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_body_unbounded::tests::evaluate_detects_multiple_body_routes ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_timeout::tests::handles_empty_file ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_timeout::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_timeout::tests::finding_when_no_timeout_middleware ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_timeout::tests::patch_hunks_have_correct_line_numbers ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_timeout::tests::finding_has_correct_tags ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_timeout::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_timeout::tests::no_finding_when_custom_timeout_middleware_present ... ok [INFO] [stdout] test rules::python::frameworks::flask::cookie_settings::tests::evaluate_detects_insecure_session_cookie_httponly ... ok [INFO] [stdout] test rules::python::frameworks::flask::cookie_settings::tests::evaluate_finding_has_patch ... ok [INFO] [stdout] test rules::python::frameworks::flask::cookie_settings::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_timeout::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_timeout::tests::patch_places_middleware_call_after_app_definition ... ok [INFO] [stdout] test rules::python::frameworks::flask::cookie_settings::tests::evaluate_detects_insecure_session_cookie_secure ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_timeout::tests::no_finding_when_timeout_middleware_present ... ok [INFO] [stdout] test rules::python::frameworks::flask::cookie_settings::tests::evaluate_finding_has_fix_preview ... ok [INFO] [stdout] test rules::python::frameworks::flask::cookie_settings::tests::evaluate_returns_empty_for_non_flask_app ... ok [INFO] [stdout] test rules::python::frameworks::flask::cookie_settings::tests::evaluate_returns_empty_for_secure_settings ... ok [INFO] [stdout] test rules::python::frameworks::flask::cookie_settings::tests::rule_name_mentions_cookie ... ok [INFO] [stdout] test rules::python::frameworks::flask::secret_key::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::flask::secret_key::tests::rule_name_mentions_secret_key ... ok [INFO] [stdout] test rules::python::frameworks::flask::session_timeout::tests::evaluate_returns_empty_for_non_flask_app ... ok [INFO] [stdout] test rules::python::frameworks::flask::secret_key::tests::evaluate_detects_hardcoded_secret_key ... ok [INFO] [stdout] test rules::python::frameworks::flask::session_timeout::tests::fix_preview_contains_timedelta ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_detects_multiple_blocking_calls ... ok [INFO] [stdout] test rules::python::frameworks::flask::secret_key::tests::evaluate_returns_empty_for_env_secret_key ... ok [INFO] [stdout] test rules::python::frameworks::flask::session_timeout::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::flask::secret_key::tests::evaluate_finding_has_fix_preview ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_detects_requests_post_in_async_function ... ok [INFO] [stdout] test rules::python::frameworks::flask::secret_key::tests::evaluate_finding_has_patch ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_finding_has_correct_rule_id ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_detects_calls_in_multiple_async_functions ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_finding_has_correct_kind ... ok [INFO] [stdout] test rules::python::frameworks::fastapi::request_timeout::tests::no_finding_for_non_fastapi_code ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_finding_has_column_number ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_finding_has_correct_dimension ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_detects_requests_get_in_async_function ... ok [INFO] [stdout] test rules::python::frameworks::flask::session_timeout::tests::evaluate_returns_empty_for_configured_timeout ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_finding_description_mentions_event_loop ... ok [INFO] [stdout] test rules::python::frameworks::flask::secret_key::tests::evaluate_returns_empty_for_non_flask_app ... ok [INFO] [stdout] test rules::python::frameworks::flask::session_timeout::tests::rule_name_mentions_session_timeout ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_handles_empty_file ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_finding_has_high_confidence ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_finding_has_line_number ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_finding_has_tags ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_finding_has_fix_preview ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_finding_includes_method_in_title ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_fix_preview_suggests_async_client ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_returns_empty_for_module_level_requests ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_returns_empty_for_httpx_in_async ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_handles_async_class_method ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_returns_empty_for_non_http_code ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_returns_empty_for_sync_function ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_skips_calls_in_sync_to_async ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_skips_calls_in_run_in_executor ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_skips_calls_wrapped_in_asyncio_to_thread ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_still_flags_direct_calls_not_wrapped ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_handles_empty_semantics ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_detects_missing_retry_in_httpx_get ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_detects_missing_retry_in_requests_get ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_detects_missing_retry_in_requests_post ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_finding_has_correct_dimension ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_finding_has_column_number ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_finding_description_mentions_retry ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_finding_has_correct_severity ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_finding_has_correct_rule_id ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_finding_has_correct_kind ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_finding_has_patch ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_detects_multiple_missing_retries ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_finding_has_description ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_finding_has_line_number ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_finding_has_patch ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_finding_includes_method_in_title ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_finding_has_reasonable_confidence ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_handles_empty_semantics ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_finding_patch_has_two_hunks_when_in_function ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_finding_includes_client_in_title ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_finding_has_fix_preview ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_handles_empty_file ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_fix_preview_suggests_tenacity ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_finding_has_description ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_finding_patch_has_one_hunk_when_module_level ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_returns_empty_for_non_http_code ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_finding_has_tags ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_includes_function_name_in_description ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_patch_imports_after_docstring ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_finding_has_correct_severity ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::fix_preview_for_httpx_includes_transport ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::fix_preview_for_requests_includes_http_adapter ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_returns_empty_when_tenacity_decorator_present ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_detects_missing_timeout_in_requests_post ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_finding_has_column_number ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_detects_multiple_missing_timeouts ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_finding_has_correct_dimension ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_returns_empty_when_session_retry_configured ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_returns_empty_when_tenacity_retry_decorator_present ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_detects_missing_timeout_in_httpx_get ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_detects_missing_timeout_in_requests_get ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_patch_decorator_before_function ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::fix_preview_for_requests_includes_tenacity ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::fix_preview_for_unknown_client_includes_tenacity ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_finding_has_correct_kind ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_patch_contains_to_thread ... ok [INFO] [stdout] test rules::python::frameworks::http_retry::tests::evaluate_returns_empty_when_backoff_decorator_present ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_finding_includes_function_name_in_title ... ok [INFO] [stdout] test rules::python::frameworks::http_blocking_async::tests::evaluate_only_flags_async_functions ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_finding_has_correct_tags_for_httpx ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_finding_has_correct_tags_for_requests ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_finding_has_line_number ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_handles_empty_file ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_finding_without_patch_when_timeout_already_present_in_text ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_finding_includes_method_in_title ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_finding_has_tags ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_finding_has_correct_rule_id ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_finding_has_reasonable_confidence ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_finding_includes_fix_preview ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_handles_aiohttp_client ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_patch_has_one_hunk ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_includes_function_name_in_description ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_returns_empty_for_httpx_with_timeout ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_finding_includes_patch ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_only_reports_calls_without_timeout ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_finding_has_correct_severity ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_finding_has_description ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_handles_empty_semantics ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::insert_timeout_adds_to_call_with_args ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::insert_timeout_adds_to_empty_call ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::insert_timeout_handles_httpx ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::insert_timeout_handles_indented_multiline_call ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::insert_timeout_handles_multiline_call_with_trailing_comma ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::insert_timeout_handles_multiline_call ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::insert_timeout_handles_multiple_args ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::insert_timeout_handles_no_closing_paren ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_returns_empty_when_timeout_is_present ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::insert_timeout_multiline_without_trailing_comma ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_finding_includes_client_in_title ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::insert_timeout_does_not_modify_if_already_present ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::insert_timeout_preserves_trailing_content ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_fix_preview_contains_timeout ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_returns_empty_for_non_http_code ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::pydantic::arbitrary_types::tests::evaluate_detects_arbitrary_types_allowed ... ok [INFO] [stdout] test rules::python::frameworks::pydantic::arbitrary_types::tests::evaluate_returns_empty_for_non_pydantic_code ... ok [INFO] [stdout] test rules::python::frameworks::pydantic::arbitrary_types::tests::evaluate_returns_empty_for_safe_model ... ok [INFO] [stdout] test rules::python::frameworks::pydantic::arbitrary_types::tests::fix_preview_contains_alternatives ... ok [INFO] [stdout] test rules::python::frameworks::pydantic::missing_validators::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::pydantic::missing_validators::tests::fix_preview_contains_emailstr ... ok [INFO] [stdout] test rules::python::frameworks::pydantic::missing_validators::tests::rule_name_mentions_validators ... ok [INFO] [stdout] test rules::python::frameworks::http_timeout::tests::evaluate_handles_other_client_kind ... ok [INFO] [stdout] test rules::python::frameworks::redis::missing_ttl::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::redis::missing_ttl::tests::rule_name_mentions_ttl ... ok [INFO] [stdout] test rules::python::frameworks::redis::missing_ttl::tests::fix_preview_contains_ttl_examples ... ok [INFO] [stdout] test rules::python::frameworks::redis::unbounded_keys::tests::evaluate_returns_empty_for_non_redis_code ... ok [INFO] [stdout] test rules::python::frameworks::redis::missing_ttl::tests::patch_uses_replace_bytes ... ok [INFO] [stdout] test rules::python::frameworks::redis::missing_ttl::tests::no_finding_when_ex_present ... ok [INFO] [stdout] test rules::python::frameworks::pydantic::missing_validators::tests::fix_preview_contains_secretstr ... ok [INFO] [stdout] test rules::python::frameworks::pydantic::missing_validators::tests::evaluate_returns_empty_for_non_pydantic_code ... ok [INFO] [stdout] test rules::python::frameworks::pydantic::arbitrary_types::tests::rule_name_mentions_arbitrary_types ... ok [INFO] [stdout] test rules::python::frameworks::pydantic::arbitrary_types::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::redis::missing_ttl::tests::detects_redis_set_without_ttl ... ok [INFO] [stdout] test rules::python::frameworks::redis::missing_ttl::tests::evaluate_returns_empty_for_non_redis_code ... ok [INFO] [stdout] test rules::python::frameworks::redis::unbounded_keys::tests::fix_preview_contains_ltrim ... ok [INFO] [stdout] test rules::python::frameworks::redis::unbounded_keys::tests::fix_preview_contains_scan ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::connection_pool::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::redis::unbounded_keys::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::connection_pool::tests::fix_preview_contains_pool_settings ... ok [INFO] [stdout] test rules::python::frameworks::redis::missing_ttl::tests::patch_adds_ex_parameter ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::lazy_loading::tests::evaluate_returns_empty_for_non_sqlalchemy_code ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::connection_pool::tests::evaluate_returns_empty_for_configured_pool ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::connection_pool::tests::rule_name_mentions_connection_pool ... ok [INFO] [stdout] test rules::python::frameworks::redis::unbounded_keys::tests::rule_name_mentions_unbounded ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::pgvector_optimization::tests::index_fix_preview_covers_alternatives ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::lazy_loading::tests::rule_name_mentions_lazy_loading ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::pgvector_optimization::tests::no_finding_for_inner_product_operator ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::lazy_loading::tests::fix_preview_contains_eager_loading ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::lazy_loading::tests::is_builtin_detects_common_methods ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::pgvector_optimization::tests::finding_for_cosine_operator_with_pgvector ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::pgvector_optimization::tests::finding_for_fstring_with_pgvector ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::lazy_loading::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::pgvector_optimization::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::pgvector_optimization::tests::rule_name_mentions_pgvector ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::pgvector_optimization::tests::finding_for_missing_limit_in_fstring ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::pgvector_optimization::tests::no_finding_without_pgvector_import ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::session_management::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::session_management::tests::rule_name_mentions_session ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::query_timeout::tests::evaluate_returns_empty_for_non_sqlalchemy_code ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::detects_dict_with_content ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::query_timeout::tests::fix_preview_contains_timeout_examples ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::detects_empty_dict ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::query_timeout::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::detects_empty_list ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::query_timeout::tests::rule_name_mentions_timeout ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::detects_dict_constructor ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::query_timeout::tests::evaluate_returns_empty_for_configured_timeout ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::session_management::tests::evaluate_finding_has_medium_severity ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::pgvector_optimization::tests::fix_preview_contains_examples ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::connection_pool::tests::evaluate_returns_empty_for_non_sqlalchemy_code ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::detects_list_with_elements ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::detects_set_constructor ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::does_not_detect_number ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::session_management::tests::fix_preview_contains_context_manager ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::detects_list_constructor ... ok [INFO] [stdout] test rules::python::frameworks::sqlalchemy::session_management::tests::evaluate_returns_empty_for_non_sqlalchemy_code ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_detects_global_empty_dict ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_detects_multiline_dict_without_comment ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_detects_multiline_dict_with_comment ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_detects_multiple_global_mutables ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_detects_both_multiline_dicts_in_same_file ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_detects_global_set ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::does_not_detect_string ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_finding_has_correct_rule_id ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_finding_has_correctness_dimension ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_finding_has_high_severity ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::does_not_detect_function_call ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::does_not_detect_tuple ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_detects_global_empty_list ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_detects_other_mutable_while_ignoring_dunder_all ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_handles_empty_file ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_ignores_dunder_all_list ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_ignores_dunder_all_empty_list ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_finding_has_tags ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_ignores_dunder_all_in_module_with_other_code ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::detects_set_literal ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_finding_has_fix_preview ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_handles_empty_semantics ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_finding_has_patch ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_ignores_immutable_types ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_ignores_tuple ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_ignores_frozenset ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_uppercase_dict_has_low_severity ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_lowercase_mutable_has_high_severity_and_patch ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_uppercase_with_type_annotation_suggests_readonly ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_uppercase_without_annotation_has_no_patch ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::is_comprehension_detects_dict_comprehension ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::is_comprehension_detects_list_comprehension ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::is_comprehension_detects_set_comprehension ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::is_comprehension_ignores_regular_dict ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::is_comprehension_ignores_regular_dict_with_for_in_comment ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::is_comprehension_ignores_regular_list ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::is_comprehension_ignores_regular_set ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::is_uppercase_name_rejects_lowercase ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_readonly_in_type_union_is_skipped ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::is_uppercase_name_rejects_mixed_case ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::rule_implements_default ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_skips_readonly_annotated_variable ... ok [INFO] [stdout] test rules::python::graceful_shutdown::tests::evaluate_finding_has_fix_preview ... ok [INFO] [stdout] test rules::python::graceful_shutdown::tests::evaluate_finding_has_patch ... ok [INFO] [stdout] test rules::python::graceful_shutdown::tests::evaluate_finding_has_high_severity ... ok [INFO] [stdout] test rules::python::graceful_shutdown::tests::evaluate_detects_missing_graceful_shutdown_in_fastapi ... ok [INFO] [stdout] test rules::python::graceful_shutdown::tests::evaluate_returns_empty_when_signal_handling_present ... ok [INFO] [stdout] test rules::python::graceful_shutdown::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::graceful_shutdown::tests::rule_name_mentions_graceful_shutdown ... ok [INFO] [stdout] test rules::python::grpc_no_deadline::tests::detects_grpc_stub_call_without_timeout ... ok [INFO] [stdout] test rules::python::grpc_no_deadline::tests::no_finding_when_timeout_present ... ok [INFO] [stdout] test rules::python::grpc_no_deadline::tests::detects_grpc_channel_without_options ... ok [INFO] [stdout] test rules::python::grpc_no_deadline::tests::patch_adds_timeout_to_stub_call ... ok [INFO] [stdout] test rules::python::grpc_no_deadline::tests::test_extract_method_name ... ok [INFO] [stdout] test rules::python::grpc_no_deadline::tests::test_rule_id ... ok [INFO] [stdout] test rules::python::grpc_no_deadline::tests::patch_adds_options_to_channel ... ok [INFO] [stdout] test rules::python::grpc_no_deadline::tests::test_rule_name ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::is_uppercase_name_detects_uppercase ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::finding_has_correct_dimension ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::finding_has_no_patch ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::compute_halstead_from_ast_complex_function ... ok [INFO] [stdout] test rules::python::graceful_shutdown::tests::evaluate_returns_empty_for_non_web_app ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::finding_has_correct_tags ... ok [INFO] [stdout] test rules::python::grpc_no_deadline::tests::patch_uses_replace_bytes ... ok [INFO] [stdout] test rules::python::global_mutable_state::tests::evaluate_uppercase_mutable_has_low_severity_and_no_patch ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::halstead_metrics_compute_basic ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::halstead_metrics_difficulty_formula ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::halstead_metrics_estimated_bugs ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::compute_halstead_from_ast_counts_operators ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::halstead_metrics_handles_zero_operands ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::compute_halstead_from_ast_handles_function ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::is_test_file_allows_regular_files ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::halstead_metrics_handles_zero_vocabulary ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::is_test_file_detects_conftest ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::halstead_metrics_volume_formula ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::finding_title_includes_metrics ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::is_test_file_detects_test_prefix ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::rule_implements_default ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::severity_high_for_very_complex ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::severity_none_for_simple_functions ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::rule_returns_empty_for_empty_semantics ... ok [INFO] [stdout] test rules::python::idempotency_key::tests::fix_preview_for_generic_contains_idempotency_pattern ... ok [INFO] [stdout] test rules::python::idempotency_key::tests::fix_preview_for_stripe_contains_idempotency_key ... ok [INFO] [stdout] test rules::python::idempotency_key::tests::is_payment_operation_detects_generic_payment ... ok [INFO] [stdout] test rules::python::idempotency_key::tests::is_payment_operation_detects_stripe_payment_intent ... ok [INFO] [stdout] test rules::python::idempotency_key::tests::is_payment_operation_detects_charge ... ok [INFO] [stdout] test rules::python::idempotency_key::tests::is_payment_operation_ignores_non_payment ... ok [INFO] [stdout] test rules::python::idempotency_key::tests::rule_name_mentions_idempotency ... ok [INFO] [stdout] test rules::python::idempotency_key::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::io_in_hot_path::tests::detect_io_operation_identifies_file_operations ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::severity_medium_for_moderately_complex ... ok [INFO] [stdout] test rules::python::idempotency_key::tests::evaluate_returns_empty_for_non_payment_code ... ok [INFO] [stdout] test rules::python::io_in_hot_path::tests::detect_io_operation_identifies_network_operations ... ok [INFO] [stdout] test rules::python::io_in_hot_path::tests::detect_io_operation_identifies_subprocess ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::is_test_file_detects_tests_directory ... ok [INFO] [stdout] test rules::python::io_in_hot_path::tests::rule_implements_default ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::python::io_in_hot_path::tests::handles_empty_file ... ok [INFO] [stdout] test rules::python::io_in_hot_path::tests::detects_db_query_in_comprehension ... ok [INFO] [stdout] test rules::python::io_in_hot_path::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::io_in_hot_path::tests::detects_http_request_in_loop ... ok [INFO] [stdout] test rules::python::io_in_hot_path::tests::detects_file_open_in_loop ... ok [INFO] [stdout] test rules::python::io_in_hot_path::tests::io_operation_type_descriptions_are_meaningful ... ok [INFO] [stdout] test rules::python::io_in_hot_path::tests::finding_has_correct_properties ... ok [INFO] [stdout] test rules::python::io_in_hot_path::tests::handles_empty_semantics ... ok [INFO] [stdout] test rules::python::io_in_hot_path::tests::no_finding_for_io_outside_loop ... ok [INFO] [stdout] test rules::python::io_in_hot_path::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::io_in_hot_path::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::python::io_in_hot_path::tests::detect_io_operation_identifies_database_operations ... ok [INFO] [stdout] test rules::python::halstead_complexity::tests::is_test_file_detects_test_suffix ... ok [INFO] [stdout] test rules::python::large_response_memory::tests::test_rule_name ... ok [INFO] [stdout] test rules::python::missing_correlation_id::tests::evaluate_handles_non_fastapi_file ... ok [INFO] [stdout] test rules::python::missing_correlation_id::tests::patch_uses_insert_after_line ... ok [INFO] [stdout] test rules::python::missing_correlation_id::tests::patch_adds_middleware_to_app ... ok [INFO] [stdout] test rules::python::missing_correlation_id::tests::patch_preserves_original_code ... ok [INFO] [stdout] test rules::python::missing_correlation_id::tests::evaluate_ignores_app_with_starlette_context ... ok [INFO] [stdout] test rules::python::large_response_memory::tests::test_rule_id ... ok [INFO] [stdout] test rules::python::missing_correlation_id::tests::evaluate_ignores_when_middleware_in_separate_file ... ok [INFO] [stdout] test rules::python::missing_correlation_id::tests::evaluate_detects_app_without_middleware ... ok [INFO] [stdout] test rules::python::missing_correlation_id::tests::evaluate_handles_empty_semantics ... ok [INFO] [stdout] test rules::python::missing_correlation_id::tests::evaluate_finding_has_correct_properties ... ok [INFO] [stdout] test rules::python::missing_correlation_id::tests::evaluate_ignores_app_with_custom_correlation_middleware ... ok [INFO] [stdout] test rules::python::missing_correlation_id::tests::evaluate_ignores_app_with_observability_middleware ... ok [INFO] [stdout] test rules::python::missing_correlation_id::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::missing_correlation_id::tests::rule_implements_default ... ok [INFO] [stdout] test rules::python::missing_correlation_id::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::evaluate_handles_empty_semantics ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::evaluate_finding_has_correct_properties ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::expression_to_key_nested_attribute ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::expression_to_key_simple_variable ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::evaluate_detects_basic_logging ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::evaluate_handles_empty_file ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::evaluate_ignores_when_app_logging_module_with_get_logger ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::evaluate_detects_when_no_structured_logging_in_context ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::expression_to_key_camel_case ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::expression_to_key_subscript ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::expression_to_key_with_format_spec ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::evaluate_ignores_when_structlog_in_separate_logging_module ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::evaluate_ignores_when_structlog_imported ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::expression_to_key_attribute_access ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::evaluate_ignores_when_custom_logging_module_with_get_logger ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::extract_fstring_expressions_attribute_access ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::extract_fstring_expressions_method_call ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::extract_fstring_expressions_multiple ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::extract_fstring_expressions_no_fstring ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::issue_type_severities_are_correct ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::extract_fstring_expressions_simple_variable ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::extract_fstring_expressions_with_format_spec ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::patch_for_basic_logging_preserves_level ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::patch_extracts_multiple_variables ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::extract_static_message_preserves_punctuation ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::extract_static_message_regular_string ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::extract_static_message_removes_trailing_colon ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::extract_static_message_simple_fstring ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::patch_for_basic_logging_with_fstring_generates_kwargs ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::fix_preview_shows_transformation_pattern ... ok [INFO] [stdout] test rules::python::missing_correlation_id::tests::patch_works_with_multiline_fastapi_constructor ... ok [INFO] [stdout] test rules::python::missing_correlation_id::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::issue_type_descriptions_are_meaningful ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::evaluate_detects_print_statement ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::expression_to_key_method_call ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::patch_for_basic_logging_without_fstring_adds_comment ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::snake_case_with_numbers ... ok [INFO] [stdout] test rules::python::missing_tracing::tests::test_rule_id ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::patch_import_line_differs_from_logger_setup_line ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::snake_case_simple ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::patch_places_logger_setup_after_all_imports ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::snake_case_already_snake ... ok [INFO] [stdout] test rules::python::missing_tracing::tests::test_rule_name ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::rule_implements_default ... ok [INFO] [stdout] test rules::python::n_plus_one_queries::tests::fix_suggestions_are_orm_specific ... ok [INFO] [stdout] test rules::python::n_plus_one_queries::tests::handles_empty_file ... ok [INFO] [stdout] test rules::python::n_plus_one_queries::tests::handles_empty_semantics ... ok [INFO] [stdout] test rules::python::n_plus_one_queries::tests::detects_django_n_plus_one_in_loop ... ok [INFO] [stdout] test rules::python::n_plus_one_queries::tests::detects_n_plus_one_in_comprehension ... ok [INFO] [stdout] test rules::python::n_plus_one_queries::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::python::n_plus_one_queries::tests::rule_implements_default ... ok [INFO] [stdout] test rules::python::n_plus_one_queries::tests::no_finding_for_asyncio_code ... ok [INFO] [stdout] test rules::python::n_plus_one_queries::tests::fix_previews_are_orm_specific ... ok [INFO] [stdout] test rules::python::n_plus_one_queries::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::n_plus_one_queries::tests::detects_sqlalchemy_n_plus_one_in_loop ... ok [INFO] [stdout] test rules::python::n_plus_one_queries::tests::no_finding_for_http_client_code ... ok [INFO] [stdout] test rules::python::n_plus_one_queries::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::n_plus_one_queries::tests::no_finding_for_eager_loaded_query ... ok [INFO] [stdout] test rules::python::naive_datetime::tests::detects_datetime_now_without_tz ... ok [INFO] [stdout] test rules::python::n_plus_one_queries::tests::no_finding_for_single_query ... ok [INFO] [stdout] test rules::python::naive_datetime::tests::detects_datetime_utcnow ... ok [INFO] [stdout] test rules::python::naive_datetime::tests::detects_multiple_naive_datetimes ... ok [INFO] [stdout] test rules::python::naive_datetime::tests::finding_has_fix_preview ... ok [INFO] [stdout] test rules::python::naive_datetime::tests::finding_has_correct_rule_id ... ok [INFO] [stdout] test rules::python::naive_datetime::tests::finding_has_medium_severity ... ok [INFO] [stdout] test rules::python::n_plus_one_queries::tests::no_finding_for_kubernetes_client_code ... ok [INFO] [stdout] test rules::python::naive_datetime::tests::detects_datetime_today ... ok [INFO] [stdout] test rules::python::naive_datetime::tests::finding_has_patch ... ok [INFO] [stdout] test rules::python::naive_datetime::tests::no_finding_for_datetime_now_with_tz ... ok [INFO] [stdout] test rules::python::naive_datetime::tests::no_finding_for_unrelated_now_function ... ok [INFO] [stdout] test rules::python::naive_datetime::tests::no_finding_for_datetime_now_with_utc_constant ... ok [INFO] [stdout] test rules::python::naive_datetime::tests::patch_uses_replace_bytes_not_insert ... ok [INFO] [stdout] test rules::python::naive_datetime::tests::patch_actually_replaces_datetime_utcnow ... ok [INFO] [stdout] test rules::python::naive_datetime::tests::patch_actually_replaces_datetime_today ... ok [INFO] [stdout] test rules::python::naive_datetime::tests::handles_file_without_datetime ... ok [INFO] [stdout] test rules::python::naive_datetime::tests::patch_actually_replaces_datetime_now ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::snake_case_pascal ... ok [INFO] [stdout] test rules::python::naive_datetime::tests::handles_empty_file ... ok [INFO] [stdout] test rules::python::naive_datetime::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::naive_datetime::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::python::naive_datetime::tests::rule_implements_default ... ok [INFO] [stdout] test rules::python::naive_datetime::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::race_condition::tests::evaluate_returns_empty_for_non_concurrent_code ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::naive_datetime::tests::no_finding_for_date_today ... ok [INFO] [stdout] test rules::python::naive_datetime::tests::no_finding_for_datetime_now_with_timezone_arg ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::python::n_plus_one_queries::tests::detects_n_plus_one_when_orm_imports_present ... ok [INFO] [stdout] test rules::python::n_plus_one_queries::tests::finding_has_correct_properties ... ok [INFO] [stdout] test rules::python::missing_structured_logging::tests::snake_case_camel ... ok [INFO] [stdout] test rules::python::race_condition::tests::fix_preview_rmw_contains_lock ... ok [INFO] [stdout] test rules::python::race_condition::tests::rule_name_mentions_race_condition ... ok [INFO] [stdout] test rules::python::recursive_no_base_case::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::recursive_no_base_case::tests::finding_has_correct_properties ... ok [INFO] [stdout] test rules::python::recursive_no_base_case::tests::detects_mutual_recursion_pattern ... ok [INFO] [stdout] test rules::python::recursive_no_base_case::tests::handles_async_recursive_function ... ok [INFO] [stdout] test rules::python::regex_compile::tests::detects_compile_in_method ... ok [INFO] [stdout] test rules::python::recursive_no_base_case::tests::handles_empty_file ... ok [INFO] [stdout] test rules::python::recursive_no_base_case::tests::no_finding_for_non_recursive_function ... ok [INFO] [stdout] test rules::python::recursive_no_base_case::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::python::recursive_no_base_case::tests::no_false_positive_for_method_call_with_same_name ... ok [INFO] [stdout] test rules::python::race_condition::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::recursive_no_base_case::tests::detects_simple_recursive_function ... ok [INFO] [stdout] test rules::python::recursive_no_base_case::tests::rule_implements_default ... ok [INFO] [stdout] test rules::python::recursive_no_base_case::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::recursive_no_base_case::tests::handles_empty_semantics ... ok [INFO] [stdout] test rules::python::regex_compile::tests::extract_pattern_arg_handles_pattern_with_flags ... ok [INFO] [stdout] test rules::python::regex_compile::tests::extract_pattern_arg_handles_simple_pattern ... ok [INFO] [stdout] test rules::python::regex_compile::tests::find_unquoted_comma_works_correctly ... ok [INFO] [stdout] test rules::python::regex_compile::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::python::recursive_no_base_case::tests::no_false_positive_for_function_called_from_another ... ok [INFO] [stdout] test rules::python::regex_compile::tests::rule_implements_default ... ok [INFO] [stdout] test rules::python::regex_compile::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::regex_compile::tests::detects_compile_in_nested_function ... ok [INFO] [stdout] test rules::python::regex_compile::tests::suggest_constant_name_uses_assignment_target ... ok [INFO] [stdout] test rules::python::regex_compile::tests::suggest_constant_name_uses_function_name ... ok [INFO] [stdout] test rules::python::regex_compile::tests::finding_has_correct_properties ... ok [INFO] [stdout] test rules::python::regex_compile::tests::detects_re_compile_in_function ... ok [INFO] [stdout] test rules::python::sql_injection::tests::detects_fstring ... ok [INFO] [stdout] test rules::python::regex_compile::tests::handles_empty_semantics ... ok [INFO] [stdout] test rules::python::sql_injection::tests::detects_delete_query ... ok [INFO] [stdout] test rules::python::regex_compile::tests::is_regex_compile_call_detects_re_compile ... ok [INFO] [stdout] test rules::python::sql_injection::tests::detects_format_method ... ok [INFO] [stdout] test rules::python::regex_compile::tests::no_finding_for_non_python_semantics ... ok [INFO] [stdout] test rules::python::regex_compile::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::sql_injection::tests::detects_format_sql_in_assignment ... ok [INFO] [stdout] test rules::python::sql_injection::tests::detects_fstring_sql_in_assignment ... ok [INFO] [stdout] test rules::python::regex_compile::tests::no_finding_for_module_level_compile ... ok [INFO] [stdout] test rules::python::regex_compile::tests::extract_pattern_arg_handles_empty_args ... ok [INFO] [stdout] test rules::python::sql_injection::tests::detects_insert_query ... ok [INFO] [stdout] test rules::python::regex_compile::tests::handles_empty_file ... ok [INFO] [stdout] test rules::python::sql_injection::tests::does_not_detect_regular_string_as_fstring ... ok [INFO] [stdout] test rules::python::sql_injection::tests::extract_sql_template_from_fstring ... ok [INFO] [stdout] test rules::python::sql_injection::tests::detects_update_query ... ok [INFO] [stdout] test rules::python::sql_injection::tests::extract_sql_template_with_multiple_vars ... ok [INFO] [stdout] test rules::python::sql_injection::tests::finding_has_correct_rule_id ... ok [INFO] [stdout] test rules::python::sql_injection::tests::finding_has_critical_severity ... ok [INFO] [stdout] test rules::python::regex_compile::tests::detects_multiple_compile_in_function ... ok [INFO] [stdout] test rules::python::sql_injection::tests::finding_has_fix_preview ... ok [INFO] [stdout] test rules::python::sql_injection::tests::finding_has_patch ... ok [INFO] [stdout] test rules::python::sql_injection::tests::detects_percent_formatting ... ok [INFO] [stdout] test rules::python::sql_injection::tests::does_not_detect_non_sql ... ok [INFO] [stdout] test rules::python::regex_compile::tests::detects_compile_in_async_function ... ok [INFO] [stdout] test rules::python::sql_injection::tests::detects_select_query ... ok [INFO] [stdout] test rules::python::race_condition::tests::fix_preview_counter_contains_atomic ... ok [INFO] [stdout] test rules::python::sql_injection::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::sql_injection::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::python::sql_injection::tests::no_finding_for_non_sql_fstring ... ok [INFO] [stdout] test rules::python::sql_injection::tests::rule_implements_default ... ok [INFO] [stdout] test rules::python::sql_injection::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::sql_injection::tests::no_finding_for_static_sql ... ok [INFO] [stdout] test rules::python::sync_dns_lookup::tests::detects_getfqdn ... ok [INFO] [stdout] test rules::python::sync_dns_lookup::tests::finding_has_correct_properties ... ok [INFO] [stdout] test rules::python::sync_dns_lookup::tests::detects_getaddrinfo_in_async ... ok [INFO] [stdout] test rules::python::sql_injection::tests::handles_file_without_sql ... ok [INFO] [stdout] test rules::python::sync_dns_lookup::tests::detects_direct_import ... ok [INFO] [stdout] test rules::python::sql_injection::tests::no_finding_for_parameterized_query ... ok [INFO] [stdout] test rules::python::sync_dns_lookup::tests::detects_gethostbyname_in_async ... ok [INFO] [stdout] test rules::python::sync_dns_lookup::tests::detects_getnameinfo ... ok [INFO] [stdout] test rules::python::sync_dns_lookup::tests::detects_in_sync_context_with_lower_severity ... ok [INFO] [stdout] test rules::python::sync_dns_lookup::tests::dns_lookup_type_descriptions_are_meaningful ... ok [INFO] [stdout] test rules::python::sync_dns_lookup::tests::generates_patch_for_async_context ... ok [INFO] [stdout] test rules::python::sync_dns_lookup::tests::handles_empty_file ... ok [INFO] [stdout] test rules::python::sync_dns_lookup::tests::handles_empty_semantics ... ok [INFO] [stdout] test rules::python::sync_dns_lookup::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::sql_injection::tests::handles_empty_file ... ok [INFO] [stdout] test rules::python::sync_dns_lookup::tests::detects_gethostbyaddr_reverse_dns ... ok [INFO] [stdout] test rules::python::sync_dns_lookup::tests::higher_severity_in_async_context ... ok [INFO] [stdout] test rules::python::sync_dns_lookup::tests::is_dns_function_identifies_all_functions ... ok [INFO] [stdout] test rules::python::sync_dns_lookup::tests::no_finding_without_socket_import ... ok [INFO] [stdout] test rules::python::sync_dns_lookup::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::python::sync_dns_lookup::tests::rule_implements_default ... ok [INFO] [stdout] test rules::python::sync_dns_lookup::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::transaction_boundary::tests::is_db_write_operation_detects_delete ... ok [INFO] [stdout] test rules::python::transaction_boundary::tests::rule_name_mentions_transaction ... ok [INFO] [stdout] test rules::python::transaction_boundary::tests::evaluate_returns_empty_for_non_db_code ... ok [INFO] [stdout] test rules::python::unbounded_cache::tests::cache_pattern_descriptions_are_meaningful ... ok [INFO] [stdout] test rules::python::transaction_boundary::tests::is_db_write_operation_detects_add ... ok [INFO] [stdout] test rules::python::unbounded_cache::tests::handles_empty_file ... ok [INFO] [stdout] test rules::python::transaction_boundary::tests::is_db_write_operation_detects_insert ... ok [INFO] [stdout] test rules::python::transaction_boundary::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::unbounded_cache::tests::detects_functools_cache ... ok [INFO] [stdout] test rules::python::unbounded_cache::tests::cache_pattern_fix_suggestions_are_meaningful ... ok [INFO] [stdout] test rules::python::unbounded_cache::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::unbounded_cache::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::python::unbounded_cache::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::unbounded_concurrency::tests::evaluate_handles_empty_semantics ... ok [INFO] [stdout] test rules::python::unbounded_concurrency::tests::evaluate_finding_has_correct_properties ... ok [INFO] [stdout] test rules::python::unbounded_cache::tests::detects_lru_cache_with_maxsize_none ... ok [INFO] [stdout] test rules::python::unbounded_concurrency::tests::evaluate_ignores_safe_patterns ... ok [INFO] [stdout] test rules::python::unbounded_concurrency::tests::pattern_descriptions_are_meaningful ... ok [INFO] [stdout] test rules::python::unbounded_concurrency::tests::rule_implements_default ... ok [INFO] [stdout] test rules::python::unbounded_concurrency::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::python::unbounded_concurrency::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::unbounded_cache::tests::finding_has_correct_properties ... ok [INFO] [stdout] test rules::python::unbounded_concurrency::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::python::unbounded_memory::tests::evaluate_returns_empty_for_safe_code ... ok [INFO] [stdout] test rules::python::unbounded_memory::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::unbounded_cache::tests::detects_plain_dict_cache ... ok [INFO] [stdout] test rules::python::unbounded_cache::tests::handles_empty_semantics ... ok [INFO] [stdout] test rules::python::unbounded_cache::tests::is_cache_like_name_detects_cache_patterns ... ok [INFO] [stdout] test rules::python::unbounded_concurrency::tests::evaluate_handles_empty_file ... ok [INFO] [stdout] test rules::python::unbounded_cache::tests::no_finding_for_regular_dict ... ok [INFO] [stdout] test rules::python::unbounded_cache::tests::rule_implements_default ... ok [INFO] [stdout] test rules::python::unbounded_memory::tests::fix_preview_for_json_load_contains_ijson ... ok [INFO] [stdout] test rules::python::transaction_boundary::tests::is_db_write_operation_detects_update ... ok [INFO] [stdout] test rules::python::transaction_boundary::tests::is_db_write_operation_ignores_read ... ok [INFO] [stdout] test rules::python::unbounded_memory::tests::fix_preview_for_all_contains_yield_per ... ok [INFO] [stdout] test rules::python::unbounded_cache::tests::no_finding_for_bounded_lru_cache ... ok [INFO] [stdout] test rules::python::unbounded_memory::tests::fix_preview_for_fetchall_contains_fetchmany ... ok [INFO] [stdout] test rules::python::unbounded_memory::tests::rule_name_mentions_memory ... ok [INFO] [stdout] test rules::python::unbounded_retry::tests::test_rule_id ... ok [INFO] [stdout] test rules::python::unbounded_retry::tests::test_rule_name ... ok [INFO] [stdout] test rules::python::unbounded_retry::tests::patch_uses_replace_bytes ... ok [INFO] [stdout] test rules::python::unbounded_retry::tests::no_finding_for_retry_with_stop ... ok [INFO] [stdout] test rules::python::unbounded_retry::tests::detects_backoff_without_max_tries ... ok [INFO] [stdout] test rules::python::uncancelled_tasks::tests::patch_uses_replace_bytes_for_ensure_future ... ok [INFO] [stdout] test rules::python::uncancelled_tasks::tests::no_finding_for_create_task ... ok [INFO] [stdout] test rules::python::uncancelled_tasks::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::unbounded_retry::tests::detects_tenacity_retry_without_stop ... ok [INFO] [stdout] test rules::python::unbounded_retry::tests::no_finding_for_backoff_with_max_tries ... ok [INFO] [stdout] test rules::python::unbounded_retry::tests::patch_adds_max_tries_to_backoff ... ok [INFO] [stdout] test rules::python::uncancelled_tasks::tests::patch_replaces_ensure_future_with_create_task ... ok [INFO] [stdout] test rules::python::uncancelled_tasks::tests::detects_ensure_future ... ok [INFO] [stdout] test rules::python::unbounded_retry::tests::patch_adds_stop_to_tenacity_retry ... ok [INFO] [stdout] test rules::python::uncancelled_tasks::tests::rule_name_mentions_tasks ... ok [INFO] [stdout] test rules::python::uncancelled_tasks::tests::fix_preview_contains_shutdown_handling ... ok [INFO] [stdout] test rules::python::uncancelled_tasks::tests::fix_preview_contains_task_management ... ok [INFO] [stdout] test rules::python::uncancelled_tasks::tests::evaluate_returns_empty_for_non_asyncio_code ... ok [INFO] [stdout] test rules::python::unsafe_eval::tests::detects_exec ... ok [INFO] [stdout] test rules::python::unsafe_eval::tests::detects_unsafe_yaml_load ... ok [INFO] [stdout] test rules::python::unsafe_eval::tests::getattr_at_module_level_not_flagged ... ok [INFO] [stdout] test rules::python::unsafe_eval::tests::detects_pickle_loads ... ok [INFO] [stdout] test rules::python::unsafe_eval::tests::getattr_does_not_flag_literal_string ... ok [INFO] [stdout] test rules::python::unsafe_eval::tests::getattr_flags_direct_parameter_usage ... ok [INFO] [stdout] test rules::python::unsafe_eval::tests::no_finding_for_yaml_load_with_safeloader ... ok [INFO] [stdout] test rules::python::unsafe_eval::tests::no_finding_for_yaml_safe_load ... ok [INFO] [stdout] test rules::python::unsafe_eval::tests::detects_subprocess_shell_true ... ok [INFO] [stdout] test rules::python::unsafe_eval::tests::getattr_flags_parameter_attribute_access ... ok [INFO] [stdout] test rules::python::unsafe_eval::tests::detects_eval ... ok [INFO] [stdout] test rules::python::unsafe_eval::tests::patch_replaces_yaml_load_with_safe_load ... ok [INFO] [stdout] test rules::python::unsafe_eval::tests::test_rule_id ... ok [INFO] [stdout] test rules::python::unsafe_eval::tests::test_rule_name ... ok [INFO] [stdout] test rules::python::unsafe_eval::tests::patch_uses_replace_bytes_for_yaml ... ok [INFO] [stdout] test rules::registry::tests::all_returns_all_registered_rules ... ok [INFO] [stdout] test rules::python::unsafe_eval::tests::getattr_does_not_flag_intermediate_variable ... ok [INFO] [stdout] test rules::registry::tests::all_returns_empty_slice_for_empty_registry ... ok [INFO] [stdout] test rules::registry::tests::all_returns_rules_with_correct_ids ... ok [INFO] [stdout] test rules::registry::tests::all_returns_rules_with_correct_names ... ok [INFO] [stdout] test rules::registry::tests::builtin_rules_are_accessible_via_all ... ok [INFO] [stdout] test rules::python::unsafe_eval::tests::setattr_does_not_flag_intermediate_variable ... ok [INFO] [stdout] test rules::registry::tests::default_is_equivalent_to_new ... ok [INFO] [stdout] test rules::registry::tests::default_creates_empty_registry ... ok [INFO] [stdout] test rules::registry::tests::new_creates_empty_registry ... ok [INFO] [stdout] test rules::registry::tests::new_registry_has_zero_rules ... ok [INFO] [stdout] test rules::registry::tests::register_allows_duplicate_rule_ids ... ok [INFO] [stdout] test rules::registry::tests::register_adds_single_rule ... ok [INFO] [stdout] test rules::registry::tests::register_preserves_order ... ok [INFO] [stdout] test rules::registry::tests::with_builtin_rules_all_rules_have_non_empty_names ... ok [INFO] [stdout] test rules::registry::tests::with_builtin_rules_contains_async_resource_cleanup_rule ... ok [INFO] [stdout] test rules::registry::tests::with_builtin_rules_contains_expected_rule_count ... ok [INFO] [stdout] test rules::registry::tests::with_builtin_rules_contains_bare_except_rule ... ok [INFO] [stdout] test rules::registry::tests::registry_with_rules_implements_debug ... ok [INFO] [stdout] test rules::registry::tests::register_adds_multiple_rules ... ok [INFO] [stdout] test rules::registry::tests::with_builtin_rules_contains_go_defer_in_loop_rule ... ok [INFO] [stdout] test rules::registry::tests::with_builtin_rules_contains_fastapi_request_timeout_rule ... ok [INFO] [stdout] test rules::registry::tests::with_builtin_rules_contains_fastapi_input_validation_rule ... ok [INFO] [stdout] test rules::registry::tests::with_builtin_rules_contains_db_timeout_rule ... ok [INFO] [stdout] test rules::registry::tests::with_builtin_rules_contains_fastapi_cors_rule ... ok [INFO] [stdout] test rules::registry::tests::registry_implements_debug ... ok [INFO] [stdout] test rules::registry::tests::with_builtin_rules_all_rules_have_non_empty_ids ... ok [INFO] [stdout] test rules::registry::tests::with_builtin_rules_contains_fastapi_exception_handler_rule ... ok [INFO] [stdout] test rules::registry::tests::with_builtin_rules_contains_fastapi_health_check_rule ... ok [INFO] [stdout] test rules::registry::tests::with_builtin_rules_contains_go_http_timeout_rule ... ok [INFO] [stdout] test rules::registry::tests::with_builtin_rules_contains_go_sql_injection_rule ... ok [INFO] [stdout] test rules::registry::tests::with_builtin_rules_contains_go_unchecked_error_rule ... ok [INFO] [stdout] test rules::registry::tests::with_builtin_rules_contains_http_timeout_rule ... ok [INFO] [stdout] test rules::registry::tests::with_builtin_rules_contains_sql_injection_rule ... ok [INFO] [stdout] test rules::rust::arc_mutex_contention::tests::is_arc_std_mutex_detects_basic ... ok [INFO] [stdout] test rules::registry::tests::with_builtin_rules_contains_naive_datetime_rule ... ok [INFO] [stdout] test rules::rust::arc_mutex_contention::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::registry::tests::with_builtin_rules_contains_http_retry_rule ... ok [INFO] [stdout] test rules::registry::tests::with_builtin_rules_contains_http_blocking_async_rule ... ok [INFO] [stdout] test rules::rust::arc_mutex_contention::tests::is_arc_std_mutex_skips_non_mutex ... ok [INFO] [stdout] test rules::registry::tests::can_add_rules_after_builtin ... ok [INFO] [stdout] test rules::rust::arc_mutex_contention::tests::detects_arc_mutex_in_async_function ... ok [INFO] [stdout] test rules::rust::arc_mutex_contention::tests::finding_has_correct_severity_for_async ... ok [INFO] [stdout] test rules::rust::arc_mutex_contention::tests::is_arc_std_mutex_skips_tokio ... ok [INFO] [stdout] test rules::registry::tests::with_builtin_rules_contains_pgvector_optimization_rule ... ok [INFO] [stdout] test rules::registry::tests::with_builtin_rules_creates_non_empty_registry ... ok [INFO] [stdout] test rules::rust::arc_mutex_contention::tests::rule_name_mentions_mutex ... ok [INFO] [stdout] test rules::rust::blocking_in_async::tests::blocking_patterns_are_valid ... ok [INFO] [stdout] test rules::registry::tests::builtin_rules_can_be_evaluated ... ok [INFO] [stdout] test rules::rust::blocking_in_async::tests::detects_std_fs_read_in_async ... ok [INFO] [stdout] test rules::rust::blocking_in_async::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::blocking_in_async::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::rust::circuit_breaker::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::arc_mutex_contention::tests::skips_non_async_code_without_tokio ... ok [INFO] [stdout] test rules::rust::blocking_in_async::tests::skips_blocking_in_sync_function ... ok [INFO] [stdout] test rules::rust::clone_in_loop::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::clone_in_loop::tests::extract_cloned_expression_basic ... ok [INFO] [stdout] test rules::rust::clone_in_loop::tests::detects_loop_variable ... ok [INFO] [stdout] test rules::rust::circuit_breaker::tests::rule_name_mentions_circuit_breaker ... ok [INFO] [stdout] test rules::rust::clone_in_loop::tests::simple_variable_clone_has_medium_severity ... ok [INFO] [stdout] test rules::rust::clone_in_loop::tests::field_access_clone_has_low_severity ... ok [INFO] [stdout] test rules::rust::clone_in_loop::tests::detects_clone_in_for_loop ... ok [INFO] [stdout] test rules::rust::clone_in_loop::tests::finding_has_performance_dimension ... ok [INFO] [stdout] test rules::rust::clone_in_loop::tests::detects_clone_to_consume_with_from ... ok [INFO] [stdout] test rules::rust::clone_in_loop::tests::collects_field_accesses_in_loop ... ok [INFO] [stdout] test rules::rust::clone_in_loop::tests::rule_name_mentions_clone ... ok [INFO] [stdout] test rules::rust::cpu_in_async::tests::detect_cpu_intensive_identifies_crypto ... ok [INFO] [stdout] test rules::rust::clone_in_loop::tests::collects_variable_bindings_in_loop ... ok [INFO] [stdout] test rules::rust::clone_in_loop::tests::loop_invariant_clone_detection ... ok [INFO] [stdout] test rules::rust::clone_in_loop::tests::test_estimate_binding_length_with_mut ... ok [INFO] [stdout] test rules::rust::clone_in_loop::tests::test_extract_cloned_expression_complex ... ok [INFO] [stdout] test rules::rust::clone_in_loop::tests::skips_clone_on_destructured_loop_variable ... ok [INFO] [stdout] test rules::rust::clone_in_loop::tests::skips_clone_outside_loop ... ok [INFO] [stdout] test rules::rust::clone_in_loop::tests::test_estimate_binding_length ... ok [INFO] [stdout] test rules::rust::cpu_in_async::tests::cpu_operation_type_descriptions_are_meaningful ... ok [INFO] [stdout] test rules::rust::blocking_in_async::tests::finding_has_correct_properties ... ok [INFO] [stdout] test rules::rust::cpu_in_async::tests::detect_cpu_intensive_identifies_compression ... ok [INFO] [stdout] test rules::rust::clone_in_loop::tests::skips_test_functions ... ok [INFO] [stdout] test rules::rust::cpu_in_async::tests::detect_cpu_intensive_identifies_json ... ok [INFO] [stdout] test rules::rust::cpu_in_async::tests::handles_empty_semantics ... ok [INFO] [stdout] test rules::rust::cpu_in_async::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::rust::ephemeral_filesystem_write::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::frameworks::axum::tests::cors_rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::frameworks::axum::tests::error_handler_rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::frameworks::axum::tests::skips_non_axum_files ... ok [INFO] [stdout] test rules::rust::frameworks::axum::tests::detects_missing_cors ... ok [INFO] [stdout] test rules::rust::frameworks::axum::tests::detects_missing_timeout ... ok [INFO] [stdout] test rules::rust::cpu_in_async::tests::no_finding_for_sync_functions ... ok [INFO] [stdout] test rules::rust::cpu_in_async::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::frameworks::sqlx::tests::pool_timeout_rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::frameworks::sqlx::tests::detects_missing_pool_timeout ... ok [INFO] [stdout] test rules::rust::frameworks::axum::tests::skips_when_cors_present ... ok [INFO] [stdout] test rules::rust::frameworks::axum::tests::does_not_flag_unwrap_or_else_as_unwrap_in_handler ... ok [INFO] [stdout] test rules::rust::frameworks::tokio::tests::runtime_config_rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::frameworks::tokio::tests::skips_non_tokio_files ... ok [INFO] [stdout] test rules::rust::frameworks::sqlx::tests::query_timeout_rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::global_mutable_state::tests::detects_static_mut ... ok [INFO] [stdout] test rules::rust::frameworks::tokio::tests::graceful_shutdown_rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::frameworks::tokio::tests::detects_missing_shutdown_handling ... ok [INFO] [stdout] test rules::rust::global_mutable_state::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::frameworks::tokio::tests::skips_when_signal_handling_present ... ok [INFO] [stdout] test rules::rust::frameworks::sqlx::tests::skips_pool_with_timeout ... ok [INFO] [stdout] test rules::rust::frameworks::sqlx::tests::transaction_rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::frameworks::axum::tests::timeout_rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::frameworks::sqlx::tests::skips_non_sqlx_files ... ok [INFO] [stdout] test rules::rust::global_mutable_state::tests::skips_immutable_static ... ok [INFO] [stdout] test rules::rust::grpc_no_deadline::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::halstead_complexity::tests::finding_has_correct_dimension ... ok [INFO] [stdout] test rules::rust::halstead_complexity::tests::finding_has_correct_tags ... ok [INFO] [stdout] test rules::rust::halstead_complexity::tests::halstead_metrics_compute_basic ... ok [INFO] [stdout] test rules::rust::halstead_complexity::tests::compute_halstead_from_ast_counts_operators ... ok [INFO] [stdout] test rules::rust::halstead_complexity::tests::halstead_metrics_volume_formula ... ok [INFO] [stdout] test rules::rust::halstead_complexity::tests::is_test_file_allows_regular_files ... ok [INFO] [stdout] test rules::rust::halstead_complexity::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::halstead_complexity::tests::is_test_file_detects_test_patterns ... ok [INFO] [stdout] test rules::rust::halstead_complexity::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::rust::halstead_complexity::tests::rule_implements_default ... ok [INFO] [stdout] test rules::rust::halstead_complexity::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::rust::halstead_complexity::tests::rule_returns_empty_for_empty_semantics ... ok [INFO] [stdout] test rules::rust::halstead_complexity::tests::halstead_metrics_difficulty_formula ... ok [INFO] [stdout] test rules::rust::hardcoded_secrets::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::rust::halstead_complexity::tests::severity_high_for_very_complex ... ok [INFO] [stdout] test rules::rust::hardcoded_secrets::tests::secret_name_patterns_are_lowercase ... ok [INFO] [stdout] test rules::rust::halstead_complexity::tests::severity_none_for_simple_functions ... ok [INFO] [stdout] test rules::rust::idempotency_key::tests::skips_when_idempotency_header_is_handled ... ok [INFO] [stdout] test rules::rust::ignored_result::tests::does_not_flag_if_let_ok_pattern ... ok [INFO] [stdout] test rules::rust::ignored_result::tests::finding_has_correct_properties ... ok [INFO] [stdout] test rules::rust::idempotency_key::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::hardcoded_secrets::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::ignored_result::tests::detects_ignored_result_in_production_code ... ok [INFO] [stdout] test rules::rust::hardcoded_secrets::tests::secret_patterns_compile ... ok [INFO] [stdout] test rules::rust::ignored_result::tests::detects_let_underscore_pattern ... ok [INFO] [stdout] test rules::rust::io_in_hot_path::tests::io_patterns_are_valid ... ok [INFO] [stdout] test rules::rust::io_in_hot_path::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::rust::io_in_hot_path::tests::handles_empty_semantics ... ok [INFO] [stdout] test rules::rust::ignored_result::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::ignored_result::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::rust::large_response_memory::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::ignored_result::tests::skips_proper_error_handling ... ok [INFO] [stdout] test rules::rust::io_in_hot_path::tests::no_finding_for_io_outside_loop ... ok [INFO] [stdout] test rules::rust::io_in_hot_path::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::hardcoded_secrets::tests::detects_password_constant ... ok [INFO] [stdout] test rules::rust::ignored_result::tests::skips_test_code ... ok [INFO] [stdout] test rules::rust::io_in_hot_path::tests::cached_patterns_are_valid ... ok [INFO] [stdout] test rules::rust::missing_async_timeout::tests::does_not_flag_reqwest_send_when_client_has_timeout ... ok [INFO] [stdout] test rules::rust::missing_async_timeout::tests::external_call_patterns_are_valid ... ok [INFO] [stdout] test rules::rust::missing_async_timeout::tests::handles_empty_semantics ... ok [INFO] [stdout] test rules::rust::missing_async_timeout::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::missing_async_timeout::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::rust::missing_async_timeout::tests::timeout_patterns_are_valid ... ok [INFO] [stdout] test rules::rust::missing_async_timeout::tests::does_not_flag_exact_rustee_pattern ... ok [INFO] [stdout] test rules::rust::hardcoded_secrets::tests::skips_safe_constants ... ok [INFO] [stdout] test rules::rust::missing_async_timeout::tests::does_not_flag_reqwest_with_chained_calls_and_timeout ... ok [INFO] [stdout] test rules::rust::missing_async_timeout::tests::does_not_flag_reqwest_send_when_client_has_timeout_and_send_await_split_lines ... ok [INFO] [stdout] test rules::rust::missing_correlation_id::tests::rule_name_mentions_correlation ... ok [INFO] [stdout] test rules::rust::missing_select_timeout::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::rust::missing_async_timeout::tests::flags_reqwest_send_without_timeout ... ok [INFO] [stdout] test rules::rust::missing_select_timeout::tests::finding_has_correct_properties ... ok [INFO] [stdout] test rules::rust::missing_select_timeout::tests::detects_select_without_timeout ... ok [INFO] [stdout] test rules::rust::missing_async_timeout::tests::does_not_flag_reqwest_send_when_using_fully_qualified_timeout ... ok [INFO] [stdout] test rules::rust::missing_async_timeout::tests::handles_sync_functions ... ok [INFO] [stdout] test rules::rust::missing_structured_logging::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::rust::missing_structured_logging::tests::structured_log_patterns_are_valid ... ok [INFO] [stdout] test rules::rust::missing_structured_logging::tests::unstructured_log_patterns_are_valid ... ok [INFO] [stdout] test rules::rust::missing_tracing::tests::detects_public_function_without_tracing ... ok [INFO] [stdout] test rules::rust::missing_tracing::tests::finding_has_observability_dimension ... ok [INFO] [stdout] test rules::rust::missing_tracing::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::missing_tracing::tests::rule_name_mentions_tracing ... ok [INFO] [stdout] test rules::rust::missing_select_timeout::tests::skips_shutdown_signal_select_without_timeout ... ok [INFO] [stdout] test rules::rust::missing_tracing::tests::skips_files_without_tracing_import ... ok [INFO] [stdout] test rules::rust::missing_select_timeout::tests::skips_select_with_timeout ... ok [INFO] [stdout] test rules::rust::missing_async_timeout::tests::does_not_flag_reqwest_send_when_match_on_client_builder ... ok [INFO] [stdout] test rules::rust::missing_structured_logging::tests::no_finding_for_code_without_logging ... ok [INFO] [stdout] test rules::rust::n_plus_one::tests::handles_empty_semantics ... ok [INFO] [stdout] test rules::rust::n_plus_one::tests::no_finding_for_non_loop_query ... ok [INFO] [stdout] test rules::rust::hardcoded_secrets::tests::finding_has_correct_severity ... ok [INFO] [stdout] test rules::rust::n_plus_one::tests::no_finding_for_string_literal_containing_query_patterns ... ok [INFO] [stdout] test rules::rust::n_plus_one::tests::query_patterns_are_valid ... ok [INFO] [stdout] test rules::rust::n_plus_one::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::n_plus_one::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::rust::naive_datetime::tests::handles_empty_semantics ... ok [INFO] [stdout] test rules::rust::naive_datetime::tests::naive_datetime_patterns_are_valid ... ok [INFO] [stdout] test rules::rust::naive_datetime::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::rust::missing_correlation_id::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::naive_datetime::tests::no_finding_for_timezone_aware_code ... ok [INFO] [stdout] test rules::rust::missing_structured_logging::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::n_plus_one::tests::no_finding_for_slice_first_in_loop ... ok [INFO] [stdout] test rules::rust::missing_tracing::tests::skips_private_functions ... ok [INFO] [stdout] test rules::rust::missing_tracing::tests::skips_test_functions ... ok [INFO] [stdout] test rules::rust::n_plus_one::tests::batch_patterns_are_valid ... ok [INFO] [stdout] test rules::rust::naive_datetime::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::naive_datetime::tests::safe_datetime_patterns_are_valid ... ok [INFO] [stdout] test rules::rust::panic_in_library::tests::detects_unimplemented_macro ... ok [INFO] [stdout] test rules::rust::missing_select_timeout::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::missing_structured_logging::tests::handles_empty_semantics ... ok [INFO] [stdout] test rules::rust::panic_in_library::tests::detects_panic_in_library_function ... ok [INFO] [stdout] test rules::rust::panic_in_library::tests::detects_todo_macro ... ok [INFO] [stdout] test rules::rust::println_in_lib::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::println_in_lib::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::rust::panic_in_library::tests::finding_has_correct_properties ... ok [INFO] [stdout] test rules::rust::println_in_lib::tests::skips_println_in_main ... ok [INFO] [stdout] test rules::rust::println_in_lib::tests::finding_has_patch ... ok [INFO] [stdout] test rules::rust::println_in_lib::tests::skips_println_in_test ... ok [INFO] [stdout] test rules::rust::regex_compile::tests::detects_regex_in_constructor ... ok [INFO] [stdout] test rules::rust::regex_compile::tests::finding_has_correct_properties ... ok [INFO] [stdout] test rules::rust::regex_compile::tests::generate_static_name_works ... ok [INFO] [stdout] test rules::rust::regex_compile::tests::extract_regex_pattern_works ... ok [INFO] [stdout] test rules::rust::regex_compile::tests::is_constructor_name_identifies_constructors ... ok [INFO] [stdout] test rules::rust::regex_compile::tests::returns_empty_for_non_rust ... ok [INFO] [stdout] test rules::rust::regex_compile::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::regex_compile::tests::rule_name_mentions_regex ... ok [INFO] [stdout] test rules::rust::spawn_no_error_handling::tests::finding_has_correct_dimension ... ok [INFO] [stdout] test rules::rust::spawn_no_error_handling::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::panic_in_library::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::spawn_no_error_handling::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::rust::panic_in_library::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::rust::regex_compile::tests::skips_regex_in_lazy_lock_initializer ... ok [INFO] [stdout] test rules::rust::println_in_lib::tests::detects_dbg_in_library ... ok [INFO] [stdout] test rules::rust::panic_in_library::tests::skips_panic_in_main ... ok [INFO] [stdout] test rules::rust::spawn_no_error_handling::tests::skips_captured_spawn ... ok [INFO] [stdout] test rules::rust::panic_in_library::tests::skips_panic_in_test ... ok [INFO] [stdout] test rules::rust::regex_compile::tests::skips_regex_in_main ... ok [INFO] [stdout] test rules::rust::regex_compile::tests::skips_regex_in_once_lock_get_or_init ... ok [INFO] [stdout] test rules::rust::println_in_lib::tests::detects_println_in_library ... ok [INFO] [stdout] test rules::rust::regex_compile::tests::skips_regex_in_test_function ... ok [INFO] [stdout] test rules::rust::spawn_no_error_handling::tests::detects_uncaptured_spawn ... ok [INFO] [stdout] test rules::rust::sql_injection::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::sql_injection::tests::safe_format_string_with_escaped_sql ... ok [INFO] [stdout] test rules::rust::sql_injection::tests::safe_format_string_with_named_parameters ... ok [INFO] [stdout] test rules::rust::sql_injection::tests::safe_format_string_with_parameterized_placeholders ... ok [INFO] [stdout] test rules::rust::sql_injection::tests::rule_name_mentions_sql ... ok [INFO] [stdout] test rules::rust::sql_injection::tests::safe_format_string_with_documentation_markers ... ok [INFO] [stdout] test rules::rust::sync_dns_lookup::tests::async_dns_patterns_are_valid ... ok [INFO] [stdout] test rules::rust::sync_dns_lookup::tests::blocking_dns_patterns_are_valid ... ok [INFO] [stdout] test rules::rust::sync_dns_lookup::tests::handles_empty_semantics ... ok [INFO] [stdout] test rules::rust::sql_injection::tests::skips_test_functions ... ok [INFO] [stdout] test rules::rust::sql_injection::tests::unsafe_format_string_without_safety_indicators ... ok [INFO] [stdout] test rules::rust::sync_dns_lookup::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::rust::sync_dns_lookup::tests::no_finding_for_sync_functions ... ok [INFO] [stdout] test rules::rust::sync_dns_lookup::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::unbounded_channel::tests::detects_unbounded_import ... ok [INFO] [stdout] test rules::rust::unbounded_channel::tests::finding_has_correct_properties ... ok [INFO] [stdout] test rules::rust::unbounded_channel::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::unbounded_channel::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::rust::unbounded_channel::tests::skips_bounded_channels ... ok [INFO] [stdout] test rules::rust::unbounded_channel::tests::unbounded_patterns_are_valid ... ok [INFO] [stdout] test rules::rust::unbounded_concurrency::tests::concurrency_limit_patterns_are_valid ... ok [INFO] [stdout] test rules::rust::unbounded_concurrency::tests::handles_empty_semantics ... ok [INFO] [stdout] test rules::rust::unbounded_concurrency::tests::no_finding_for_sync_code ... ok [INFO] [stdout] test rules::rust::unbounded_concurrency::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::unbounded_concurrency::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::rust::unbounded_concurrency::tests::unbounded_spawn_patterns_are_valid ... ok [INFO] [stdout] test rules::rust::unbounded_memory::tests::bounded_patterns_are_valid ... ok [INFO] [stdout] test rules::rust::unbounded_memory::tests::external_source_patterns_are_valid ... ok [INFO] [stdout] test rules::rust::unbounded_memory::tests::external_sources_are_identified ... ok [INFO] [stdout] test rules::rust::unbounded_memory::tests::handles_empty_semantics ... ok [INFO] [stdout] test rules::rust::unbounded_memory::tests::internal_iteration_patterns_are_recognized_as_bounded ... ok [INFO] [stdout] test rules::rust::unbounded_memory::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::unbounded_memory::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::rust::unbounded_memory::tests::unbounded_patterns_are_valid ... ok [INFO] [stdout] test rules::rust::unbounded_recursion::tests::depth_limit_patterns_are_valid ... ok [INFO] [stdout] test rules::rust::unbounded_recursion::tests::detects_actual_self_new_recursion ... ok [INFO] [stdout] test rules::rust::unbounded_recursion::tests::detects_standalone_function_recursion ... ok [INFO] [stdout] test rules::rust::unbounded_recursion::tests::detects_actual_self_recursion ... ok [INFO] [stdout] test rules::rust::unbounded_recursion::tests::does_not_flag_clone_method_on_fields ... ok [INFO] [stdout] test rules::python::regex_compile::tests::finding_description_mentions_function_name ... ok [INFO] [stdout] test rules::rust::unbounded_recursion::tests::does_not_flag_constructor_calling_other_types_new ... ok [INFO] [stdout] test rules::rust::unbounded_recursion::tests::does_not_flag_iterator_method_calls ... ok [INFO] [stdout] test rules::rust::unbounded_recursion::tests::handles_empty_semantics ... ok [INFO] [stdout] test rules::rust::unbounded_recursion::tests::multiple_self_calls_higher_severity ... ok [INFO] [stdout] test rules::rust::unbounded_recursion::tests::no_finding_for_non_recursive_code ... ok [INFO] [stdout] test rules::rust::unbounded_recursion::tests::no_finding_in_test_code ... ok [INFO] [stdout] test rules::rust::unbounded_recursion::tests::no_finding_for_different_type_method_call ... ok [INFO] [stdout] test rules::rust::unbounded_recursion::tests::no_finding_with_depth_parameter ... ok [INFO] [stdout] test rules::rust::unbounded_recursion::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::unbounded_recursion::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::rust::unbounded_retry::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::uncancelled_tasks::tests::cancellation_patterns_are_valid ... ok [INFO] [stdout] test rules::rust::unbounded_cache::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::python::unsafe_eval::tests::setattr_flags_direct_parameter_usage ... ok [INFO] [stdout] test rules::rust::uncancelled_tasks::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::uncancelled_tasks::tests::handles_empty_semantics ... ok [INFO] [stdout] test rules::rust::unbounded_recursion::tests::no_finding_with_visited_parameter ... ok [INFO] [stdout] test rules::rust::uncancelled_tasks::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::rust::uncancelled_tasks::tests::no_finding_for_sync_code ... ok [INFO] [stdout] test rules::rust::unbounded_recursion::tests::no_finding_with_level_parameter ... ok [INFO] [stdout] test rules::rust::unsafe_block_unaudited::tests::detects_unsafe_without_comment ... ok [INFO] [stdout] test rules::rust::unsafe_block_unaudited::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::unsafe_block_unaudited::tests::severity_for_extern_is_medium ... ok [INFO] [stdout] test rules::rust::unsafe_block_unaudited::tests::severity_for_transmute_is_critical ... ok [INFO] [stdout] test rules::rust::unsafe_block_unaudited::tests::finding_has_correct_properties ... ok [INFO] [stdout] test rules::rust::hardcoded_secrets::tests::detects_api_key_constant ... ok [INFO] [stdout] test rules::rust::unsafe_block_unaudited::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::rust::unsafe_block_unaudited::tests::skips_unsafe_with_safety_comment ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::detects_collection_get_pattern ... ok [INFO] [stdout] test rules::rust::unsafe_block_unaudited::tests::severity_for_raw_pointer_is_high ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::detects_env_var_pattern ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::detects_first_pattern ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::detects_last_pattern ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::detects_iterator_next_pattern ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::detects_lock_pattern ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::detects_parse_pattern_with_type ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::detects_unwrap_in_function ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::detects_starts_with_find_pattern ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::detects_find_pattern ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::detects_multiple_unwraps ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::detects_regex_new_pattern ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::does_not_flag_unwrap_or_else ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::finding_has_correct_properties ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::infers_option_for_find ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::infers_option_for_get ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::infers_result_for_env_var ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::infers_result_for_parse ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::returns_empty_for_non_rust ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::skips_unwrap_in_main ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::smart_title_for_lock ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::skips_unwrap_or ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::smart_title_for_strip_prefix ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::smart_title_for_env_var ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::skips_unwrap_or_default ... ok [INFO] [stdout] test rules::templates::http_timeout::tests::go_patch_for_net_http ... ok [INFO] [stdout] test rules::templates::http_timeout::tests::python_patch_for_requests ... ok [INFO] [stdout] test rules::templates::http_timeout::tests::needs_timeout_when_missing ... ok [INFO] [stdout] test rules::templates::http_timeout::tests::no_timeout_needed_when_present ... ok [INFO] [stdout] test rules::templates::http_timeout::tests::reasonable_timeout_range ... ok [INFO] [stdout] test rules::templates::http_timeout::tests::rust_patch_for_reqwest ... ok [INFO] [stdout] test rules::templates::http_timeout::tests::typescript_patch_for_axios ... ok [INFO] [stdout] test rules::templates::retry::tests::backoff_strategy_safety ... ok [INFO] [stdout] test rules::templates::retry::tests::backoff_strategy_warnings ... ok [INFO] [stdout] test rules::templates::retry::tests::default_template_values ... ok [INFO] [stdout] test rules::templates::retry::tests::python_recommendation_includes_tenacity ... ok [INFO] [stdout] test rules::templates::retry::tests::reasonable_config ... ok [INFO] [stdout] test rules::templates::structured_logging::tests::log_level_parsing ... ok [INFO] [stdout] test rules::templates::structured_logging::tests::detect_structured_logging ... ok [INFO] [stdout] test rules::templates::structured_logging::tests::log_level_needs_context ... ok [INFO] [stdout] test rules::templates::structured_logging::tests::detect_correlation_id ... ok [INFO] [stdout] test rules::templates::structured_logging::tests::recommended_library_by_language ... ok [INFO] [stdout] test rules::tests::test_rule_evaluate_empty ... ok [INFO] [stdout] test rules::tests::test_rule_trait_methods ... ok [INFO] [stdout] test rules::typescript::async_without_error_handling::tests::evaluate_detects_async_without_try_catch ... ok [INFO] [stdout] test rules::rust::unsafe_unwrap::tests::skips_unwrap_in_test ... ok [INFO] [stdout] test rules::typescript::async_without_error_handling::tests::evaluate_ignores_async_with_try_catch ... ok [INFO] [stdout] test rules::typescript::async_without_error_handling::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::typescript::bare_catch::tests::evaluate_detects_bare_catch ... ok [INFO] [stdout] test rules::typescript::bare_catch::tests::evaluate_ignores_catch_with_parameter ... ok [INFO] [stdout] test rules::typescript::bare_catch::tests::evaluate_returns_empty_for_non_typescript ... ok [INFO] [stdout] test rules::typescript::bare_catch::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::typescript::circuit_breaker::tests::test_rule_name ... ok [INFO] [stdout] test rules::typescript::bare_catch::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::typescript::circuit_breaker::tests::test_rule_id ... ok [INFO] [stdout] test rules::typescript::console_in_production::tests::evaluate_detects_console_error_in_server_code ... ok [INFO] [stdout] test rules::typescript::console_in_production::tests::evaluate_detects_console_log_in_server_code ... ok [INFO] [stdout] test rules::typescript::async_without_error_handling::tests::evaluate_ignores_non_async_functions ... ok [INFO] [stdout] test rules::typescript::console_in_production::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::typescript::console_in_production::tests::evaluate_ignores_client_side_code ... ok [INFO] [stdout] test rules::typescript::console_in_production::tests::evaluate_ignores_test_files ... ok [INFO] [stdout] test rules::typescript::console_in_production::tests::evaluate_ignores_vscode_extensions ... ok [INFO] [stdout] test rules::typescript::console_in_production::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::typescript::console_in_production::tests::evaluate_returns_empty_for_non_typescript ... ok [INFO] [stdout] test rules::typescript::cpu_in_event_loop::tests::test_async_operations_not_flagged ... ok [INFO] [stdout] test rules::typescript::cpu_in_event_loop::tests::test_brotli_compression_flagged ... ok [INFO] [stdout] test rules::typescript::cpu_in_event_loop::tests::test_compression_always_flagged ... ok [INFO] [stdout] test rules::typescript::cpu_in_event_loop::tests::test_crypto_always_flagged ... ok [INFO] [stdout] test rules::typescript::cpu_in_event_loop::tests::test_crypto_scrypt_flagged ... ok [INFO] [stdout] test rules::typescript::cpu_in_event_loop::tests::test_existssync_at_startup_not_flagged ... ok [INFO] [stdout] test rules::typescript::cpu_in_event_loop::tests::test_file_io_in_handler_flagged ... ok [INFO] [stdout] test rules::typescript::cpu_in_event_loop::tests::test_file_io_at_startup_not_flagged ... ok [INFO] [stdout] test rules::typescript::cpu_in_event_loop::tests::test_file_io_in_loop_flagged ... ok [INFO] [stdout] test rules::typescript::cpu_in_event_loop::tests::test_json_in_handler_but_not_loop_not_flagged ... ok [INFO] [stdout] test rules::typescript::cpu_in_event_loop::tests::test_json_stringify_in_loop_flagged ... ok [INFO] [stdout] test rules::typescript::cpu_in_event_loop::tests::test_json_parse_at_startup_not_flagged ... ok [INFO] [stdout] test rules::typescript::cpu_in_event_loop::tests::test_json_parse_in_loop_flagged ... ok [INFO] [stdout] test rules::typescript::cpu_in_event_loop::tests::test_json_stringify_at_startup_not_flagged ... ok [INFO] [stdout] test rules::typescript::cpu_in_event_loop::tests::test_rule_id ... ok [INFO] [stdout] test rules::typescript::cpu_in_event_loop::tests::test_unknown_operation_not_flagged ... ok [INFO] [stdout] test rules::typescript::empty_catch::tests::evaluate_returns_empty_for_non_typescript ... ok [INFO] [stdout] test rules::typescript::empty_catch::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::typescript::empty_catch::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::typescript::frameworks::express::tests::evaluate_ignores_app_with_error_middleware ... ok [INFO] [stdout] test rules::typescript::cpu_in_event_loop::tests::test_writefilesync_at_startup_not_flagged ... ok [INFO] [stdout] test rules::typescript::frameworks::express::tests::evaluate_detects_missing_error_middleware ... ok [INFO] [stdout] test rules::typescript::frameworks::express::tests::evaluate_returns_empty_for_non_express ... ok [INFO] [stdout] test rules::typescript::empty_catch::tests::evaluate_returns_empty_for_non_empty_catch ... ok [INFO] [stdout] test rules::typescript::empty_catch::tests::evaluate_detects_empty_catch ... ok [INFO] [stdout] test rules::typescript::frameworks::express::tests::evaluate_returns_empty_for_non_typescript ... ok [INFO] [stdout] test rules::typescript::frameworks::express::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::typescript::frameworks::nextjs::tests::evaluate_ignores_non_api_routes ... ok [INFO] [stdout] test rules::typescript::frameworks::nextjs::tests::evaluate_detects_missing_logging_in_api_route ... ok [INFO] [stdout] test rules::typescript::frameworks::nextjs::tests::debug_semantic_model_for_nextjs_route ... ok [INFO] [stdout] test rules::typescript::global_mutable_state::tests::evaluate_detects_array_literal ... ok [INFO] [stdout] test rules::typescript::global_mutable_state::tests::evaluate_detects_let_global_object ... ok [INFO] [stdout] test rules::typescript::frameworks::nextjs::tests::evaluate_ignores_when_logging_present ... ok [INFO] [stdout] test rules::typescript::global_mutable_state::tests::evaluate_detects_new_map ... ok [INFO] [stdout] test rules::typescript::global_mutable_state::tests::evaluate_detects_object_literal ... ok [INFO] [stdout] test rules::typescript::global_mutable_state::tests::evaluate_detects_var_global ... ok [INFO] [stdout] test rules::typescript::global_mutable_state::tests::evaluate_ignores_boolean_literal ... ok [INFO] [stdout] test rules::typescript::global_mutable_state::tests::evaluate_ignores_const ... ok [INFO] [stdout] test rules::typescript::global_mutable_state::tests::evaluate_ignores_string_literal ... ok [INFO] [stdout] test rules::typescript::global_mutable_state::tests::evaluate_ignores_true_literal ... ok [INFO] [stdout] test rules::typescript::global_mutable_state::tests::evaluate_ignores_local_let ... ok [INFO] [stdout] test rules::typescript::global_mutable_state::tests::evaluate_ignores_number_literal ... ok [INFO] [stdout] test rules::typescript::global_mutable_state::tests::is_primitive_literal_not_objects ... ok [INFO] [stdout] test rules::typescript::global_mutable_state::tests::is_primitive_literal_numbers ... ok [INFO] [stdout] test rules::typescript::global_mutable_state::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::typescript::global_mutable_state::tests::evaluate_returns_empty_for_non_typescript ... ok [INFO] [stdout] test rules::typescript::global_mutable_state::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::typescript::global_mutable_state::tests::is_primitive_literal_booleans ... ok [INFO] [stdout] test rules::typescript::halstead_complexity::tests::finding_has_correct_dimension ... ok [INFO] [stdout] test rules::typescript::halstead_complexity::tests::finding_has_correct_tags ... ok [INFO] [stdout] test rules::typescript::halstead_complexity::tests::halstead_metrics_compute_basic ... ok [INFO] [stdout] test rules::typescript::halstead_complexity::tests::halstead_metrics_difficulty_formula ... ok [INFO] [stdout] test rules::typescript::halstead_complexity::tests::halstead_metrics_volume_formula ... ok [INFO] [stdout] test rules::typescript::global_mutable_state::tests::is_primitive_literal_strings ... ok [INFO] [stdout] test rules::typescript::halstead_complexity::tests::is_test_file_allows_regular_files ... ok [INFO] [stdout] test rules::typescript::halstead_complexity::tests::is_test_file_detects_test_patterns ... ok [INFO] [stdout] test rules::typescript::halstead_complexity::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::typescript::halstead_complexity::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::typescript::halstead_complexity::tests::rule_implements_default ... ok [INFO] [stdout] test rules::typescript::halstead_complexity::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::typescript::halstead_complexity::tests::rule_returns_empty_for_empty_semantics ... ok [INFO] [stdout] test rules::typescript::halstead_complexity::tests::severity_high_for_very_complex ... ok [INFO] [stdout] test rules::typescript::halstead_complexity::tests::compute_halstead_from_ast_counts_operators ... ok [INFO] [stdout] test rules::typescript::graceful_shutdown::tests::test_rule_id ... ok [INFO] [stdout] test rules::typescript::grpc_no_deadline::tests::test_rule_id ... ok [INFO] [stdout] test rules::typescript::hardcoded_secrets::tests::evaluate_ignores_test_files ... ok [INFO] [stdout] test rules::typescript::halstead_complexity::tests::severity_none_for_simple_functions ... ok [INFO] [stdout] test rules::typescript::hardcoded_secrets::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::typescript::hardcoded_secrets::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::typescript::frameworks::nextjs::tests::evaluate_detects_real_nextjs_api_route_pattern ... ok [INFO] [stdout] test rules::typescript::hardcoded_secrets::tests::evaluate_ignores_env_var_usage ... ok [INFO] [stdout] test rules::typescript::hardcoded_secrets::tests::evaluate_detects_hardcoded_password ... ok [INFO] [stdout] test rules::typescript::hardcoded_secrets::tests::evaluate_returns_empty_for_non_typescript ... ok [INFO] [stdout] test rules::typescript::hardcoded_secrets::tests::secret_detection_patterns ... ok [INFO] [stdout] test rules::typescript::hardcoded_secrets::tests::secret_value_detection ... ok [INFO] [stdout] test rules::typescript::http_missing_timeout::tests::evaluate_detects_axios_without_timeout_in_server_code ... ok [INFO] [stdout] test rules::typescript::http_missing_timeout::tests::evaluate_detects_fetch_without_timeout_in_server_code ... ok [INFO] [stdout] test rules::typescript::http_missing_timeout::tests::evaluate_detects_with_nestjs_import ... ok [INFO] [stdout] test rules::typescript::http_missing_timeout::tests::evaluate_detects_with_node_prefix_import ... ok [INFO] [stdout] test rules::typescript::http_missing_timeout::tests::evaluate_ignores_axios_with_timeout_in_server_code ... ok [INFO] [stdout] test rules::typescript::http_missing_timeout::tests::evaluate_ignores_fetch_in_client_side_code ... ok [INFO] [stdout] test rules::typescript::http_missing_timeout::tests::evaluate_ignores_fetch_with_signal_in_server_code ... ok [INFO] [stdout] test rules::typescript::http_missing_timeout::tests::evaluate_returns_empty_for_non_typescript ... ok [INFO] [stdout] test rules::typescript::http_missing_timeout::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::typescript::http_missing_timeout::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::typescript::http_retry::tests::test_rule_id ... ok [INFO] [stdout] test rules::typescript::idempotency_key::tests::test_rule_id ... ok [INFO] [stdout] test rules::typescript::large_response_memory::tests::test_rule_id ... ok [INFO] [stdout] test rules::typescript::missing_correlation_id::tests::test_rule_id ... ok [INFO] [stdout] test rules::typescript::missing_null_check::tests::evaluate_returns_empty_for_non_typescript ... ok [INFO] [stdout] test rules::typescript::missing_null_check::tests::evaluate_ignores_optional_with_default ... ok [INFO] [stdout] test rules::typescript::missing_null_check::tests::evaluate_ignores_required_parameters ... ok [INFO] [stdout] test rules::typescript::missing_structured_logging::tests::evaluate_detects_console_in_server_code ... ok [INFO] [stdout] test rules::typescript::missing_structured_logging::tests::test_rule_id ... ok [INFO] [stdout] test rules::typescript::missing_structured_logging::tests::evaluate_ignores_when_logger_imported ... ok [INFO] [stdout] test rules::typescript::missing_null_check::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::typescript::n_plus_one_queries::tests::test_rule_id ... ok [INFO] [stdout] test rules::typescript::naive_datetime::tests::test_rule_id ... ok [INFO] [stdout] test rules::typescript::missing_structured_logging::tests::evaluate_ignores_client_side_code ... ok [INFO] [stdout] test rules::typescript::promise_no_catch::tests::evaluate_detects_axios_calls ... ok [INFO] [stdout] test rules::typescript::promise_no_catch::tests::evaluate_detects_fire_and_forget_fetch ... ok [INFO] [stdout] test rules::typescript::promise_no_catch::tests::evaluate_ignores_awaited_calls ... ok [INFO] [stdout] test rules::typescript::promise_no_catch::tests::evaluate_detects_model_save ... ok [INFO] [stdout] test rules::typescript::promise_no_catch::tests::evaluate_ignores_config_get_methods ... ok [INFO] [stdout] test rules::typescript::promise_no_catch::tests::evaluate_ignores_sync_array_methods ... ok [INFO] [stdout] test rules::typescript::promise_no_catch::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::typescript::promise_no_catch::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::typescript::promise_no_catch::tests::evaluate_returns_empty_for_non_typescript ... ok [INFO] [stdout] test rules::typescript::promise_no_catch::tests::evaluate_ignores_sync_vscode_apis ... ok [INFO] [stdout] test rules::typescript::rate_limiting::tests::test_rule_id ... ok [INFO] [stdout] test rules::typescript::race_condition::tests::test_rule_id ... ok [INFO] [stdout] test rules::typescript::regex_compile::tests::extract_regexp_args_handles_empty ... ok [INFO] [stdout] test rules::typescript::regex_compile::tests::extract_regexp_args_handles_two_args ... ok [INFO] [stdout] test rules::typescript::regex_compile::tests::detects_new_regexp_in_function ... ok [INFO] [stdout] test rules::typescript::regex_compile::tests::extract_regexp_args_handles_single_arg ... ok [INFO] [stdout] test rules::typescript::regex_compile::tests::finding_has_correct_properties ... ok [INFO] [stdout] test rules::typescript::regex_compile::tests::handles_empty_file ... ok [INFO] [stdout] test rules::typescript::promise_no_catch::tests::evaluate_ignores_console_and_settimeout ... ok [INFO] [stdout] test rules::typescript::regex_compile::tests::handles_empty_semantics ... ok [INFO] [stdout] test rules::typescript::regex_compile::tests::is_regexp_constructor_call_works ... ok [INFO] [stdout] test rules::typescript::regex_compile::tests::no_finding_for_module_level_regexp ... ok [INFO] [stdout] test rules::typescript::regex_compile::tests::pattern_to_literal_simple ... ok [INFO] [stdout] test rules::typescript::regex_compile::tests::no_finding_for_regex_literal ... ok [INFO] [stdout] test rules::typescript::regex_compile::tests::pattern_to_literal_with_slash ... ok [INFO] [stdout] test rules::typescript::regex_compile::tests::pattern_to_literal_with_flags ... ok [INFO] [stdout] test rules::typescript::regex_compile::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::typescript::regex_compile::tests::rule_implements_debug ... ok [INFO] [stdout] test rules::typescript::regex_compile::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::typescript::regex_compile::tests::suggest_constant_name_uses_function_name ... ok [INFO] [stdout] test rules::typescript::sql_injection::tests::test_rule_name ... ok [INFO] [stdout] test rules::typescript::regex_compile::tests::to_screaming_snake_case_works ... ok [INFO] [stdout] test rules::typescript::sql_injection::tests::test_rule_id ... ok [INFO] [stdout] test rules::typescript::sync_dns_lookup::tests::test_rule_id ... ok [INFO] [stdout] test rules::typescript::transaction_boundary::tests::test_rule_id ... ok [INFO] [stdout] test rules::typescript::unbounded_cache::tests::test_rule_id ... ok [INFO] [stdout] test rules::typescript::unbounded_cache::tests::test_no_finding_when_clear_present ... ok [INFO] [stdout] test rules::typescript::unbounded_cache::tests::test_detects_unbounded_map ... ok [INFO] [stdout] test rules::typescript::regex_compile::tests::rule_implements_default ... ok [INFO] [stdout] test rules::typescript::unbounded_cache::tests::test_no_finding_when_cleanup_present ... ok [INFO] [stdout] test rules::typescript::unbounded_concurrency::tests::evaluate_returns_empty_for_non_typescript ... ok [INFO] [stdout] test rules::typescript::unbounded_concurrency::tests::rule_id_is_correct ... ok [INFO] [stdout] test rules::typescript::unbounded_memory::tests::test_rule_id ... ok [INFO] [stdout] test rules::typescript::unbounded_concurrency::tests::rule_name_is_correct ... ok [INFO] [stdout] test rules::typescript::unbounded_concurrency::tests::evaluate_detects_promise_all_with_map ... ok [INFO] [stdout] test rules::typescript::unbounded_memory::tests::test_suppression_marker_constant ... ok [INFO] [stdout] test rules::typescript::unbounded_retry::tests::test_rule_id ... ok [INFO] [stdout] test rules::typescript::unbounded_concurrency::tests::evaluate_ignores_promise_all_without_map ... ok [INFO] [stdout] test rules::typescript::unsafe_any::tests::evaluate_ignores_unknown_type ... ok [INFO] [stdout] test rules::typescript::unsafe_any::tests::evaluate_ignores_typed_code ... ok [INFO] [stdout] test rules::typescript::unsafe_any::tests::evaluate_returns_empty_for_non_typescript ... ok [INFO] [stdout] test rules::typescript::unbounded_concurrency::tests::evaluate_ignores_with_limit ... ok [INFO] [stdout] test rules::typescript::unsafe_any::tests::rule_id_is_correct ... ok [INFO] [stdout] test semantics::common::async_ops::tests::async_operation_type_can_hang ... ok [INFO] [stdout] test rules::typescript::unsafe_eval::tests::test_rule_id ... ok [INFO] [stdout] test semantics::common::async_ops::tests::async_operation_needs_error_handling ... ok [INFO] [stdout] test rules::typescript::missing_tracing::tests::test_rule_id ... ok [INFO] [stdout] test semantics::common::async_ops::tests::concurrency_pattern_potentially_dangerous ... ok [INFO] [stdout] test semantics::common::db::tests::connection_pool_config_complete ... ok [INFO] [stdout] test semantics::common::db::tests::connection_pool_config_missing ... ok [INFO] [stdout] test semantics::common::async_ops::tests::async_operation_with_error_handling ... ok [INFO] [stdout] test semantics::common::async_ops::tests::async_runtime_timeout_function ... ok [INFO] [stdout] test semantics::common::db::tests::db_library_is_orm ... ok [INFO] [stdout] test semantics::common::db::tests::db_operation_is_potential_n_plus_one ... ok [INFO] [stdout] test semantics::common::db::tests::db_operation_with_eager_loading_not_n_plus_one ... ok [INFO] [stdout] test semantics::common::frameworks::tests::detect_fastapi ... ok [INFO] [stdout] test semantics::common::frameworks::tests::detect_multiple_frameworks ... ok [INFO] [stdout] test semantics::common::frameworks::tests::framework_category_filtering ... ok [INFO] [stdout] test semantics::common::frameworks::tests::detect_primary_framework ... ok [INFO] [stdout] test semantics::common::frameworks::tests::detect_rust_frameworks ... ok [INFO] [stdout] test semantics::common::functions::tests::function_decorator_matching ... ok [INFO] [stdout] test semantics::common::functions::tests::function_is_fully_typed ... ok [INFO] [stdout] test semantics::common::frameworks::tests::detect_typescript_frameworks ... ok [INFO] [stdout] test semantics::common::functions::tests::function_is_constructor ... ok [INFO] [stdout] test semantics::common::functions::tests::function_is_test ... ok [INFO] [stdout] test semantics::common::functions::tests::function_param_builder ... ok [INFO] [stdout] test semantics::common::functions::tests::function_required_param_count ... ok [INFO] [stdout] test semantics::common::http::tests::http_call_builder_creates_call ... ok [INFO] [stdout] test semantics::common::http::tests::http_call_builder_with_timeout ... ok [INFO] [stdout] test semantics::common::http::tests::http_call_suggested_timeout ... ok [INFO] [stdout] test semantics::common::http::tests::http_method_is_mutating ... ok [INFO] [stdout] test semantics::common::http::tests::http_client_library_as_str ... ok [INFO] [stdout] test semantics::common::imports::tests::import_imports_item ... ok [INFO] [stdout] test semantics::common::imports::tests::import_matches_module ... ok [INFO] [stdout] test semantics::common::imports::tests::imported_item_local_name ... ok [INFO] [stdout] test semantics::common::imports::tests::known_library_detection_go ... ok [INFO] [stdout] test semantics::common::async_ops::tests::async_operation_type_creates_concurrent_work ... ok [INFO] [stdout] test semantics::common::imports::tests::known_library_detection_typescript ... ok [INFO] [stdout] test semantics::common::tests::common_location_from_ast_location ... ok [INFO] [stdout] test semantics::common::imports::tests::library_category_checks ... ok [INFO] [stdout] test semantics::common::imports::tests::known_library_detection_rust ... ok [INFO] [stdout] test semantics::common::imports::tests::known_library_detection_python ... ok [INFO] [stdout] test semantics::common_impl::tests::python_file_metadata_via_common_trait ... ok [INFO] [stdout] test semantics::go::http::tests::captures_function_name ... ok [INFO] [stdout] test semantics::go::http::tests::detects_http_post ... ok [INFO] [stdout] test semantics::go::http::tests::handles_empty_file ... ok [INFO] [stdout] test semantics::common_impl::tests::python_functions_via_common_trait ... ok [INFO] [stdout] test semantics::go::http::tests::detects_http_get ... ok [INFO] [stdout] test semantics::go::model::tests::call_site_tracks_enclosing_function ... ok [INFO] [stdout] test semantics::go::model::tests::call_site_detects_import_call ... ok [INFO] [stdout] test semantics::go::http::tests::ignores_non_http_calls ... ok [INFO] [stdout] test semantics::go::model::tests::call_site_handles_non_import_call ... ok [INFO] [stdout] test semantics::go::model::tests::call_site_detects_aliased_import_call ... ok [INFO] [stdout] test semantics::go::model::tests::collects_function ... ok [INFO] [stdout] test semantics::go::model::tests::call_site_tracks_qualified_name_in_method ... ok [INFO] [stdout] test semantics::go::model::tests::collects_defer ... ok [INFO] [stdout] test semantics::go::model::tests::collects_aliased_import ... ok [INFO] [stdout] test semantics::go::model::tests::collects_const_declaration ... ok [INFO] [stdout] test semantics::go::model::tests::collects_package_name ... ok [INFO] [stdout] test semantics::go::model::tests::collects_grouped_imports ... ok [INFO] [stdout] test semantics::go::model::tests::collects_function_returning_error ... ok [INFO] [stdout] test semantics::go::model::tests::collects_method ... ok [INFO] [stdout] test semantics::go::model::tests::collects_var_declaration ... ok [INFO] [stdout] test semantics::go::model::tests::collects_struct_type ... ok [INFO] [stdout] test semantics::go::model::tests::collects_goroutine ... ok [INFO] [stdout] test semantics::go::model::tests::collects_simple_import ... ok [INFO] [stdout] test semantics::go::tests::build_go_semantics_populates_basic_structure ... ok [INFO] [stdout] test semantics::go::tests::build_go_semantics_populates_http_calls ... ok [INFO] [stdout] test semantics::go::tests::build_go_semantics_returns_ok_for_valid_go ... ok [INFO] [stdout] test semantics::go::tests::full_semantics_for_empty_file ... ok [INFO] [stdout] test semantics::go::tests::full_semantics_for_error_handling ... ok [INFO] [stdout] test semantics::common_impl::tests::python_imports_via_common_trait ... ok [INFO] [stdout] test semantics::go::tests::full_semantics_for_complete_http_server ... ok [INFO] [stdout] test semantics::go::tests::full_semantics_for_api_handler ... ok [INFO] [stdout] test semantics::go::tests::full_semantics_for_context_usage ... ok [INFO] [stdout] test semantics::go::tests::semantics_preserves_file_metadata ... ok [INFO] [stdout] test semantics::python::fastapi::tests::decorator_location_is_decorator_only ... ok [INFO] [stdout] test semantics::python::fastapi::tests::detects_cors_middleware ... ok [INFO] [stdout] test semantics::python::fastapi::tests::detects_cors_middleware_with_full_config ... ok [INFO] [stdout] test semantics::python::fastapi::tests::detects_all_http_methods ... ok [INFO] [stdout] test semantics::python::fastapi::tests::detects_cors_on_different_app_variable ... ok [INFO] [stdout] test semantics::python::fastapi::tests::detects_exception_handler_with_module_path ... ok [INFO] [stdout] test semantics::python::fastapi::tests::detects_fastapi_app_with_arguments ... ok [INFO] [stdout] test semantics::python::fastapi::tests::detects_fastapi_app_with_different_name ... ok [INFO] [stdout] test semantics::go::tests::full_semantics_for_goroutines ... ok [INFO] [stdout] test semantics::python::fastapi::tests::detects_include_router_with_module_path ... ok [INFO] [stdout] test semantics::python::fastapi::tests::detects_generic_exception_handler ... ok [INFO] [stdout] test semantics::python::fastapi::tests::detects_exception_handler_on_different_app ... ok [INFO] [stdout] test semantics::python::fastapi::tests::detects_multiple_fastapi_apps ... ok [INFO] [stdout] test semantics::python::fastapi::tests::detects_include_router_call ... ok [INFO] [stdout] test semantics::python::fastapi::tests::detects_include_router_with_prefix ... ok [INFO] [stdout] test semantics::python::fastapi::tests::detects_multiple_include_router_calls ... ok [INFO] [stdout] test semantics::python::fastapi::tests::detects_router_routes ... ok [INFO] [stdout] test semantics::python::fastapi::tests::detects_multiple_routes ... ok [INFO] [stdout] test semantics::python::fastapi::tests::detects_simple_fastapi_app ... ok [INFO] [stdout] test semantics::python::fastapi::tests::app_has_correct_location ... ok [INFO] [stdout] test semantics::python::fastapi::tests::detects_multiple_exception_handlers ... ok [INFO] [stdout] test semantics::python::fastapi::tests::detects_simple_route ... ok [INFO] [stdout] test semantics::python::fastapi::tests::detects_simple_exception_handler ... ok [INFO] [stdout] test semantics::python::fastapi::tests::detects_route_with_try_except ... ok [INFO] [stdout] test semantics::python::fastapi::tests::detects_sync_route ... ok [INFO] [stdout] test semantics::python::fastapi::tests::does_not_confuse_fastapi_variable_name ... ok [INFO] [stdout] test semantics::python::fastapi::tests::does_not_detect_flask_app ... ok [INFO] [stdout] test semantics::python::fastapi::tests::does_not_detect_django_app ... ok [INFO] [stdout] test semantics::python::fastapi::tests::extracts_handler_params_for_async_route ... ok [INFO] [stdout] test semantics::python::fastapi::tests::extracts_handler_params_without_type_annotation ... ok [INFO] [stdout] test semantics::python::fastapi::tests::extracts_handler_params_with_default_values ... ok [INFO] [stdout] test semantics::python::fastapi::tests::extracts_handler_params_with_type_annotation ... ok [INFO] [stdout] test semantics::python::fastapi::tests::handles_empty_file ... ok [INFO] [stdout] test semantics::python::fastapi::tests::extracts_handler_params_with_multiple_params ... ok [INFO] [stdout] test semantics::python::fastapi::tests::handles_file_with_only_imports ... ok [INFO] [stdout] test semantics::python::fastapi::tests::handles_factory_pattern ... ok [INFO] [stdout] test semantics::python::fastapi::tests::handles_file_with_only_comments ... ok [INFO] [stdout] test semantics::python::fastapi::tests::handles_complex_assignment_lhs ... ok [INFO] [stdout] test semantics::python::fastapi::tests::handles_complete_fastapi_setup ... ok [INFO] [stdout] test semantics::python::fastapi::tests::handles_include_router_without_arguments ... ok [INFO] [stdout] test semantics::python::fastapi::tests::handles_split_cors_setup ... ok [INFO] [stdout] test semantics::python::fastapi::tests::exception_handler_only_file_returns_summary ... ok [INFO] [stdout] test semantics::python::fastapi::tests::ignores_fastapi_without_assignment ... ok [INFO] [stdout] test semantics::python::fastapi::tests::ignores_fastapi_in_function ... ok [INFO] [stdout] test semantics::python::fastapi::tests::ignores_non_cors_middleware ... ok [INFO] [stdout] test semantics::python::fastapi::tests::ignores_non_fastapi_assignments ... ok [INFO] [stdout] test semantics::python::fastapi::tests::middleware_has_correct_location ... ok [INFO] [stdout] test semantics::python::fastapi::tests::router_has_correct_location ... ok [INFO] [stdout] test semantics::python::fastapi::tests::sync_exception_handler_detected ... ok [INFO] [stdout] test semantics::python::http::tests::byte_range_is_correct_with_leading_content ... ok [INFO] [stdout] test semantics::python::http::tests::captures_byte_range ... ok [INFO] [stdout] test semantics::python::http::tests::captures_delete_method ... ok [INFO] [stdout] test semantics::python::http::tests::captures_correct_line_number ... ok [INFO] [stdout] test semantics::python::http::tests::captures_enclosing_async_function ... ok [INFO] [stdout] test semantics::python::http::tests::captures_enclosing_function_name ... ok [INFO] [stdout] test semantics::python::http::tests::captures_get_method ... ok [INFO] [stdout] test semantics::python::http::tests::captures_head_method ... ok [INFO] [stdout] test semantics::python::http::tests::captures_full_call_text ... ok [INFO] [stdout] test semantics::python::http::tests::captures_multiline_call_text ... ok [INFO] [stdout] test semantics::python::http::tests::captures_options_method ... ok [INFO] [stdout] test semantics::python::http::tests::captures_patch_method ... ok [INFO] [stdout] test semantics::python::http::tests::collects_calls_from_different_functions ... ok [INFO] [stdout] test semantics::python::http::tests::detects_asyncio_to_thread_wrapper ... ok [INFO] [stdout] test semantics::python::fastapi::tests::router_expr_contains_full_arguments ... ok [INFO] [stdout] test semantics::python::http::tests::detects_httpx_library ... ok [INFO] [stdout] test semantics::python::http::tests::detects_missing_timeout ... ok [INFO] [stdout] test semantics::python::http::tests::detects_requests_library ... ok [INFO] [stdout] test semantics::python::http::tests::detects_missing_timeout_with_other_kwargs ... ok [INFO] [stdout] test semantics::python::http::tests::collects_multiple_http_calls ... ok [INFO] [stdout] test semantics::python::http::tests::captures_post_method ... ok [INFO] [stdout] test semantics::python::http::tests::detects_sync_function_context ... ok [INFO] [stdout] test semantics::python::http::tests::captures_put_method ... ok [INFO] [stdout] test semantics::python::http::tests::detects_timeout_keyword_argument ... ok [INFO] [stdout] test semantics::python::http::tests::detects_run_in_executor_wrapper ... ok [INFO] [stdout] test semantics::python::http::tests::detects_timeout_with_float_value ... ok [INFO] [stdout] test semantics::python::http::tests::detects_timeout_with_tuple_value ... ok [INFO] [stdout] test semantics::python::http::tests::detects_timeout_with_none_value ... ok [INFO] [stdout] test semantics::python::http::tests::handles_class_methods ... ok [INFO] [stdout] test semantics::python::http::tests::handles_call_with_empty_parentheses ... ok [INFO] [stdout] test semantics::python::http::tests::handles_async_class_methods ... ok [INFO] [stdout] test semantics::python::http::tests::handles_call_without_arguments_node ... ok [INFO] [stdout] test semantics::python::http::tests::handles_empty_file ... ok [INFO] [stdout] test semantics::python::http::tests::handles_file_with_only_imports ... ok [INFO] [stdout] test semantics::python::http::tests::ignores_non_attribute_calls ... ok [INFO] [stdout] test semantics::python::http::tests::ignores_requests_on_different_object ... ok [INFO] [stdout] test semantics::python::http::tests::ignores_non_http_calls ... ok [INFO] [stdout] test semantics::python::http::tests::ignores_unknown_http_libraries ... ok [INFO] [stdout] test semantics::python::http::tests::handles_real_world_api_client ... ok [INFO] [stdout] test semantics::python::http::tests::handles_httpx_async_client ... ok [INFO] [stdout] test semantics::python::http::tests::handles_nested_function_calls ... ok [INFO] [stdout] test semantics::python::http::tests::module_level_call_has_no_function_name ... ok [INFO] [stdout] test semantics::python::http::tests::regular_async_call_is_not_thread_offloaded ... ok [INFO] [stdout] test rules::rust::sql_injection::tests::skips_format_with_documentation_markers ... ok [INFO] [stdout] test semantics::python::http::tests::module_level_call_is_not_async ... ok [INFO] [stdout] test rules::rust::sql_injection::tests::still_detects_actual_sql_injection ... ok [INFO] [stdout] test semantics::python::http::tests::mixed_timeout_scenarios ... ok [INFO] [stdout] test rules::rust::sql_injection::tests::contains_sql_detects_keywords ... ok [INFO] [stdout] test rules::rust::sql_injection::tests::detects_format_with_select ... ok [INFO] [stdout] test rules::rust::sql_injection::tests::skips_format_with_parameterized_examples ... ok [INFO] [stdout] test semantics::python::model::tests::collects_annotated_assignment ... ok [INFO] [stdout] test semantics::python::model::tests::call_site_tracks_qualified_name_in_class ... ok [INFO] [stdout] test rules::rust::sql_injection::tests::finding_has_critical_severity ... ok [INFO] [stdout] test rules::rust::sql_injection::tests::contains_sql_detects_real_sql_update ... ok [INFO] [stdout] test semantics::python::model::tests::call_site_detects_direct_import_call ... ok [INFO] [stdout] test semantics::python::model::tests::call_site_handles_non_import_call ... ok [INFO] [stdout] test semantics::python::model::tests::call_site_detects_import_call ... ok [INFO] [stdout] test semantics::python::http::tests::sync_function_call_is_not_thread_offloaded ... ok [INFO] [stdout] test rules::rust::sql_injection::tests::skips_format_without_sql ... ok [INFO] [stdout] test rules::rust::sql_injection::tests::contains_sql_skips_non_sql ... ok [INFO] [stdout] test semantics::python::model::tests::call_site_tracks_enclosing_function ... ok [INFO] [stdout] test rules::rust::sql_injection::tests::contains_sql_skips_english_update ... ok [INFO] [stdout] test semantics::python::model::tests::collects_annotated_dict_assignment ... ok [INFO] [stdout] test semantics::python::model::tests::collects_assignment_with_function_call ... ok [INFO] [stdout] test semantics::python::model::tests::collects_assignment_with_string_value ... ok [INFO] [stdout] test semantics::python::model::tests::collects_simple_assignment ... ok [INFO] [stdout] test semantics::python::model::tests::collects_multiple_import_statements ... ok [INFO] [stdout] test semantics::python::model::tests::collects_async_function ... ok [INFO] [stdout] test semantics::python::model::tests::collects_simple_function ... ok [INFO] [stdout] test semantics::python::model::tests::collects_call_with_arguments ... ok [INFO] [stdout] test semantics::python::model::tests::collects_simple_function_call ... ok [INFO] [stdout] test semantics::python::model::tests::collects_chained_method_calls ... ok [INFO] [stdout] test semantics::python::model::tests::collects_from_import_multiple_names ... ok [INFO] [stdout] test semantics::python::model::tests::collects_from_import_single_name ... ok [INFO] [stdout] test semantics::python::model::tests::collects_multiple_assignments ... ok [INFO] [stdout] test semantics::python::model::tests::collects_multiple_functions ... ok [INFO] [stdout] test semantics::python::model::tests::collects_nested_calls ... ok [INFO] [stdout] test semantics::python::model::tests::collects_import_with_alias ... ok [INFO] [stdout] test semantics::python::model::tests::collects_from_import_with_dotted_module ... ok [INFO] [stdout] test semantics::python::model::tests::collects_method_call ... ok [INFO] [stdout] test semantics::python::model::tests::collects_regular_assignment_without_annotation ... ok [INFO] [stdout] test semantics::python::model::tests::detects_module_docstring_end_line ... ok [INFO] [stdout] test semantics::python::model::tests::collects_multiline_annotated_dict ... ok [INFO] [stdout] test semantics::python::model::tests::collects_simple_import_statement ... ok [INFO] [stdout] test semantics::python::model::tests::does_not_confuse_dict_colon_with_annotation ... ok [INFO] [stdout] test semantics::python::model::tests::extracts_none_return_type ... ok [INFO] [stdout] test semantics::python::model::tests::extracts_return_type_annotation ... ok [INFO] [stdout] test semantics::python::model::tests::extracts_type_annotation_from_typed_parameter ... ok [INFO] [stdout] test semantics::python::model::tests::handles_assignment_without_equals ... ok [INFO] [stdout] test semantics::python::model::tests::function_async_detection_is_correct ... ok [INFO] [stdout] test semantics::python::model::tests::from_parsed_initializes_empty_collections_for_non_python ... ok [INFO] [stdout] test semantics::python::model::tests::handles_assignment_with_empty_right_side ... ok [INFO] [stdout] test semantics::python::model::tests::handles_assignment_with_empty_left_side ... ok [INFO] [stdout] test semantics::python::model::tests::extracts_type_annotation_from_multiple_params ... ok [INFO] [stdout] test semantics::python::model::tests::from_parsed_sets_file_metadata ... ok [INFO] [stdout] test semantics::python::model::tests::handles_augmented_assignment ... ok [INFO] [stdout] test semantics::python::model::tests::handles_empty_file ... ok [INFO] [stdout] test semantics::python::model::tests::handles_attribute_assignment ... ok [INFO] [stdout] test semantics::python::model::tests::handles_decorated_function ... ok [INFO] [stdout] test semantics::python::model::tests::handles_class_with_methods ... ok [INFO] [stdout] test semantics::python::model::tests::fastapi_is_none_before_analyze_frameworks ... ok [INFO] [stdout] test semantics::python::model::tests::distinguishes_module_level_from_function_level_assignments ... ok [INFO] [stdout] test semantics::python::model::tests::handles_complete_fastapi_file ... ok [INFO] [stdout] test semantics::python::model::tests::extracts_complex_return_type_annotation ... ok [INFO] [stdout] test semantics::python::model::tests::handles_file_with_only_comments ... ok [INFO] [stdout] test semantics::python::model::tests::function_has_correct_location ... ok [INFO] [stdout] test semantics::python::model::tests::handles_lambda_expressions ... ok [INFO] [stdout] test semantics::python::model::tests::handles_malformed_import_gracefully ... ok [INFO] [stdout] test semantics::python::model::tests::handles_multiline_import ... ok [INFO] [stdout] test semantics::python::model::tests::has_orm_imports_false_for_empty_file ... ok [INFO] [stdout] test semantics::python::model::tests::handles_tuple_unpacking_assignment ... ok [INFO] [stdout] test semantics::python::model::tests::has_orm_imports_case_insensitive ... ok [INFO] [stdout] test semantics::python::model::tests::has_orm_imports_true_for_peewee ... ok [INFO] [stdout] test semantics::python::model::tests::handles_nested_function_definitions ... ok [INFO] [stdout] test semantics::python::model::tests::has_orm_imports_true_for_tortoise ... ok [INFO] [stdout] test semantics::python::model::tests::http_calls_is_empty_before_analyze_frameworks ... ok [INFO] [stdout] test semantics::python::model::tests::has_orm_imports_true_for_sqlalchemy ... ok [INFO] [stdout] test semantics::python::model::tests::handles_import_with_no_module_or_names ... ok [INFO] [stdout] test semantics::python::model::tests::has_orm_imports_false_for_non_orm ... ok [INFO] [stdout] test semantics::python::model::tests::import_has_correct_location ... ok [INFO] [stdout] test semantics::python::model::tests::has_orm_imports_true_for_django ... ok [INFO] [stdout] test semantics::python::model::tests::ignores_complex_lhs_assignments ... ok [INFO] [stdout] test semantics::python::model::tests::has_orm_imports_true_for_sqlmodel ... ok [INFO] [stdout] test semantics::python::model::tests::import_insertion_line_after_docstring_and_imports ... ok [INFO] [stdout] test semantics::python::model::tests::import_insertion_line_after_multiline_docstring ... ok [INFO] [stdout] test semantics::python::model::tests::import_insertion_line_after_existing_imports ... ok [INFO] [stdout] test semantics::python::model::tests::import_insertion_line_combined_docstring_and_multiline_import ... ok [INFO] [stdout] test semantics::python::model::tests::import_insertion_line_returns_1_for_empty_file ... ok [INFO] [stdout] test semantics::python::model::tests::import_insertion_line_handles_multiline_import ... ok [INFO] [stdout] test semantics::python::model::tests::handles_list_unpacking_assignment ... ok [INFO] [stdout] test semantics::python::model::tests::handles_multiple_assignment_targets ... ok [INFO] [stdout] test semantics::python::model::tests::handles_subscript_assignment ... ok [INFO] [stdout] test semantics::python::model::tests::import_insertion_line_returns_1_for_file_without_docstring_or_imports ... ok [INFO] [stdout] test semantics::python::model::tests::import_insertion_line_after_single_line_docstring ... ok [INFO] [stdout] test semantics::python::model::tests::return_type_is_none_when_not_annotated ... ok [INFO] [stdout] test semantics::python::orm::tests::orm_kind_as_str_returns_correct_values ... ok [INFO] [stdout] test semantics::python::orm::tests::detects_eager_loading_sqlalchemy ... ok [INFO] [stdout] test semantics::python::orm::tests::detects_django_query_in_loop ... ok [INFO] [stdout] test semantics::python::model::tests::marks_lambda_assignment_as_module_level ... ok [INFO] [stdout] test semantics::python::orm::tests::detect_n_plus_one_patterns_finds_loop_queries ... ok [INFO] [stdout] test semantics::python::orm::tests::no_false_positive_for_non_orm_code ... ok [INFO] [stdout] test semantics::python::model::tests::marks_assignments_inside_functions_as_not_module_level ... ok [INFO] [stdout] test semantics::python::model::tests::module_docstring_end_line_is_none_when_absent ... ok [INFO] [stdout] test semantics::python::model::tests::marks_assignments_inside_async_functions_as_not_module_level ... ok [INFO] [stdout] test semantics::python::model::tests::marks_assignments_inside_methods_as_not_module_level ... ok [INFO] [stdout] test semantics::python::orm::tests::detects_django_select_related ... ok [INFO] [stdout] test semantics::python::model::tests::py_range_from_ts_range_converts_correctly ... ok [INFO] [stdout] test semantics::python::orm::tests::detects_query_in_comprehension ... ok [INFO] [stdout] test semantics::python::orm::tests::detects_sqlalchemy_query_in_loop ... ok [INFO] [stdout] test semantics::python::tests::build_python_semantics_returns_ok_for_valid_python ... ok [INFO] [stdout] test semantics::python::tests::build_python_semantics_runs_framework_analysis ... ok [INFO] [stdout] test semantics::python::tests::build_python_semantics_populates_http_calls ... ok [INFO] [stdout] test semantics::python::tests::full_semantics_for_empty_file ... ok [INFO] [stdout] test semantics::rust::model::tests::spawn_type_equality ... ok [INFO] [stdout] test semantics::python::tests::build_python_semantics_populates_basic_structure ... ok [INFO] [stdout] test semantics::python::tests::full_semantics_for_fastapi_with_cors ... ok [INFO] [stdout] test semantics::python::tests::full_semantics_for_non_framework_code ... ok [INFO] [stdout] test semantics::python::tests::semantics_preserves_file_metadata ... ok [INFO] [stdout] test semantics::rust::model::tests::async_info_default ... ok [INFO] [stdout] test semantics::rust::model::tests::call_site_detects_use_call ... ok [INFO] [stdout] test semantics::rust::model::tests::call_site_tracks_enclosing_function ... ok [INFO] [stdout] test semantics::rust::model::tests::channel_type_equality ... ok [INFO] [stdout] test semantics::rust::model::tests::from_parsed_creates_empty_semantics ... ok [INFO] [stdout] test semantics::python::tests::full_semantics_for_http_client_code ... ok [INFO] [stdout] test semantics::python::tests::full_semantics_for_mixed_fastapi_and_http ... ok [INFO] [stdout] test semantics::rust::model::tests::sync_pattern_type_equality ... ok [INFO] [stdout] test semantics::rust::model::tests::call_site_tracks_qualified_name_in_impl ... ok [INFO] [stdout] test semantics::rust::model::tests::unwrap_type_equality ... ok [INFO] [stdout] test semantics::rust::model::tests::visibility_equality ... ok [INFO] [stdout] test semantics::rust::tests::collects_use_statements ... ok [INFO] [stdout] test semantics::rust::tests::detects_statics ... ok [INFO] [stdout] test semantics::rust::tests::detects_structs ... ok [INFO] [stdout] test semantics::rust::tests::main_function_detected ... ok [INFO] [stdout] test semantics::rust::tests::detects_async_functions ... ok [INFO] [stdout] test semantics::rust::tests::detects_traits ... ok [INFO] [stdout] test semantics::python::tests::full_semantics_for_complete_api_module ... ok [INFO] [stdout] test semantics::rust::tests::detects_unwrap_calls ... ok [INFO] [stdout] test semantics::rust::tests::cfg_test_module_marks_unwraps_as_test ... ok [INFO] [stdout] test semantics::rust::tests::detects_enums ... ok [INFO] [stdout] test semantics::rust::tests::collects_functions ... ok [INFO] [stdout] test semantics::rust::tests::detects_impl_blocks ... ok [INFO] [stdout] test semantics::tests::build_source_semantics_go_returns_some ... ok [INFO] [stdout] test semantics::rust::tests::empty_file_returns_empty_semantics ... ok [INFO] [stdout] test semantics::tests::build_source_semantics_java_returns_none ... ok [INFO] [stdout] test semantics::rust::tests::detects_macros ... ok [INFO] [stdout] test semantics::tests::build_source_semantics_javascript_returns_none ... ok [INFO] [stdout] test semantics::rust::tests::does_not_mark_if_let_as_ignored_result_statement ... ok [INFO] [stdout] test semantics::rust::tests::detects_unsafe_blocks ... ok [INFO] [stdout] test semantics::tests::build_source_semantics_python_returns_python_variant ... ok [INFO] [stdout] test semantics::tests::build_source_semantics_python_returns_some ... ok [INFO] [stdout] test semantics::tests::source_semantics_as_typescript_returns_some_for_typescript ... ok [INFO] [stdout] test semantics::tests::build_source_semantics_with_fastapi_code ... ok [INFO] [stdout] test semantics::tests::build_source_semantics_typescript_returns_typescript_variant ... ok [INFO] [stdout] test semantics::tests::build_source_semantics_typescript_returns_some ... ok [INFO] [stdout] test semantics::typescript::express::tests::detects_express_router ... ok [INFO] [stdout] test semantics::typescript::express::tests::detects_async_route_handler ... ok [INFO] [stdout] test semantics::tests::build_source_semantics_unsupported_language_returns_none ... ok [INFO] [stdout] test semantics::tests::source_semantics_as_go_returns_some_for_go ... ok [INFO] [stdout] test semantics::tests::source_semantics_clone ... ok [INFO] [stdout] test semantics::tests::source_semantics_language_returns_go ... ok [INFO] [stdout] test semantics::typescript::express::tests::detects_middleware ... ok [INFO] [stdout] test semantics::python::tests::full_semantics_for_api_client_module ... ok [INFO] [stdout] test semantics::tests::source_semantics_language_returns_python ... ok [INFO] [stdout] test semantics::typescript::express::tests::detects_route_definition ... ok [INFO] [stdout] test semantics::tests::source_semantics_as_python_returns_none_for_go ... ok [INFO] [stdout] test semantics::typescript::express::tests::detects_express_app ... ok [INFO] [stdout] test semantics::typescript::express::tests::detects_multiple_routes ... ok [INFO] [stdout] test semantics::tests::source_semantics_debug_impl ... ok [INFO] [stdout] test semantics::tests::build_source_semantics_with_http_calls ... ok [INFO] [stdout] test semantics::typescript::express::tests::returns_none_for_non_express_code ... ok [INFO] [stdout] test semantics::typescript::express::tests::detects_route_path ... ok [INFO] [stdout] test semantics::typescript::http::tests::detects_api_client_post ... ok [INFO] [stdout] test semantics::typescript::http::tests::detects_axios_get ... ok [INFO] [stdout] test semantics::typescript::http::tests::detects_async_context ... ok [INFO] [stdout] test semantics::typescript::http::tests::detects_fetch_call ... ok [INFO] [stdout] test semantics::typescript::http::tests::detects_node_http ... ok [INFO] [stdout] test semantics::typescript::http::tests::detects_axios_post ... ok [INFO] [stdout] test semantics::typescript::http::tests::detects_timeout_in_fetch ... ok [INFO] [stdout] test semantics::typescript::model::tests::collects_async_function ... ok [INFO] [stdout] test semantics::typescript::http::tests::detects_no_timeout ... ok [INFO] [stdout] test semantics::typescript::model::tests::collects_calls ... ok [INFO] [stdout] test semantics::typescript::http::tests::detects_got_client ... ok [INFO] [stdout] test semantics::typescript::model::tests::collects_function ... ok [INFO] [stdout] test semantics::typescript::http::tests::ignores_config_get ... ok [INFO] [stdout] test semantics::typescript::http::tests::detects_http_client_get ... ok [INFO] [stdout] test semantics::typescript::http::tests::detects_error_handling_with_try_catch ... ok [INFO] [stdout] test semantics::typescript::model::tests::collects_class ... ok [INFO] [stdout] test semantics::typescript::http::tests::ignores_map_get ... ok [INFO] [stdout] test semantics::typescript::model::tests::collects_named_imports ... ok [INFO] [stdout] test semantics::typescript::model::tests::collects_namespace_import ... ok [INFO] [stdout] test semantics::typescript::model::tests::collects_simple_import ... ok [INFO] [stdout] test semantics::typescript::model::tests::handles_empty_file ... ok [INFO] [stdout] test semantics::typescript::model::tests::ts_callsite_deserializes_from_core_shape ... ok [INFO] [stdout] test semantics::typescript::model::tests::detects_global_mutable_state ... ok [INFO] [stdout] test semantics::typescript::tests::build_typescript_semantics_returns_ok_for_valid_typescript ... ok [INFO] [stdout] test semantics::typescript::model::tests::detects_empty_catch ... ok [INFO] [stdout] test semantics::typescript::model::tests::const_is_not_mutable ... ok [INFO] [stdout] test semantics::typescript::tests::build_typescript_semantics_runs_framework_analysis ... ok [INFO] [stdout] test semantics::typescript::tests::build_typescript_semantics_populates_basic_structure ... ok [INFO] [stdout] test semantics::typescript::http::tests::detects_timeout_in_axios ... ok [INFO] [stdout] test semantics::typescript::tests::build_typescript_semantics_populates_http_calls ... ok [INFO] [stdout] test semantics::tests::build_source_semantics_go_returns_go_variant ... ok [INFO] [stdout] test semantics::typescript::tests::full_semantics_for_mixed_express_and_http ... ok [INFO] [stdout] test semantics::rust::tests::visibility_extraction ... ok [INFO] [stdout] test semantics::rust::tests::test_function_detected ... ok [INFO] [stdout] test semantics::typescript::tests::full_semantics_for_nestjs_style_controller ... ok [INFO] [stdout] test semantics::typescript::tests::full_semantics_for_express_with_middleware ... ok [INFO] [stdout] test semantics::typescript::tests::full_semantics_for_empty_file ... ok [INFO] [stdout] test semantics::typescript::tests::full_semantics_for_complete_api_module ... ok [INFO] [stdout] test semantics::typescript::tests::semantics_preserves_file_metadata ... ok [INFO] [stdout] test session::tests::test_internal_session_state_new ... ok [INFO] [stdout] test semantics::typescript::tests::full_semantics_for_http_client_code ... ok [INFO] [stdout] test session::tests::test_build_all_semantics_with_python_file ... ok [INFO] [stdout] test session::tests::test_internal_session_state_run_empty ... ok [INFO] [stdout] test session::tests::test_internal_session_state_parse_all_files_empty ... ok [INFO] [stdout] test session::tests::test_internal_session_state_build_all_semantics ... ok [INFO] [stdout] test sre::glossary::tests::all_ids_returns_six ... ok [INFO] [stdout] test session::tests::test_internal_session_state_parse_all_files_with_python ... ok [INFO] [stdout] test session::tests::test_internal_session_state_run_with_file ... ok [INFO] [stdout] test session::tests::test_parse_all_files_with_unsupported_language ... ok [INFO] [stdout] test session::tests::test_internal_session_state_build_code_graph ... ok [INFO] [stdout] test session::tests::test_session_full_flow_empty ... ok [INFO] [stdout] test session::tests::test_build_code_graph_with_semantics ... ok [INFO] [stdout] test session::tests::test_session_full_flow_with_python_file ... ok [INFO] [stdout] test sre::glossary::tests::lookup_all_six_entries ... ok [INFO] [stdout] test sre::ranker::tests::top_n_truncates ... ok [INFO] [stdout] test sre::glossary::tests::lookup_slo_001 ... ok [INFO] [stdout] test sre::synthesizer::tests::failure_mode_timeout_rules ... ok [INFO] [stdout] test sre::synthesizer::tests::failure_mode_zombie_rules ... ok [INFO] [stdout] test sre::synthesizer::tests::failure_mode_unknown_rule ... ok [INFO] [stdout] test sre::glossary::tests::lookup_slo_006_cascade ... ok [INFO] [stdout] test session::tests::test_session_multiple_contexts ... ok [INFO] [stdout] test sre::glossary::tests::lookup_unknown_returns_none ... ok [INFO] [stdout] test sre::ranker::tests::db_is_ranked_highest ... ok [INFO] [stdout] test session::tests::test_dimension_filtering_returns_all_when_empty ... ok [INFO] [stdout] test session::tests::test_analysis_with_http_timeout_finding ... ok [INFO] [stdout] test sre::ranker::tests::finding_density_shifts_rank ... ok [INFO] [stdout] test sre::ranker::tests::empty_graph_does_not_panic ... ok [INFO] [stdout] test sre::synthesizer::tests::failure_mode_retry_rules ... ok [INFO] [stdout] test sre::synthesizer::tests::severity_never_downgraded ... ok [INFO] [stdout] test sre::synthesizer::tests::severity_no_upgrade_isolated_file ... ok [INFO] [stdout] test sre::synthesizer::tests::severity_upgrade_reaches_entrypoint ... ok [INFO] [stdout] test sre::world_model::tests::unknown_file_returns_trivial_path ... ok [INFO] [stdout] test suppression::filter::tests::filter_non_matching_line ... ok [INFO] [stdout] test sre::world_model::tests::propagation_reaches_entrypoint ... ok [INFO] [stdout] test sre::world_model::tests::risk_increases_with_hops ... ok [INFO] [stdout] test suppression::filter::tests::filter_empty_findings ... ok [INFO] [stdout] test suppression::filter::tests::filter_non_matching_suppression ... ok [INFO] [stdout] test suppression::filter::tests::filter_multiple_suppressions ... ok [INFO] [stdout] test suppression::filter::tests::filter_empty_suppressions ... ok [INFO] [stdout] test suppression::filter::tests::filter_next_line_suppression ... ok [INFO] [stdout] test sre::world_model::tests::isolated_file_has_zero_risk ... ok [INFO] [stdout] test suppression::filter::tests::matches_empty_means_all ... ok [INFO] [stdout] test suppression::filter::tests::is_not_suppressed_next_line_wrong ... ok [INFO] [stdout] test suppression::filter::tests::is_suppressed_same_line ... ok [INFO] [stdout] test suppression::filter::tests::filter_language_wildcard ... ok [INFO] [stdout] test sre::synthesizer::tests::severity_upgrade_no_entrypoint_but_many_files ... ok [INFO] [stdout] test suppression::filter::tests::filter_same_line_suppression ... ok [INFO] [stdout] test suppression::filter::tests::is_suppressed_file_level ... ok [INFO] [stdout] test suppression::filter::tests::is_suppressed_next_line_correct ... ok [INFO] [stdout] test semantics::typescript::tests::full_semantics_for_non_framework_code ... ok [INFO] [stdout] test suppression::filter::tests::filter_wildcard_suppression ... ok [INFO] [stdout] test suppression::filter::tests::is_not_suppressed_different_rule ... ok [INFO] [stdout] test suppression::filter::tests::filter_file_level_suppression ... ok [INFO] [stdout] test session::tests::test_run_analysis_with_findings_and_patch ... ok [INFO] [stdout] test suppression::model::tests::suppression_can_be_cloned ... ok [INFO] [stdout] test suppression::filter::tests::matches_exact_rule_id ... ok [INFO] [stdout] test suppression::filter::tests::matches_language_wildcard ... ok [INFO] [stdout] test session::tests::test_dimension_filtering_keeps_matching_dimensions ... ok [INFO] [stdout] test suppression::model::tests::suppression_scope_equality ... ok [INFO] [stdout] test suppression::parser::tests::file_level_context_after_class ... ok [INFO] [stdout] test suppression::model::tests::suppression_with_empty_rule_ids ... ok [INFO] [stdout] test suppression::model::tests::suppression_with_multiple_rule_ids ... ok [INFO] [stdout] test suppression::parser::tests::file_level_context_after_function ... ok [INFO] [stdout] test suppression::parser::tests::file_level_context_with_imports ... ok [INFO] [stdout] test suppression::parser::tests::file_level_context_empty_before ... ok [INFO] [stdout] test suppression::filter::tests::matches_wildcard_all ... ok [INFO] [stdout] test session::tests::test_dimension_filtering_filters_by_requested_dimension ... ok [INFO] [stdout] test suppression::model::tests::suppression_can_be_created ... ok [INFO] [stdout] test suppression::model::tests::suppression_can_be_deserialized ... ok [INFO] [stdout] test suppression::model::tests::suppression_can_be_serialized ... ok [INFO] [stdout] test suppression::filter::tests::matches_multiple_patterns ... ok [INFO] [stdout] test suppression::filter::tests::matches_short_form_backward_compat ... ok [INFO] [stdout] test suppression::filter::tests::no_match_different_rule ... ok [INFO] [stdout] test suppression::parser::tests::is_in_comment_inline ... ok [INFO] [stdout] test suppression::model::tests::suppression_scope_debug ... ok [INFO] [stdout] test suppression::filter::tests::no_match_partial_name ... ok [INFO] [stdout] test suppression::parser::tests::parse_rule_ids_empty ... ok [INFO] [stdout] test suppression::parser::tests::parse_rule_ids_multiple ... ok [INFO] [stdout] test suppression::parser::tests::is_in_comment_python_hash ... ok [INFO] [stdout] test suppression::parser::tests::is_in_comment_not_in_comment ... ok [INFO] [stdout] test suppression::parser::tests::parse_rule_ids_single ... ok [INFO] [stdout] test suppression::parser::tests::parse_rule_ids_whitespace ... ok [INFO] [stdout] test suppression::parser::tests::parse_file_level_suppression ... ok [INFO] [stdout] test suppression::parser::tests::parse_go_comment ... ok [INFO] [stdout] test suppression::parser::tests::parse_ignores_non_comment_marker ... ok [INFO] [stdout] test suppression::parser::tests::parse_language_wildcard ... ok [INFO] [stdout] test suppression::parser::tests::parse_multiple_rules ... ok [INFO] [stdout] test suppression::parser::tests::parse_multiple_suppressions_in_file ... ok [INFO] [stdout] test suppression::parser::tests::parse_next_line_suppression ... ok [INFO] [stdout] test suppression::parser::tests::is_in_comment_typescript_double_slash ... ok [INFO] [stdout] test suppression::parser::tests::parse_empty_source ... ok [INFO] [stdout] test suppression::parser::tests::parse_inline_suppression ... ok [INFO] [stdout] test suppression::parser::tests::parse_single_rule_python ... ok [INFO] [stdout] test suppression::parser::tests::parse_single_rule_typescript ... ok [INFO] [stdout] test suppression::parser::tests::parse_wildcard_suppression ... ok [INFO] [stdout] test suppression::parser::tests::parse_rust_comment ... ok [INFO] [stdout] test suppression::parser::tests::scope_next_line ... ok [INFO] [stdout] test suppression::parser::tests::scope_same_line ... ok [INFO] [stdout] test suppression::parser::tests::scope_file_level_after_shebang ... ok [INFO] [stdout] test suppression::parser::tests::parse_with_reason ... ok [INFO] [stdout] test suppression::parser::tests::parse_no_suppressions ... ok [INFO] [stdout] test suppression::parser::tests::parse_with_double_dash_reason ... ok [INFO] [stdout] test suppression::parser::tests::parse_rule_ids_with_reason ... ok [INFO] [stdout] test suppression::parser::tests::scope_file_level_line_1 ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2368 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.17s [INFO] [stdout] [INFO] [stderr] Doc-tests unfault_analysis [INFO] [stdout] [INFO] [stdout] running 61 tests [INFO] [stdout] test src/engine.rs - engine::Engine (line 28) ... ignored [INFO] [stdout] test src/ir.rs - ir::analyze_ir (line 153) ... ignored [INFO] [stdout] test src/ir.rs - ir::build_ir (line 81) ... ignored [INFO] [stdout] test src/lib.rs - (line 10) ... ignored [INFO] [stdout] test src/rules/rust/arc_mutex_contention.rs - rules::rust::arc_mutex_contention (line 17) ... ignored [INFO] [stdout] test src/rules/rust/arc_mutex_contention.rs - rules::rust::arc_mutex_contention (line 9) ... ignored [INFO] [stdout] test src/rules/rust/blocking_in_async.rs - rules::rust::blocking_in_async (line 10) ... ignored [INFO] [stdout] test src/rules/rust/blocking_in_async.rs - rules::rust::blocking_in_async (line 17) ... ignored [INFO] [stdout] test src/rules/rust/clone_in_loop.rs - rules::rust::clone_in_loop (line 10) ... ignored [INFO] [stdout] test src/rules/rust/clone_in_loop.rs - rules::rust::clone_in_loop (line 25) ... ignored [INFO] [stdout] test src/rules/rust/cpu_in_async.rs - rules::rust::cpu_in_async (line 17) ... ignored [INFO] [stdout] test src/rules/rust/cpu_in_async.rs - rules::rust::cpu_in_async (line 9) ... ignored [INFO] [stdout] test src/rules/rust/hardcoded_secrets.rs - rules::rust::hardcoded_secrets (line 10) ... ignored [INFO] [stdout] test src/rules/rust/hardcoded_secrets.rs - rules::rust::hardcoded_secrets (line 16) ... ignored [INFO] [stdout] test src/rules/rust/ignored_result.rs - rules::rust::ignored_result (line 10) ... ignored [INFO] [stdout] test src/rules/rust/ignored_result.rs - rules::rust::ignored_result (line 18) ... ignored [INFO] [stdout] test src/rules/rust/io_in_hot_path.rs - rules::rust::io_in_hot_path (line 19) ... ignored [INFO] [stdout] test src/rules/rust/io_in_hot_path.rs - rules::rust::io_in_hot_path (line 9) ... ignored [INFO] [stdout] test src/rules/rust/missing_async_timeout.rs - rules::rust::missing_async_timeout (line 16) ... ignored [INFO] [stdout] test src/rules/rust/missing_async_timeout.rs - rules::rust::missing_async_timeout (line 9) ... ignored [INFO] [stdout] test src/rules/rust/missing_select_timeout.rs - rules::rust::missing_select_timeout (line 17) ... ignored [INFO] [stdout] test src/rules/rust/missing_select_timeout.rs - rules::rust::missing_select_timeout (line 9) ... ignored [INFO] [stdout] test src/rules/rust/missing_structured_logging.rs - rules::rust::missing_structured_logging (line 16) ... ignored [INFO] [stdout] test src/rules/rust/missing_structured_logging.rs - rules::rust::missing_structured_logging (line 9) ... ignored [INFO] [stdout] test src/rules/rust/missing_tracing.rs - rules::rust::missing_tracing (line 17) ... ignored [INFO] [stdout] test src/rules/rust/missing_tracing.rs - rules::rust::missing_tracing (line 9) ... ignored [INFO] [stdout] test src/rules/rust/n_plus_one.rs - rules::rust::n_plus_one (line 17) ... ignored [INFO] [stdout] test src/rules/rust/n_plus_one.rs - rules::rust::n_plus_one (line 9) ... ignored [INFO] [stdout] test src/rules/rust/naive_datetime.rs - rules::rust::naive_datetime (line 18) ... ignored [INFO] [stdout] test src/rules/rust/naive_datetime.rs - rules::rust::naive_datetime (line 9) ... ignored [INFO] [stdout] test src/rules/rust/panic_in_library.rs - rules::rust::panic_in_library (line 19) ... ignored [INFO] [stdout] test src/rules/rust/panic_in_library.rs - rules::rust::panic_in_library (line 9) ... ignored [INFO] [stdout] test src/rules/rust/println_in_lib.rs - rules::rust::println_in_lib (line 17) ... ignored [INFO] [stdout] test src/rules/rust/println_in_lib.rs - rules::rust::println_in_lib (line 9) ... ignored [INFO] [stdout] test src/rules/rust/regex_compile.rs - rules::rust::regex_compile (line 15) ... ignored [INFO] [stdout] test src/rules/rust/regex_compile.rs - rules::rust::regex_compile (line 26) ... ignored [INFO] [stdout] test src/rules/rust/spawn_no_error_handling.rs - rules::rust::spawn_no_error_handling (line 10) ... ignored [INFO] [stdout] test src/rules/rust/spawn_no_error_handling.rs - rules::rust::spawn_no_error_handling (line 17) ... ignored [INFO] [stdout] test src/rules/rust/sql_injection.rs - rules::rust::sql_injection (line 15) ... ignored [INFO] [stdout] test src/rules/rust/sql_injection.rs - rules::rust::sql_injection (line 9) ... ignored [INFO] [stdout] test src/rules/rust/sync_dns_lookup.rs - rules::rust::sync_dns_lookup (line 16) ... ignored [INFO] [stdout] test src/rules/rust/sync_dns_lookup.rs - rules::rust::sync_dns_lookup (line 9) ... ignored [INFO] [stdout] test src/rules/rust/unbounded_channel.rs - rules::rust::unbounded_channel (line 15) ... ignored [INFO] [stdout] test src/rules/rust/unbounded_channel.rs - rules::rust::unbounded_channel (line 9) ... ignored [INFO] [stdout] test src/rules/rust/unbounded_concurrency.rs - rules::rust::unbounded_concurrency (line 20) ... ignored [INFO] [stdout] test src/rules/rust/unbounded_concurrency.rs - rules::rust::unbounded_concurrency (line 9) ... ignored [INFO] [stdout] test src/rules/rust/unbounded_memory.rs - rules::rust::unbounded_memory (line 16) ... ignored [INFO] [stdout] test src/rules/rust/unbounded_memory.rs - rules::rust::unbounded_memory (line 9) ... ignored [INFO] [stdout] test src/rules/rust/unbounded_recursion.rs - rules::rust::unbounded_recursion (line 18) ... ignored [INFO] [stdout] test src/rules/rust/unbounded_recursion.rs - rules::rust::unbounded_recursion (line 37) ... ignored [INFO] [stdout] test src/rules/rust/unbounded_recursion.rs - rules::rust::unbounded_recursion (line 9) ... ignored [INFO] [stdout] test src/rules/rust/uncancelled_tasks.rs - rules::rust::uncancelled_tasks (line 17) ... ignored [INFO] [stdout] test src/rules/rust/uncancelled_tasks.rs - rules::rust::uncancelled_tasks (line 9) ... ignored [INFO] [stdout] test src/rules/rust/unsafe_block_unaudited.rs - rules::rust::unsafe_block_unaudited (line 10) ... ignored [INFO] [stdout] test src/rules/rust/unsafe_block_unaudited.rs - rules::rust::unsafe_block_unaudited (line 19) ... ignored [INFO] [stdout] test src/rules/rust/unsafe_unwrap.rs - rules::rust::unsafe_unwrap (line 21) ... ignored [INFO] [stdout] test src/rules/rust/unsafe_unwrap.rs - rules::rust::unsafe_unwrap (line 28) ... ignored [INFO] [stdout] test src/semantics/python/model.rs - semantics::python::model::PyFileSemantics::import_insertion_line (line 125) ... ignored [INFO] [stdout] test src/semantics/python/model.rs - semantics::python::model::PyFileSemantics::import_insertion_line_for (line 166) ... ignored [INFO] [stdout] test src/suppression/parser.rs - suppression::parser::parse_suppressions (line 25) ... ignored [INFO] [stdout] test src/semantics/rust/mod.rs - semantics::rust::has_cfg_test_attribute (line 245) ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 60 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stdout] all doctests ran in 0.49s; merged doctests compilation took 0.48s [INFO] running `Command { std: "docker" "inspect" "beb50a0337d33a5fbd798fc5241035f92ca31026d8813dec7129bd8e1c947c37", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "beb50a0337d33a5fbd798fc5241035f92ca31026d8813dec7129bd8e1c947c37", kill_on_drop: false }` [INFO] [stdout] beb50a0337d33a5fbd798fc5241035f92ca31026d8813dec7129bd8e1c947c37