[INFO] cloning repository https://github.com/BartWaardenburg/fallow [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/BartWaardenburg/fallow" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBartWaardenburg%2Ffallow", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBartWaardenburg%2Ffallow'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] e9b626e018eacabfc943a385b0f6ff672678a777 [INFO] testing BartWaardenburg/fallow against beta-2026-04-21 for beta-1.96-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBartWaardenburg%2Ffallow" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-2-tc2/source/rust-toolchain.toml [INFO] started tweaking git repo https://github.com/BartWaardenburg/fallow [INFO] finished tweaking git repo https://github.com/BartWaardenburg/fallow [INFO] tweaked toml for git repo https://github.com/BartWaardenburg/fallow written to /workspace/builds/worker-2-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/BartWaardenburg/fallow on toolchain beta-2026-04-21 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/BartWaardenburg/fallow 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" "+beta-2026-04-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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" "+beta-2026-04-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 4222e4a4eca538d697acacc232d94e4bce0aaca91720771570d4de349ea59972 [INFO] running `Command { std: "docker" "start" "-a" "4222e4a4eca538d697acacc232d94e4bce0aaca91720771570d4de349ea59972", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "4222e4a4eca538d697acacc232d94e4bce0aaca91720771570d4de349ea59972", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4222e4a4eca538d697acacc232d94e4bce0aaca91720771570d4de349ea59972", kill_on_drop: false }` [INFO] [stdout] 4222e4a4eca538d697acacc232d94e4bce0aaca91720771570d4de349ea59972 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+beta-2026-04-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 6cfd73b43d3c5f93b24b28180dda02b1b81b1650ac1b8f0cdf839d333724f3e5 [INFO] running `Command { std: "docker" "start" "-a" "6cfd73b43d3c5f93b24b28180dda02b1b81b1650ac1b8f0cdf839d333724f3e5", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling quote v1.0.45 [INFO] [stderr] Compiling unicode-ident v1.0.24 [INFO] [stderr] Compiling cfg-if v1.0.4 [INFO] [stderr] Compiling allocator-api2 v0.2.21 [INFO] [stderr] Compiling itoa v1.0.18 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling equivalent v1.0.2 [INFO] [stderr] Compiling foldhash v0.2.0 [INFO] [stderr] Compiling libc v0.2.184 [INFO] [stderr] Compiling unicode-width v0.2.2 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling owo-colors v4.3.0 [INFO] [stderr] Compiling siphasher v1.0.2 [INFO] [stderr] Compiling hashbrown v0.16.1 [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling rustversion v1.0.22 [INFO] [stderr] Compiling rustc-hash v2.1.2 [INFO] [stderr] Compiling phf_shared v0.13.1 [INFO] [stderr] Compiling unicode-linebreak v0.1.5 [INFO] [stderr] Compiling smawk v0.3.2 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling ryu v1.0.23 [INFO] [stderr] Compiling textwrap v0.16.2 [INFO] [stderr] Compiling static_assertions v1.1.0 [INFO] [stderr] Compiling percent-encoding v2.3.2 [INFO] [stderr] Compiling unicode-segmentation v1.13.2 [INFO] [stderr] Compiling castaway v0.2.4 [INFO] [stderr] Compiling autocfg v1.5.0 [INFO] [stderr] Compiling phf v0.13.1 [INFO] [stderr] Compiling compact_str v0.9.0 [INFO] [stderr] Compiling zmij v1.0.21 [INFO] [stderr] Compiling fastrand v2.4.1 [INFO] [stderr] Compiling phf_generator v0.13.1 [INFO] [stderr] Compiling cow-utils v0.1.3 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling dragonbox_ecma v0.1.12 [INFO] [stderr] Compiling unicode-id-start v1.4.0 [INFO] [stderr] Compiling nonmax v0.5.5 [INFO] [stderr] Compiling log v0.4.29 [INFO] [stderr] Compiling stable_deref_trait v1.2.1 [INFO] [stderr] Compiling once_cell v1.21.4 [INFO] [stderr] Compiling pin-project-lite v0.2.17 [INFO] [stderr] Compiling zeroize v1.8.2 [INFO] [stderr] Compiling hashbrown v0.17.0 [INFO] [stderr] Compiling oxc_data_structures v0.125.0 [INFO] [stderr] Compiling oxc_estree v0.125.0 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling litemap v0.8.2 [INFO] [stderr] Compiling oxc_data_structures v0.124.0 [INFO] [stderr] Compiling writeable v0.6.3 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling oxc_allocator v0.125.0 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling icu_normalizer_data v2.2.0 [INFO] [stderr] Compiling num-integer v0.1.46 [INFO] [stderr] Compiling oxc_allocator v0.124.0 [INFO] [stderr] Compiling icu_properties_data v2.2.0 [INFO] [stderr] Compiling oxc_estree v0.124.0 [INFO] [stderr] Compiling num-bigint v0.4.6 [INFO] [stderr] Compiling utf8_iter v1.0.4 [INFO] [stderr] Compiling find-msvc-tools v0.1.9 [INFO] [stderr] Compiling shlex v1.3.0 [INFO] [stderr] Compiling oxc_str v0.125.0 [INFO] [stderr] Compiling bytes v1.11.1 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling cc v1.2.59 [INFO] [stderr] Compiling oxc_str v0.124.0 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling version_check v0.9.5 [INFO] [stderr] Compiling indexmap v2.13.1 [INFO] [stderr] Compiling ref-cast v1.0.25 [INFO] [stderr] Compiling typenum v1.19.0 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling linux-raw-sys v0.12.1 [INFO] [stderr] Compiling self_cell v1.2.2 [INFO] [stderr] Compiling base64 v0.22.1 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling object v0.37.3 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling httparse v1.10.1 [INFO] [stderr] Compiling subtle v2.6.1 [INFO] [stderr] Compiling crossbeam-epoch v0.9.18 [INFO] [stderr] Compiling itertools v0.14.0 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling serde_derive_internals v0.29.1 [INFO] [stderr] Compiling rustls-pki-types v1.14.0 [INFO] [stderr] Compiling mio v1.2.0 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling adler2 v2.0.1 [INFO] [stderr] Compiling gimli v0.32.3 [INFO] [stderr] Compiling futures-core v0.3.32 [INFO] [stderr] Compiling untrusted v0.9.0 [INFO] [stderr] Compiling iana-time-zone v0.1.65 [INFO] [stderr] Compiling futures-sink v0.3.32 [INFO] [stderr] Compiling strsim v0.11.1 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling crossbeam-deque v0.8.6 [INFO] [stderr] Compiling form_urlencoded v1.2.2 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling oxc-miette-derive v2.7.1 [INFO] [stderr] Compiling phf_macros v0.13.1 [INFO] [stderr] Compiling zerofrom-derive v0.1.7 [INFO] [stderr] Compiling yoke-derive v0.8.2 [INFO] [stderr] Compiling zerovec-derive v0.11.3 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling oxc-miette v2.7.1 [INFO] [stderr] Compiling zerofrom v0.1.7 [INFO] [stderr] Compiling oxc_ast_macros v0.125.0 [INFO] [stderr] Compiling oxc_ast_macros v0.124.0 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling ref-cast-impl v1.0.25 [INFO] [stderr] Compiling oxc_span v0.125.0 [INFO] [stderr] Compiling oxc_span v0.124.0 [INFO] [stderr] Compiling oxc_diagnostics v0.124.0 [INFO] [stderr] Compiling oxc_diagnostics v0.125.0 [INFO] [stderr] Compiling yoke v0.8.2 [INFO] [stderr] Compiling addr2line v0.25.1 [INFO] [stderr] Compiling schemars_derive v1.2.1 [INFO] [stderr] Compiling zerovec v0.11.6 [INFO] [stderr] Compiling zerotrie v0.2.4 [INFO] [stderr] Compiling oxc_regular_expression v0.125.0 [INFO] [stderr] Compiling oxc_regular_expression v0.124.0 [INFO] [stderr] Compiling rustc-demangle v0.1.27 [INFO] [stderr] Compiling rayon-core v1.13.0 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling tinystr v0.8.3 [INFO] [stderr] Compiling potential_utf v0.1.5 [INFO] [stderr] Compiling icu_locale_core v2.2.0 [INFO] [stderr] Compiling icu_collections v2.2.0 [INFO] [stderr] Compiling rustls v0.23.37 [INFO] [stderr] Compiling base64ct v1.8.3 [INFO] [stderr] Compiling dyn-clone v1.0.20 [INFO] [stderr] Compiling backtrace v0.3.76 [INFO] [stderr] Compiling pem-rfc7468 v0.7.0 [INFO] [stderr] Compiling rustls-webpki v0.103.13 [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Compiling bitcode_derive v0.6.9 [INFO] [stderr] Compiling icu_provider v2.2.0 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Compiling crypto-common v0.1.7 [INFO] [stderr] Compiling http v1.4.0 [INFO] [stderr] Compiling float-cmp v0.10.0 [INFO] [stderr] Compiling halfbrown v0.4.0 [INFO] [stderr] Compiling bstr v1.12.1 [INFO] [stderr] Compiling icu_normalizer v2.2.0 [INFO] [stderr] Compiling icu_properties v2.2.0 [INFO] [stderr] Compiling bytemuck v1.25.0 [INFO] [stderr] Compiling const-oid v0.9.6 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling same-file v1.0.6 [INFO] [stderr] Compiling is_ci v1.2.0 [INFO] [stderr] Compiling winnow v1.0.1 [INFO] [stderr] Compiling futures-task v0.3.32 [INFO] [stderr] Compiling seq-macro v0.3.6 [INFO] [stderr] Compiling semver v1.0.28 [INFO] [stderr] Compiling futures-io v0.3.32 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling toml_parser v1.1.2+spec-1.1.0 [INFO] [stderr] Compiling rustc_version v0.4.1 [INFO] [stderr] Compiling supports-color v3.0.2 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling bitcode v0.6.9 [INFO] [stderr] Compiling walkdir v2.5.0 [INFO] [stderr] Compiling ureq-proto v0.6.0 [INFO] [stderr] Compiling der v0.7.10 [INFO] [stderr] Compiling value-trait v0.12.1 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling backtrace-ext v0.2.1 [INFO] [stderr] Compiling miette-derive v7.6.0 [INFO] [stderr] Compiling terminal_size v0.4.4 [INFO] [stderr] Compiling webpki-roots v1.0.6 [INFO] [stderr] Compiling serde_spanned v1.1.1 [INFO] [stderr] Compiling toml_datetime v1.1.1+spec-1.1.0 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling seize v0.5.1 [INFO] [stderr] Compiling simdutf8 v0.1.5 [INFO] [stderr] Compiling toml_writer v1.1.1+spec-1.1.0 [INFO] [stderr] Compiling supports-hyperlinks v3.2.0 [INFO] [stderr] Compiling utf8-zero v0.8.1 [INFO] [stderr] Compiling unicode-width v0.1.14 [INFO] [stderr] Compiling portable-atomic v1.13.1 [INFO] [stderr] Compiling arrayvec v0.7.6 [INFO] [stderr] Compiling cpufeatures v0.2.17 [INFO] [stderr] Compiling supports-unicode v3.0.0 [INFO] [stderr] Compiling fast-glob v1.0.1 [INFO] [stderr] Compiling papaya v0.2.4 [INFO] [stderr] Compiling toml v1.1.2+spec-1.1.0 [INFO] [stderr] Compiling simd-json v0.17.0 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling miette v7.6.0 [INFO] [stderr] Compiling rayon v1.12.0 [INFO] [stderr] Compiling spki v0.7.3 [INFO] [stderr] Compiling curve25519-dalek v4.1.3 [INFO] [stderr] Compiling tokio-macros v2.7.0 [INFO] [stderr] Compiling json-strip-comments v3.1.0 [INFO] [stderr] Compiling ident_case v1.0.1 [INFO] [stderr] Compiling dunce v1.0.5 [INFO] [stderr] Compiling nodejs-built-in-modules v1.0.0 [INFO] [stderr] Compiling glob v0.3.3 [INFO] [stderr] Compiling json_comments v0.2.2 [INFO] [stderr] Compiling utf8parse v0.2.2 [INFO] [stderr] Compiling lazy_static v1.5.0 [INFO] [stderr] Compiling oxc_sourcemap v6.1.1 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling outref v0.5.2 [INFO] [stderr] Compiling vsimd v0.8.0 [INFO] [stderr] Compiling sharded-slab v0.1.7 [INFO] [stderr] Compiling tokio v1.51.1 [INFO] [stderr] Compiling anstyle-parse v1.0.0 [INFO] [stderr] Compiling darling_core v0.23.0 [INFO] [stderr] Compiling pkcs8 v0.10.2 [INFO] [stderr] Compiling futures-executor v0.3.32 [INFO] [stderr] Compiling base64-simd v0.8.0 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling curve25519-dalek-derive v0.1.1 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling console v0.16.3 [INFO] [stderr] Compiling inotify-sys v0.1.5 [INFO] [stderr] Compiling thread_local v1.1.9 [INFO] [stderr] Compiling xxhash-rust v0.8.15 [INFO] [stderr] Compiling signature v2.2.0 [INFO] [stderr] Compiling nu-ansi-term v0.50.3 [INFO] [stderr] Compiling unit-prefix v0.5.2 [INFO] [stderr] Compiling colorchoice v1.0.5 [INFO] [stderr] Compiling is_terminal_polyfill v1.70.2 [INFO] [stderr] Compiling oxc_index v4.1.0 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling globset v0.4.18 [INFO] [stderr] Compiling ureq v3.3.0 [INFO] [stderr] Compiling oxc_syntax v0.124.0 [INFO] [stderr] Compiling oxc_syntax v0.125.0 [INFO] [stderr] Compiling fallow-types v2.45.0 (/opt/rustwide/workdir/crates/types) [INFO] [stderr] Compiling oxc_resolver v11.19.1 [INFO] [stderr] Compiling oxc_ast v0.124.0 [INFO] [stderr] Compiling schemars v1.2.1 [INFO] [stderr] Compiling oxc_ast v0.125.0 [INFO] [stderr] Compiling anstyle-query v1.1.5 [INFO] [stderr] Compiling json-escape-simd v3.0.1 [INFO] [stderr] Compiling anstyle v1.0.14 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling fixedbitset v0.5.7 [INFO] [stderr] Compiling anstream v1.0.0 [INFO] [stderr] Compiling fallow-config v2.45.0 (/opt/rustwide/workdir/crates/config) [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling darling_macro v0.23.0 [INFO] [stderr] Compiling ignore v0.4.25 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling indicatif v0.18.4 [INFO] [stderr] Compiling ed25519 v2.2.3 [INFO] [stderr] Compiling inotify v0.11.1 [INFO] [stderr] Compiling futures v0.3.32 [INFO] [stderr] Compiling pin-project-internal v1.1.11 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling notify-types v2.1.0 [INFO] [stderr] Compiling srcmap-codec v0.3.5 [INFO] [stderr] Compiling clap_lex v1.1.0 [INFO] [stderr] Compiling heck v0.5.0 [INFO] [stderr] Compiling scopeguard v1.2.0 [INFO] [stderr] Compiling pin-project v1.1.11 [INFO] [stderr] Compiling lock_api v0.4.14 [INFO] [stderr] Compiling clap_derive v4.6.0 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling fallow-graph v2.45.0 (/opt/rustwide/workdir/crates/graph) [INFO] [stderr] Compiling clap_builder v4.6.0 [INFO] [stderr] Compiling srcmap-scopes v0.3.5 [INFO] [stderr] Compiling notify v8.2.0 [INFO] [stderr] Compiling oxc_ecmascript v0.124.0 [INFO] [stderr] Compiling oxc_ast_visit v0.124.0 [INFO] [stderr] Compiling ed25519-dalek v2.2.0 [INFO] [stderr] Compiling darling v0.23.0 [INFO] [stderr] Compiling serde_repr v0.1.20 [INFO] [stderr] Compiling oxc_semantic v0.124.0 [INFO] [stderr] Compiling oxc_parser v0.124.0 [INFO] [stderr] Compiling tower-layer v0.3.3 [INFO] [stderr] Compiling bitflags v1.3.2 [INFO] [stderr] Compiling rmcp v1.4.0 [INFO] [stderr] Compiling tower-service v0.3.3 [INFO] [stderr] Compiling oxc_ecmascript v0.125.0 [INFO] [stderr] Compiling oxc_ast_visit v0.125.0 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling tower v0.4.13 [INFO] [stderr] Compiling lsp-types v0.94.1 [INFO] [stderr] Compiling oxc_parser v0.125.0 [INFO] [stderr] Compiling oxc_semantic v0.125.0 [INFO] [stderr] Compiling oxc_codegen v0.124.0 [INFO] [stderr] Compiling oxc_traverse v0.124.0 [INFO] [stderr] Compiling clap v4.6.0 [INFO] [stderr] Compiling dashmap v5.5.3 [INFO] [stderr] Compiling fallow-license v2.45.0 (/opt/rustwide/workdir/crates/license) [INFO] [stderr] Compiling rmcp-macros v1.5.0 [INFO] [stderr] Compiling notify-debouncer-mini v0.7.0 [INFO] [stderr] Compiling srcmap-sourcemap v0.3.5 [INFO] [stderr] Compiling fallow-cov-protocol v0.3.0 [INFO] [stderr] Compiling fallow-v8-coverage v2.45.0 (/opt/rustwide/workdir/crates/v8-coverage) [INFO] [stderr] Compiling tower-lsp-macros v0.9.0 [INFO] [stderr] Compiling fallow-extract v2.45.0 (/opt/rustwide/workdir/crates/extract) [INFO] [stderr] Compiling auto_impl v1.3.0 [INFO] [stderr] Compiling pastey v0.2.1 [INFO] [stderr] Compiling colored v3.1.1 [INFO] [stderr] Compiling oxc_coverage_instrument v0.3.8 [INFO] [stderr] Compiling fallow-core v2.45.0 (/opt/rustwide/workdir/crates/core) [INFO] [stderr] Compiling fallow-cli v2.45.0 (/opt/rustwide/workdir/crates/cli) [INFO] [stderr] Compiling fallow-mcp v2.45.0 (/opt/rustwide/workdir/crates/mcp) [INFO] [stderr] Compiling tower-lsp v0.20.0 [INFO] [stderr] Compiling fallow-lsp v2.45.0 (/opt/rustwide/workdir/crates/lsp) [INFO] [stderr] Finished `dev` profile [unoptimized] target(s) in 4m 11s [INFO] running `Command { std: "docker" "inspect" "6cfd73b43d3c5f93b24b28180dda02b1b81b1650ac1b8f0cdf839d333724f3e5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6cfd73b43d3c5f93b24b28180dda02b1b81b1650ac1b8f0cdf839d333724f3e5", kill_on_drop: false }` [INFO] [stdout] 6cfd73b43d3c5f93b24b28180dda02b1b81b1650ac1b8f0cdf839d333724f3e5 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+beta-2026-04-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 69a790afc4b48753a1ecb061844f5427652fa8704c22d203d6e7bacdfbafc61d [INFO] running `Command { std: "docker" "start" "-a" "69a790afc4b48753a1ecb061844f5427652fa8704c22d203d6e7bacdfbafc61d", kill_on_drop: false }` [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling zerocopy v0.8.48 [INFO] [stderr] Compiling zerocopy-derive v0.8.48 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling wait-timeout v0.2.1 [INFO] [stderr] Compiling bit-vec v0.8.0 [INFO] [stderr] Compiling quick-error v1.2.3 [INFO] [stderr] Compiling fnv v1.0.7 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling unarray v0.1.4 [INFO] [stderr] Compiling rusty-fork v0.3.1 [INFO] [stderr] Compiling curve25519-dalek v4.1.3 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling bit-set v0.8.0 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling similar v2.7.0 [INFO] [stderr] Compiling alloca v0.4.0 [INFO] [stderr] Compiling ciborium-io v0.2.2 [INFO] [stderr] Compiling plotters-backend v0.3.7 [INFO] [stderr] Compiling rand_xorshift v0.4.0 [INFO] [stderr] Compiling rand v0.9.2 [INFO] [stderr] Compiling itertools v0.13.0 [INFO] [stderr] Compiling plotters-svg v0.3.7 [INFO] [stderr] Compiling cast v0.3.0 [INFO] [stderr] Compiling plotters v0.3.7 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling rustls-webpki v0.103.13 [INFO] [stderr] Compiling ed25519-dalek v2.2.0 [INFO] [stderr] Compiling fallow-license v2.45.0 (/opt/rustwide/workdir/crates/license) [INFO] [stderr] Compiling insta v1.47.2 [INFO] [stderr] Compiling criterion-plot v0.8.2 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling tinytemplate v1.2.1 [INFO] [stderr] Compiling rustls v0.23.37 [INFO] [stderr] Compiling page_size v0.6.0 [INFO] [stderr] Compiling rustc-hash v1.1.0 [INFO] [stderr] Compiling mintex v0.1.4 [INFO] [stderr] Compiling thousands v0.2.0 [INFO] [stderr] Compiling oorandom v11.1.5 [INFO] [stderr] Compiling anes v0.1.6 [INFO] [stderr] Compiling dhat v0.3.3 [INFO] [stderr] Compiling fallow-types v2.45.0 (/opt/rustwide/workdir/crates/types) [INFO] [stderr] Compiling fallow-v8-coverage v2.45.0 (/opt/rustwide/workdir/crates/v8-coverage) [INFO] [stderr] Compiling globset v0.4.18 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling ignore v0.4.25 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling fallow-extract v2.45.0 (/opt/rustwide/workdir/crates/extract) [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling proptest v1.11.0 [INFO] [stderr] Compiling ureq v3.3.0 [INFO] [stderr] Compiling half v2.7.1 [INFO] [stderr] Compiling ciborium-ll v0.2.2 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling fallow-config v2.45.0 (/opt/rustwide/workdir/crates/config) [INFO] [stderr] Compiling ciborium v0.2.2 [INFO] [stderr] Compiling rand v0.8.6 [INFO] [stderr] Compiling fallow-mcp v2.45.0 (/opt/rustwide/workdir/crates/mcp) [INFO] [stderr] Compiling criterion v0.8.2 [INFO] [stderr] Compiling fallow-graph v2.45.0 (/opt/rustwide/workdir/crates/graph) [INFO] [stderr] Compiling fallow-core v2.45.0 (/opt/rustwide/workdir/crates/core) [INFO] [stderr] Compiling fallow-cli v2.45.0 (/opt/rustwide/workdir/crates/cli) [INFO] [stderr] Compiling fallow-lsp v2.45.0 (/opt/rustwide/workdir/crates/lsp) [INFO] [stderr] Finished `test` profile [unoptimized] target(s) in 3m 06s [INFO] running `Command { std: "docker" "inspect" "69a790afc4b48753a1ecb061844f5427652fa8704c22d203d6e7bacdfbafc61d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "69a790afc4b48753a1ecb061844f5427652fa8704c22d203d6e7bacdfbafc61d", kill_on_drop: false }` [INFO] [stdout] 69a790afc4b48753a1ecb061844f5427652fa8704c22d203d6e7bacdfbafc61d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+beta-2026-04-21" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 9bed3b7ed38fd77e1a04d443063ac3911524153450927724a4ca9fae399c59cd [INFO] running `Command { std: "docker" "start" "-a" "9bed3b7ed38fd77e1a04d443063ac3911524153450927724a4ca9fae399c59cd", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized] target(s) in 0.69s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/fallow_cli-302b9ce41e98b2db) [INFO] [stdout] [INFO] [stdout] running 663 tests [INFO] [stdout] test codeowners::tests::directory_group_monorepo ... ok [INFO] [stdout] test codeowners::tests::directory_group_simple ... ok [INFO] [stdout] test codeowners::tests::directory_group_root_file ... ok [INFO] [stdout] test codeowners::tests::from_file_nonexistent ... ok [INFO] [stdout] test codeowners::tests::email_owner ... ok [INFO] [stdout] test codeowners::tests::discover_nonexistent_root ... ok [INFO] [stdout] test codeowners::tests::gitlab_inline_owner_overrides_section_default ... ok [INFO] [stdout] test codeowners::tests::gitlab_optional_section_header_skipped ... ok [INFO] [stdout] test codeowners::tests::gitlab_rules_before_first_section_retain_inline_owners ... ok [INFO] [stdout] test codeowners::tests::gitlab_negation_owner_and_rule_returns_none ... ok [INFO] [stdout] test codeowners::tests::from_file_real_codeowners ... ok [INFO] [stdout] test codeowners::tests::gitlab_section_default_owners_inherited ... ok [INFO] [stdout] test codeowners::tests::gitlab_section_header_with_approval_count_skipped ... ok [INFO] [stdout] test codeowners::tests::gitlab_negation_last_match_clears_ownership ... ok [INFO] [stdout] test codeowners::tests::gitlab_section_defaults_reset_between_sections ... ok [INFO] [stdout] test codeowners::tests::gitlab_issue_127_reproduction ... ok [INFO] [stdout] test codeowners::tests::gitlab_negation_only_clears_when_last_match ... ok [INFO] [stdout] test codeowners::tests::has_sections_false_without_headers ... ok [INFO] [stdout] test codeowners::tests::gitlab_section_header_multiple_default_owners_uses_first ... ok [INFO] [stdout] test codeowners::tests::has_sections_true_with_headers ... ok [INFO] [stdout] test codeowners::tests::owner_and_rule_of_no_match ... ok [INFO] [stdout] test codeowners::tests::owner_of_extension_glob ... ok [INFO] [stdout] test codeowners::tests::owner_of_falls_back_to_catch_all ... ok [INFO] [stdout] test codeowners::tests::owner_of_last_match_wins ... ok [INFO] [stdout] test codeowners::tests::owner_of_no_match_returns_none ... ok [INFO] [stdout] test codeowners::tests::owner_of_specific_overrides_general ... ok [INFO] [stdout] test codeowners::tests::parse_empty_content ... ok [INFO] [stdout] test codeowners::tests::parse_multi_owner_takes_first ... ok [INFO] [stdout] test codeowners::tests::parse_section_header_rejects_malformed ... ok [INFO] [stdout] test codeowners::tests::parse_section_header_variants ... ok [INFO] [stdout] test codeowners::tests::parse_simple_codeowners ... ok [INFO] [stdout] test codeowners::tests::owner_of_nested_directory ... ok [INFO] [stdout] test codeowners::tests::parse_skips_comments_and_blanks ... ok [INFO] [stdout] test codeowners::tests::owner_and_rule_of_returns_owner_and_pattern ... ok [INFO] [stdout] test codeowners::tests::parse_skips_pattern_without_owner ... ok [INFO] [stdout] test codeowners::tests::section_and_owners_of_returns_section_defaults ... ok [INFO] [stdout] test codeowners::tests::section_of_returns_named_section ... ok [INFO] [stdout] test codeowners::tests::section_of_returns_none_for_unmatched_path ... ok [INFO] [stdout] test codeowners::tests::team_owner ... ok [INFO] [stdout] test codeowners::tests::gitlab_optional_section_with_approval_count_skipped ... ok [INFO] [stdout] test codeowners::tests::translate_directory_pattern ... ok [INFO] [stdout] test codeowners::tests::section_and_owners_of_empty_owners_for_pre_section_rule ... ok [INFO] [stdout] test codeowners::tests::translate_double_star ... ok [INFO] [stdout] test codeowners::tests::translate_path_with_slash ... ok [INFO] [stdout] test codeowners::tests::gitlab_section_header_skipped_as_rule ... ok [INFO] [stdout] test codeowners::tests::translate_rooted_directory ... ok [INFO] [stdout] test codeowners::tests::translate_rooted_pattern ... ok [INFO] [stdout] test codeowners::tests::translate_single_file ... ok [INFO] [stdout] test codeowners::tests::non_section_bracket_pattern_parses_as_rule ... ok [INFO] [stdout] test codeowners::tests::section_and_owners_of_same_owners_distinct_sections ... ok [INFO] [stdout] test codeowners::tests::translate_bare_glob ... ok [INFO] [stdout] test explain::tests::check_meta_has_docs_and_rules ... ok [INFO] [stdout] test codeowners::tests::section_of_returns_some_none_for_pre_section_rule ... ok [INFO] [stdout] test explain::tests::check_meta_rule_has_required_fields ... ok [INFO] [stdout] test codeowners::tests::section_of_returns_none_for_negation_last_match ... ok [INFO] [stdout] test explain::tests::check_meta_docs_url_matches_constant ... ok [INFO] [stdout] test explain::tests::check_docs_url_valid ... ok [INFO] [stdout] test explain::tests::check_rules_all_have_docs_path ... ok [INFO] [stdout] test explain::tests::check_rules_count ... ok [INFO] [stdout] test explain::tests::check_rules_all_have_non_empty_fields ... ok [INFO] [stdout] test explain::tests::check_rules_no_duplicate_ids ... ok [INFO] [stdout] test explain::tests::check_rules_all_have_fallow_prefix ... ok [INFO] [stdout] test explain::tests::dupes_docs_url_valid ... ok [INFO] [stdout] test explain::tests::dupes_meta_all_metrics_have_name_and_description ... ok [INFO] [stdout] test explain::tests::dupes_meta_docs_url_matches_constant ... ok [INFO] [stdout] test explain::tests::dupes_meta_has_line_count ... ok [INFO] [stdout] test explain::tests::dupes_meta_has_metrics ... ok [INFO] [stdout] test explain::tests::dupes_rules_all_have_non_empty_fields ... ok [INFO] [stdout] test explain::tests::dupes_rules_all_have_docs_path ... ok [INFO] [stdout] test explain::tests::dupes_rules_count ... ok [INFO] [stdout] test explain::tests::dupes_rules_all_have_fallow_prefix ... ok [INFO] [stdout] test explain::tests::health_docs_url_valid ... ok [INFO] [stdout] test explain::tests::health_meta_all_metrics_have_name_and_description ... ok [INFO] [stdout] test explain::tests::health_meta_has_metrics ... ok [INFO] [stdout] test explain::tests::health_rules_all_have_docs_path ... ok [INFO] [stdout] test explain::tests::rule_by_id_finds_all_check_rules ... ok [INFO] [stdout] test explain::tests::health_rules_all_have_fallow_prefix ... ok [INFO] [stdout] test explain::tests::health_rules_all_have_non_empty_fields ... ok [INFO] [stdout] test explain::tests::rule_by_id_finds_all_dupes_rules ... ok [INFO] [stdout] test explain::tests::rule_by_id_finds_all_health_rules ... ok [INFO] [stdout] test explain::tests::rule_by_id_finds_dupes_rule ... ok [INFO] [stdout] test explain::tests::rule_by_id_finds_check_rule ... ok [INFO] [stdout] test explain::tests::health_meta_docs_url_matches_constant ... ok [INFO] [stdout] test explain::tests::health_meta_has_all_expected_metrics ... ok [INFO] [stdout] test explain::tests::health_rules_count ... ok [INFO] [stdout] test explain::tests::rule_docs_url_dupes_rule ... ok [INFO] [stdout] test explain::tests::rule_docs_url_format ... ok [INFO] [stdout] test health_types::production_coverage::tests::confidence_display_matches_snake_case_serde ... ok [INFO] [stdout] test health_types::production_coverage::tests::verdict_display_matches_snake_case_serde ... ok [INFO] [stdout] test health_types::production_coverage::tests::report_verdict_display_matches_kebab_case_serde ... ok [INFO] [stdout] test explain::tests::rule_docs_url_health_rule ... ok [INFO] [stdout] test health_types::production_coverage::tests::action_serializes_kind_as_type ... ok [INFO] [stdout] test health_types::production_coverage::tests::watermark_display_matches_kebab_case_serde ... ok [INFO] [stdout] test explain::tests::rule_by_id_finds_health_rule ... ok [INFO] [stdout] test explain::tests::rule_by_id_returns_none_for_unknown ... ok [INFO] [stdout] test health_types::scores::tests::compute_severity_at_exact_boundaries ... ok [INFO] [stdout] test health_types::scores::tests::compute_severity_critical_from_cognitive ... ok [INFO] [stdout] test health_types::scores::tests::compute_severity_critical_from_cyclomatic ... ok [INFO] [stdout] test health_types::scores::tests::compute_severity_high_from_cognitive ... ok [INFO] [stdout] test health_types::scores::tests::compute_severity_moderate_when_below_high_thresholds ... ok [INFO] [stdout] test health_types::scores::tests::coverage_model_serializes_as_snake_case ... ok [INFO] [stdout] test health_types::scores::tests::compute_severity_crap_moderate_under_high ... ok [INFO] [stdout] test health_types::scores::tests::compute_severity_high_from_cyclomatic ... ok [INFO] [stdout] test health_types::scores::tests::compute_severity_uses_highest_across_dimensions ... ok [INFO] [stdout] test health_types::scores::tests::compute_severity_crap_contributes_critical ... ok [INFO] [stdout] test health_types::scores::tests::exceeded_threshold_all_variants_serialize ... ok [INFO] [stdout] test health_types::scores::tests::compute_severity_crap_contributes_high ... ok [INFO] [stdout] test health_types::scores::tests::exceeded_threshold_from_bools ... ok [INFO] [stdout] test health_types::scores::tests::hotspot_score_threshold_is_50 ... ok [INFO] [stdout] test health_types::scores::tests::exceeded_threshold_includes_helpers ... ok [INFO] [stdout] test health_types::scores::tests::letter_grade_boundaries ... ok [INFO] [stdout] test health_types::scores::tests::health_score_serializes_correctly ... ok [INFO] [stdout] test health_types::scores::tests::finding_severity_ordering ... ok [INFO] [stdout] test health_types::scores::tests::finding_severity_serializes_as_snake_case ... ok [INFO] [stdout] test health_types::scores::tests::exceeded_threshold_serializes_as_snake_case ... ok [INFO] [stdout] test health_types::targets::tests::category_compact_labels_are_unique ... ok [INFO] [stdout] test health_types::targets::tests::category_labels_are_non_empty ... ok [INFO] [stdout] test health_types::targets::tests::category_compact_labels_have_no_spaces ... ok [INFO] [stdout] test health_types::targets::tests::category_compact_labels_are_non_empty ... ok [INFO] [stdout] test health_types::targets::tests::category_labels_are_unique ... ok [INFO] [stdout] test health_types::targets::tests::confidence_labels_are_non_empty ... ok [INFO] [stdout] test health_types::targets::tests::confidence_serializes_as_snake_case ... ok [INFO] [stdout] test health_types::targets::tests::contributing_factor_serializes_correctly ... ok [INFO] [stdout] test health_types::targets::tests::effort_labels_are_non_empty ... ok [INFO] [stdout] test health_types::targets::tests::category_serializes_as_snake_case ... ok [INFO] [stdout] test health_types::targets::tests::effort_numeric_values ... ok [INFO] [stdout] test health_types::targets::tests::effort_serializes_as_snake_case ... ok [INFO] [stdout] test health_types::targets::tests::refactoring_target_skips_empty_factors ... ok [INFO] [stdout] test health_types::targets::tests::target_evidence_skips_empty_fields ... ok [INFO] [stdout] test health_types::tests::health_report_skips_empty_collections ... ok [INFO] [stdout] test health_types::targets::tests::target_evidence_with_data ... ok [INFO] [stdout] test health_types::tests::health_score_none_skipped_in_report ... ok [INFO] [stdout] test health_types::vital_signs::tests::snapshot_schema_version_is_seven ... ok [INFO] [stdout] test health_types::vital_signs::tests::snapshot_v1_deserializes_with_default_score_and_grade ... ok [INFO] [stdout] test health_types::vital_signs::tests::vital_signs_all_none_optional_fields_omitted ... ok [INFO] [stdout] test regression::baseline::tests::chrono_now_format ... ok [INFO] [stdout] test regression::baseline::tests::compare_exceeded_includes_type_deltas ... ok [INFO] [stdout] test health_types::vital_signs::tests::vital_signs_snapshot_roundtrip ... ok [INFO] [stdout] test regression::baseline::tests::compare_exceeded_with_config_baseline ... ok [INFO] [stdout] test health_types::vital_signs::tests::vital_signs_serialization_roundtrip ... ok [INFO] [stdout] test regression::baseline::tests::compare_no_baseline_source_returns_error ... ok [INFO] [stdout] test regression::baseline::tests::compare_pass_with_config_baseline ... ok [INFO] [stdout] test regression::baseline::tests::compare_returns_skipped_when_scoped ... ok [INFO] [stdout] test regression::baseline::tests::compare_improvement_is_pass ... ok [INFO] [stdout] test regression::baseline::tests::compare_pass_within_tolerance ... ok [INFO] [stdout] test regression::baseline::tests::compare_with_percentage_tolerance ... ok [INFO] [stdout] test regression::baseline::tests::compare_returns_none_when_disabled ... ok [INFO] [stdout] test regression::baseline::tests::find_json_key_in_nested_comment_then_real ... ok [INFO] [stdout] test regression::baseline::tests::find_json_key_multiple_same_keys ... ok [INFO] [stdout] test regression::baseline::tests::find_json_key_not_found ... ok [INFO] [stdout] test regression::baseline::tests::find_json_key_skips_block_comment ... ok [INFO] [stdout] test regression::baseline::tests::find_json_key_skips_comment ... ok [INFO] [stdout] test regression::baseline::tests::json_insert_into_empty_object ... ok [INFO] [stdout] test regression::baseline::tests::json_insert_into_existing_config ... ok [INFO] [stdout] test regression::baseline::tests::json_insert_with_trailing_comma ... ok [INFO] [stdout] test regression::baseline::tests::json_malformed_brace_returns_error ... ok [INFO] [stdout] test regression::baseline::tests::json_nested_regression_object_replaced_correctly ... ok [INFO] [stdout] test regression::baseline::tests::json_no_closing_brace_returns_error ... ok [INFO] [stdout] test regression::baseline::tests::find_json_key_basic ... ok [INFO] [stdout] test regression::baseline::tests::json_replace_existing_regression ... ok [INFO] [stdout] test regression::baseline::tests::json_skips_regression_in_comment ... ok [INFO] [stdout] test regression::baseline::tests::load_invalid_json_returns_error ... ok [INFO] [stdout] test regression::baseline::tests::load_nonexistent_file_returns_error ... ok [INFO] [stdout] test regression::baseline::tests::save_baseline_to_nonexistent_json_config ... ok [INFO] [stdout] test regression::baseline::tests::save_baseline_to_json_config ... ok [INFO] [stdout] test regression::baseline::tests::save_baseline_to_nonexistent_toml_config ... ok [INFO] [stdout] test regression::baseline::tests::toml_content_without_trailing_newline ... ok [INFO] [stdout] test regression::baseline::tests::save_baseline_to_toml_config ... ok [INFO] [stdout] test regression::baseline::tests::toml_insert_into_empty ... ok [INFO] [stdout] test regression::baseline::tests::toml_insert_after_existing_content ... ok [INFO] [stdout] test regression::baseline::tests::toml_replace_existing_section ... ok [INFO] [stdout] test regression::baseline::tests::toml_replace_section_at_end ... ok [INFO] [stdout] test regression::baseline::tests::toml_replace_section_not_at_end ... ok [INFO] [stdout] test regression::counts::tests::baseline_json_with_unknown_check_fields_deserializes ... ok [INFO] [stdout] test regression::counts::tests::baseline_without_check_section ... ok [INFO] [stdout] test regression::counts::tests::baseline_without_dupes_section ... ok [INFO] [stdout] test regression::counts::tests::baseline_without_git_sha ... ok [INFO] [stdout] test regression::counts::tests::check_counts_from_results ... ok [INFO] [stdout] test regression::counts::tests::check_counts_config_roundtrip ... ok [INFO] [stdout] test regression::counts::tests::deltas_all_categories_changed ... ok [INFO] [stdout] test regression::counts::tests::deltas_empty_when_identical ... ok [INFO] [stdout] test regression::counts::tests::deltas_mixed_increase_decrease ... ok [INFO] [stdout] test regression::counts::tests::deltas_reports_changes_only ... ok [INFO] [stdout] test regression::counts::tests::dupes_counts_default_fields ... ok [INFO] [stdout] test regression::counts::tests::dupes_counts_roundtrip ... ok [INFO] [stdout] test regression::counts::tests::regression_baseline_roundtrip ... ok [INFO] [stdout] test regression::outcome::tests::exceeded_outcome_json ... ok [INFO] [stdout] test regression::outcome::tests::exceeded_outcome_json_absolute ... ok [INFO] [stdout] test regression::outcome::tests::pass_outcome_json ... ok [INFO] [stdout] test regression::outcome::tests::pass_outcome_json_with_improvement ... ok [INFO] [stdout] test regression::outcome::tests::print_exceeded_outcome_absolute_does_not_panic ... ok [INFO] [stdout] test regression::counts::tests::check_counts_zero_config_roundtrip ... ok [INFO] [stdout] test regression::baseline::tests::save_load_roundtrip ... ok [INFO] [stdout] test regression::outcome::tests::print_exceeded_outcome_does_not_panic ... ok [INFO] [stdout] test regression::outcome::tests::print_exceeded_with_empty_deltas_does_not_panic ... ok [INFO] [stdout] test regression::outcome::tests::print_pass_outcome_does_not_panic ... ok [INFO] [stdout] test regression::baseline::tests::save_load_roundtrip_check_only ... ok [INFO] [stdout] test regression::baseline::tests::save_creates_parent_directories ... ok [INFO] [stdout] test regression::outcome::tests::print_skipped_outcome_does_not_panic ... ok [INFO] [stdout] test regression::outcome::tests::regression_outcome_is_failure ... ok [INFO] [stdout] test regression::outcome::tests::skipped_outcome_json ... ok [INFO] [stdout] test regression::tolerance::tests::absolute_tolerance_allows_within_range ... ok [INFO] [stdout] test regression::tolerance::tests::absolute_tolerance_at_exact_boundary ... ok [INFO] [stdout] test regression::tolerance::tests::decrease_never_exceeds ... ok [INFO] [stdout] test regression::baseline::tests::compare_file_baseline_missing_check_data_returns_error ... ok [INFO] [stdout] test regression::tolerance::tests::parse_decimal_percentage_tolerance ... ok [INFO] [stdout] test regression::tolerance::tests::parse_invalid_percentage ... ok [INFO] [stdout] test regression::tolerance::tests::decrease_never_exceeds_for_all_variants ... ok [INFO] [stdout] test regression::tolerance::tests::equal_values_never_exceed ... ok [INFO] [stdout] test regression::tolerance::tests::parse_absolute_tolerance ... ok [INFO] [stdout] test regression::tolerance::tests::parse_negative_absolute_is_err ... ok [INFO] [stdout] test regression::tolerance::tests::parse_empty_defaults_to_zero ... ok [INFO] [stdout] test regression::tolerance::tests::parse_invalid_absolute ... ok [INFO] [stdout] test regression::tolerance::tests::parse_large_absolute_tolerance ... ok [INFO] [stdout] test regression::tolerance::tests::parse_negative_percentage ... ok [INFO] [stdout] test regression::tolerance::tests::parse_zero_tolerance ... ok [INFO] [stdout] test regression::tolerance::tests::parse_percentage_tolerance ... ok [INFO] [stdout] test regression::tolerance::tests::parse_whitespace_only_defaults_to_zero ... ok [INFO] [stdout] test regression::tolerance::tests::parse_whitespace_padded_percentage ... ok [INFO] [stdout] test regression::tolerance::tests::parse_whitespace_padded_tolerance ... ok [INFO] [stdout] test regression::tolerance::tests::parse_zero_percent_tolerance ... ok [INFO] [stdout] test regression::tolerance::tests::percentage_tolerance_allows_within_range ... ok [INFO] [stdout] test regression::tolerance::tests::percentage_tolerance_large_percentage ... ok [INFO] [stdout] test regression::tolerance::tests::percentage_tolerance_with_small_baseline ... ok [INFO] [stdout] test regression::tolerance::tests::zero_pct_tolerance_detects_any_increase ... ok [INFO] [stdout] test regression::tolerance::tests::zero_tolerance_detects_any_increase ... ok [INFO] [stdout] test report::badge::tests::grade_colors_cover_all_grades ... ok [INFO] [stdout] test report::badge::tests::print_health_badge_no_score ... ok [INFO] [stdout] test regression::tolerance::tests::percentage_tolerance_from_zero_baseline ... ok [INFO] [stdout] test report::badge::tests::print_health_badge_with_score ... ok [INFO] [stdout] test report::badge::tests::render_badge_contains_svg_elements ... ok [INFO] [stdout] test report::badge::tests::render_badge_has_accessibility ... ok [INFO] [stdout] test report::badge::tests::render_badge_unique_ids ... ok [INFO] [stdout] test regression::baseline::tests::compare_with_file_baseline ... ok [INFO] [stdout] test report::badge::tests::render_badge_width_increases_with_longer_text ... ok [INFO] [stdout] test report::badge::tests::text_width_empty_string ... ok [INFO] [stdout] test report::badge::tests::text_width_rounds_to_odd ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_circular_dep_emits_chain_in_description ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_dep_with_zero_line_omits_line_number ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_duplicate_export_one_issue_per_location ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_empty_results_produces_empty_array ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_fingerprints_are_unique ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_issue_has_required_fields ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_paths_are_relative ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_produces_array_of_issues ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_re_export_label_in_description ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_type_only_dep_has_correct_check_name ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_unlisted_dep_one_issue_per_import_site ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_unused_export_has_line_number ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_unused_file_line_defaults_to_1 ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_unused_file_severity_follows_rules ... ok [INFO] [stdout] test report::codeclimate::tests::health_codeclimate_includes_coverage_gaps ... ok [INFO] [stdout] test report::codeclimate::tests::fingerprint_hash_different_inputs_differ ... ok [INFO] [stdout] test report::codeclimate::tests::fingerprint_hash_is_16_hex_chars ... ok [INFO] [stdout] test report::codeclimate::tests::fingerprint_hash_order_matters ... ok [INFO] [stdout] test report::codeclimate::tests::fingerprint_hash_separator_prevents_collision ... ok [INFO] [stdout] test report::codeclimate::tests::health_codeclimate_crap_only_uses_crap_check_name ... ok [INFO] [stdout] test report::codeclimate::tests::health_severity_zero_threshold_returns_minor ... ok [INFO] [stdout] test report::codeclimate::tests::health_severity_1_5x_threshold_returns_minor ... ok [INFO] [stdout] test report::codeclimate::tests::health_severity_above_1_5x_returns_major ... ok [INFO] [stdout] test report::codeclimate::tests::health_severity_above_2_5x_returns_critical ... ok [INFO] [stdout] test report::codeclimate::tests::health_severity_at_2_5x_returns_major ... ok [INFO] [stdout] test report::codeclimate::tests::health_severity_at_threshold_returns_minor ... ok [INFO] [stdout] test report::codeclimate::tests::severity_error_maps_to_major ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_fingerprints_are_deterministic ... ok [INFO] [stdout] test report::codeclimate::tests::severity_off_maps_to_minor ... ok [INFO] [stdout] test report::codeclimate::tests::severity_warn_maps_to_minor ... ok [INFO] [stdout] test report::compact::tests::compact_all_issue_types_produce_lines ... ok [INFO] [stdout] test report::compact::tests::compact_circular_dependency_closes_cycle ... ok [INFO] [stdout] test report::compact::tests::compact_circular_dependency_format ... ok [INFO] [stdout] test report::compact::tests::compact_duplicate_export_format ... ok [INFO] [stdout] test report::compact::tests::compact_empty_results_no_lines ... ok [INFO] [stdout] test report::compact::tests::compact_health_includes_production_coverage_lines ... ok [INFO] [stdout] test report::compact::tests::compact_multiple_unused_files ... ok [INFO] [stdout] test report::compact::tests::compact_ordering_optional_dep_between_devdep_and_enum ... ok [INFO] [stdout] test report::compact::tests::compact_path_outside_root_preserved ... ok [INFO] [stdout] test report::compact::tests::compact_re_export_tagged_correctly ... ok [INFO] [stdout] test report::compact::tests::compact_strips_root_prefix_from_paths ... ok [INFO] [stdout] test report::compact::tests::compact_type_only_dep_format ... ok [INFO] [stdout] test report::compact::tests::compact_type_re_export_tagged_correctly ... ok [INFO] [stdout] test report::compact::tests::compact_unlisted_dep_format ... ok [INFO] [stdout] test report::compact::tests::compact_unused_export_format ... ok [INFO] [stdout] test report::compact::tests::compact_unused_class_member_format ... ok [INFO] [stdout] test report::compact::tests::compact_unused_dep_format ... ok [INFO] [stdout] test report::compact::tests::compact_unused_devdep_format ... ok [INFO] [stdout] test report::compact::tests::compact_unused_enum_member_format ... ok [INFO] [stdout] test report::compact::tests::compact_unresolved_import_format ... ok [INFO] [stdout] test report::compact::tests::compact_unused_file_format ... ok [INFO] [stdout] test report::compact::tests::compact_unused_optional_dep_format ... ok [INFO] [stdout] test report::compact::tests::compact_unused_type_format ... ok [INFO] [stdout] test report::grouping::tests::boundary_violations_grouped_by_from_path ... ok [INFO] [stdout] test report::grouping::tests::circular_dep_empty_files_goes_to_unowned ... ok [INFO] [stdout] test report::grouping::tests::circular_dep_uses_first_file ... ok [INFO] [stdout] test report::grouping::tests::directory_mode_groups_by_first_path_component ... ok [INFO] [stdout] test report::grouping::tests::directory_mode_groups_have_no_owners_metadata ... ok [INFO] [stdout] test report::grouping::tests::duplicate_exports_empty_locations_goes_to_unowned ... ok [INFO] [stdout] test report::grouping::tests::empty_results_returns_empty_vec ... ok [INFO] [stdout] test report::grouping::tests::group_test_only_deps ... ok [INFO] [stdout] test report::grouping::tests::group_type_only_deps ... ok [INFO] [stdout] test report::grouping::tests::group_unresolved_imports ... ok [INFO] [stdout] test report::grouping::tests::group_unused_class_members ... ok [INFO] [stdout] test report::grouping::tests::group_unused_enum_members ... ok [INFO] [stdout] test report::grouping::tests::group_unused_optional_deps ... ok [INFO] [stdout] test report::grouping::tests::mode_label_directory ... ok [INFO] [stdout] test report::grouping::tests::mode_label_package ... ok [INFO] [stdout] test report::grouping::tests::mode_label_section ... ok [INFO] [stdout] test report::grouping::tests::multiple_groups_split_by_directory ... ok [INFO] [stdout] test report::grouping::tests::owner_mode_unmatched_goes_to_unowned ... ok [INFO] [stdout] test report::grouping::tests::package_mode_groups_by_workspace ... ok [INFO] [stdout] test report::grouping::tests::package_resolver_matches_longest_prefix ... ok [INFO] [stdout] test report::grouping::tests::package_resolver_root_fallback ... ok [INFO] [stdout] test report::grouping::tests::resolve_owner_returns_codeowner ... ok [INFO] [stdout] test report::grouping::tests::resolve_owner_returns_directory ... ok [INFO] [stdout] test report::grouping::tests::resolve_with_rule_directory_mode_no_rule ... ok [INFO] [stdout] test report::grouping::tests::resolve_with_rule_package_mode_no_rule ... ok [INFO] [stdout] test report::grouping::tests::section_mode_unmatched_goes_to_unowned ... ok [INFO] [stdout] test report::grouping::tests::section_mode_groups_distinct_sections_with_shared_owners ... ok [INFO] [stdout] test report::grouping::tests::sort_order_descending_by_total_issues ... ok [INFO] [stdout] test report::grouping::tests::owner_mode_groups_by_codeowners_owner ... ok [INFO] [stdout] test report::grouping::tests::unlisted_dep_empty_imported_from_goes_to_unowned ... ok [INFO] [stdout] test report::grouping::tests::unlisted_dep_with_import_site_goes_to_directory ... ok [INFO] [stdout] test report::grouping::tests::unowned_sorts_last_regardless_of_count ... ok [INFO] [stdout] test report::grouping::tests::section_mode_pre_section_rule_goes_to_no_section ... ok [INFO] [stdout] test report::human::check::tests::all_issue_types_produce_output_lines ... ok [INFO] [stdout] test report::human::check::tests::circular_deps_grouped_by_hub ... ok [INFO] [stdout] test report::human::check::tests::circular_dependencies_show_cycle_with_arrow_and_repeat ... ok [INFO] [stdout] test report::human::check::tests::deeply_nested_paths_display_correctly ... ok [INFO] [stdout] test report::human::check::tests::duplicate_exports_show_name_and_locations ... ok [INFO] [stdout] test report::human::check::tests::each_section_ends_with_empty_line_separator ... ok [INFO] [stdout] test report::human::check::tests::empty_results_produce_no_lines ... ok [INFO] [stdout] test report::human::check::tests::empty_sections_are_omitted ... ok [INFO] [stdout] test report::human::check::tests::flat_section_truncates_at_max ... ok [INFO] [stdout] test report::human::check::tests::grouped_exports_from_different_files_sorted_by_path ... ok [INFO] [stdout] test report::human::check::tests::grouped_items_from_same_file_share_one_file_header ... ok [INFO] [stdout] test report::human::check::tests::non_re_exports_have_no_tag ... ok [INFO] [stdout] test report::human::check::tests::off_severity_still_shows_section_when_items_present ... ok [INFO] [stdout] test report::grouping::tests::sort_order_alphabetical_tiebreaker ... ok [INFO] [stdout] test report::human::check::tests::re_exports_are_tagged ... ok [INFO] [stdout] test report::human::check::tests::section_footer_contains_docs_link ... ok [INFO] [stdout] test report::human::check::tests::section_header_formats_for_all_levels ... ok [INFO] [stdout] test report::human::check::tests::section_header_shows_correct_count_for_multiple_items ... ok [INFO] [stdout] test report::human::check::tests::section_header_uses_bullet_indicator ... ok [INFO] [stdout] test report::human::check::tests::section_headers_contain_title_and_count ... ok [INFO] [stdout] test report::human::check::tests::summary_footer_singularizes_pre_pluralized_labels_for_count_1 ... ok [INFO] [stdout] test report::human::check::tests::summary_footer_uses_short_labels ... ok [INFO] [stdout] test report::human::check::tests::unlisted_deps_show_package_name ... ok [INFO] [stdout] test report::human::check::tests::top_flag_limits_unused_files_shown ... ok [INFO] [stdout] test report::human::check::tests::type_only_deps_section_title_includes_suggestion ... ok [INFO] [stdout] test report::human::check::tests::unused_deps_at_root_show_package_name_only ... ok [INFO] [stdout] test report::human::check::tests::unresolved_imports_show_specifier_and_line ... ok [INFO] [stdout] test report::human::check::tests::unused_class_members_show_parent_dot_member ... ok [INFO] [stdout] test report::human::check::tests::unused_deps_in_workspace_show_workspace_path ... ok [INFO] [stdout] test report::human::check::tests::unused_enum_members_show_parent_dot_member ... ok [INFO] [stdout] test report::human::check::tests::unused_exports_grouped_by_file_with_line_and_name ... ok [INFO] [stdout] test report::human::cross_ref::tests::cross_reference_empty_findings_produces_header_and_blanks ... ok [INFO] [stdout] test report::human::check::tests::unused_files_show_relative_paths ... ok [INFO] [stdout] test report::human::check::tests::warn_severity_produces_header_with_bullet ... ok [INFO] [stdout] test report::human::dupes::tests::duplication_empty_report_produces_no_output ... ok [INFO] [stdout] test report::grouping::tests::resolve_with_rule_owner_mode_with_match ... ok [INFO] [stdout] test report::human::dupes::tests::duplication_groups_show_instances_with_line_count ... ok [INFO] [stdout] test report::human::dupes::tests::duplication_multiple_groups_plural ... ok [INFO] [stdout] test report::grouping::tests::resolve_with_rule_owner_mode_no_match ... ok [INFO] [stdout] test report::human::dupes::tests::duplication_single_instance_no_plural ... ok [INFO] [stdout] test report::human::dupes::tests::duplication_single_group_family_is_suppressed ... ok [INFO] [stdout] test report::human::cross_ref::tests::cross_reference_unused_export_reason ... ok [INFO] [stdout] test report::human::cross_ref::tests::cross_reference_unused_type_reason ... ok [INFO] [stdout] test report::human::dupes::tests::duplication_suggestion_with_zero_savings_omits_savings_text ... ok [INFO] [stdout] test report::human::dupes::tests::duplication_families_show_suggestions ... ok [INFO] [stdout] test report::human::dupes::tests::mirrored_dirs_below_threshold_not_detected ... ok [INFO] [stdout] test report::human::dupes::tests::mirrored_dirs_detected ... ok [INFO] [stdout] test report::human::dupes::tests::single_instance_clone_group_no_connectors ... ok [INFO] [stdout] test report::human::health::tests::all_sections_combined ... ok [INFO] [stdout] test report::human::health::tests::completely_empty_report_produces_no_lines ... ok [INFO] [stdout] test report::human::health::tests::file_scores_docs_link ... ok [INFO] [stdout] test report::human::health::tests::file_scores_mi_color_thresholds ... ok [INFO] [stdout] test report::human::health::tests::file_scores_single_entry ... ok [INFO] [stdout] test report::human::health::tests::file_scores_truncation_above_max_flat_items ... ok [INFO] [stdout] test report::human::health::tests::finding_only_cognitive_exceeds ... ok [INFO] [stdout] test report::human::health::tests::finding_only_cyclomatic_exceeds ... ok [INFO] [stdout] test report::human::health::tests::findings_across_multiple_files ... ok [INFO] [stdout] test report::human::health::tests::findings_docs_link ... ok [INFO] [stdout] test report::human::health::tests::fmt_trend_delta_integer_when_round ... ok [INFO] [stdout] test report::human::health::tests::fmt_trend_delta_percentage ... ok [INFO] [stdout] test report::human::health::tests::fmt_trend_val_percentage ... ok [INFO] [stdout] test report::human::health::tests::fmt_trend_val_integer_when_round ... ok [INFO] [stdout] test report::human::health::tests::fmt_trend_val_decimal_when_fractional ... ok [INFO] [stdout] test report::human::health::tests::format_window_labels ... ok [INFO] [stdout] test report::human::health::tests::health_coverage_gaps_render_section ... ok [INFO] [stdout] test report::human::health::tests::health_empty_findings_produces_no_header ... ok [INFO] [stdout] test report::human::health::tests::fmt_trend_delta_decimal_when_fractional ... ok [INFO] [stdout] test report::human::health::tests::health_findings_grouped_by_file ... ok [INFO] [stdout] test report::human::health::tests::health_production_coverage_short_capture_shows_warning_and_prompt ... ok [INFO] [stdout] test report::human::health::tests::health_production_coverage_long_capture_shows_neither_warning_nor_prompt ... ok [INFO] [stdout] test report::human::health::tests::health_production_coverage_renders_section ... ok [INFO] [stdout] test report::human::health::tests::health_findings_show_function_details ... ok [INFO] [stdout] test report::human::health::tests::health_score_grade_a_display ... ok [INFO] [stdout] test report::human::health::tests::health_score_grade_b_display ... ok [INFO] [stdout] test report::human::health::tests::health_score_grade_c_display ... ok [INFO] [stdout] test report::human::health::tests::health_score_grade_f_display ... ok [INFO] [stdout] test report::human::health::tests::health_score_no_na_when_all_present ... ok [INFO] [stdout] test report::human::health::tests::health_score_zero_penalties_suppressed ... ok [INFO] [stdout] test report::human::health::tests::health_shown_vs_total_when_truncated ... ok [INFO] [stdout] test report::human::health::tests::health_trend_all_stable_collapsed ... ok [INFO] [stdout] test report::human::health::tests::health_trend_declining_display ... ok [INFO] [stdout] test report::human::health::tests::health_score_na_components_shown ... ok [INFO] [stdout] test report::human::health::tests::health_trend_improving_display ... ok [INFO] [stdout] test report::human::health::tests::health_trend_without_sha ... ok [INFO] [stdout] test report::human::health::tests::hotspot_score_high_medium_low ... ok [INFO] [stdout] test report::human::health::tests::hotspots_accelerating_trend ... ok [INFO] [stdout] test report::human::health::tests::hotspots_cooling_trend ... ok [INFO] [stdout] test report::human::health::tests::hotspots_docs_link ... ok [INFO] [stdout] test report::human::health::tests::hotspots_stable_trend ... ok [INFO] [stdout] test report::human::health::tests::hotspots_summary_no_exclusions ... ok [INFO] [stdout] test report::human::health::tests::hotspots_with_summary_and_since ... ok [INFO] [stdout] test report::human::health::tests::refactoring_targets_all_categories ... ok [INFO] [stdout] test report::human::health::tests::refactoring_targets_docs_link ... ok [INFO] [stdout] test report::human::health::tests::refactoring_targets_efficiency_color_thresholds ... ok [INFO] [stdout] test report::human::health::tests::refactoring_targets_mixed_effort ... ok [INFO] [stdout] test report::human::health::tests::refactoring_targets_single_low_effort ... ok [INFO] [stdout] test report::human::health::tests::refactoring_targets_truncation_above_max_flat_items ... ok [INFO] [stdout] test report::human::health::tests::vital_signs_optional_fields_omitted_when_none ... ok [INFO] [stdout] test report::human::health::tests::vital_signs_plural_vs_singular ... ok [INFO] [stdout] test report::human::health::tests::vital_signs_shown_without_trend ... ok [INFO] [stdout] test report::human::health::tests::vital_signs_suppressed_when_trend_active ... ok [INFO] [stdout] test report::human::health::tests::vital_signs_zero_counts_suppressed ... ok [INFO] [stdout] test report::human::perf::tests::performance_output_contains_all_pipeline_stages ... ok [INFO] [stdout] test report::human::perf::tests::performance_output_omits_cache_detail_when_no_cache_hits ... ok [INFO] [stdout] test report::human::perf::tests::performance_output_shows_cache_detail_when_cache_hits_nonzero ... ok [INFO] [stdout] test report::human::tests::format_path_no_directory ... ok [INFO] [stdout] test report::human::tests::section_header_uses_bullet_indicator ... ok [INFO] [stdout] test report::human::tests::format_path_with_directory ... ok [INFO] [stdout] test report::human::tests::section_header_formats_for_all_levels ... ok [INFO] [stdout] test report::human::tests::strip_ansi_handles_empty_string ... ok [INFO] [stdout] test report::human::tests::strip_ansi_preserves_plain_text ... ok [INFO] [stdout] test report::human::tests::strip_ansi_removes_color_codes ... ok [INFO] [stdout] test report::human::tests::thousands_boundary ... ok [INFO] [stdout] test report::human::tests::thousands_irregular ... ok [INFO] [stdout] test report::human::tests::thousands_large ... ok [INFO] [stdout] test report::human::tests::thousands_zero ... ok [INFO] [stdout] test report::json::tests::build_json_envelope_non_object_report ... ok [INFO] [stdout] test report::json::tests::build_json_envelope_metadata_appears_first ... ok [INFO] [stdout] test report::json::tests::clone_family_has_actions ... ok [INFO] [stdout] test report::json::tests::clone_group_has_actions ... ok [INFO] [stdout] test report::json::tests::build_json_envelope_has_metadata_fields ... ok [INFO] [stdout] test report::json::tests::codeowners_pattern_for_root_file ... ok [INFO] [stdout] test report::json::tests::codeowners_pattern_normalizes_backslashes ... ok [INFO] [stdout] test report::json::tests::codeowners_pattern_uses_deepest_directory ... ok [INFO] [stdout] test report::json::tests::dupes_empty_results_no_actions ... ok [INFO] [stdout] test report::json::tests::health_finding_has_actions ... ok [INFO] [stdout] test report::json::tests::health_finding_suppress_has_placement ... ok [INFO] [stdout] test report::json::tests::health_json_includes_production_coverage_with_relative_paths_and_actions ... ok [INFO] [stdout] test report::json::tests::hotspot_drift_emits_action ... ok [INFO] [stdout] test report::json::tests::hotspot_has_actions ... ok [INFO] [stdout] test report::json::tests::hotspot_low_bus_factor_emits_action ... ok [INFO] [stdout] test report::json::tests::hotspot_unowned_emits_action_with_pattern ... ok [INFO] [stdout] test report::json::tests::hotspot_unowned_skipped_when_codeowners_missing ... ok [INFO] [stdout] test report::json::tests::insert_meta_adds_key_to_object ... ok [INFO] [stdout] test report::grouping::tests::mode_label_owner ... ok [INFO] [stdout] test report::json::tests::insert_meta_noop_on_non_object ... ok [INFO] [stdout] test report::json::tests::insert_meta_overwrites_existing_meta ... ok [INFO] [stdout] test report::json::tests::json_all_issue_type_arrays_present_in_empty_results ... ok [INFO] [stdout] test report::human::tests::thousands_small ... ok [INFO] [stdout] test report::json::tests::json_all_issue_types_have_actions ... ok [INFO] [stdout] test report::json::tests::json_duplicate_export_contains_locations ... ok [INFO] [stdout] test report::json::tests::json_elapsed_ms_large_duration ... ok [INFO] [stdout] test report::json::tests::json_elapsed_ms_sub_millisecond_truncated ... ok [INFO] [stdout] test report::json::tests::json_empty_results_have_no_actions_in_empty_arrays ... ok [INFO] [stdout] test report::json::tests::json_empty_results_produce_valid_structure ... ok [INFO] [stdout] test report::json::tests::json_elapsed_ms_zero_duration ... ok [INFO] [stdout] test report::json::tests::json_empty_results_round_trips_through_string ... ok [INFO] [stdout] test report::grouping::tests::single_group_all_same_directory ... ok [INFO] [stdout] test report::json::tests::json_full_sample_no_absolute_paths_in_output ... ok [INFO] [stdout] test report::human::check::tests::grouped_section_truncates_files ... ok [INFO] [stdout] test report::json::tests::json_full_sample_results_total_issues_correct ... ok [INFO] [stdout] test report::json::tests::json_metadata_fields_appear_first ... ok [INFO] [stdout] test report::json::tests::json_multiple_unused_files ... ok [INFO] [stdout] test report::json::tests::json_output_has_metadata_fields ... ok [INFO] [stdout] test report::json::tests::json_output_includes_issue_arrays ... ok [INFO] [stdout] test report::json::tests::json_output_is_deterministic ... ok [INFO] [stdout] test report::json::tests::json_path_outside_root_not_stripped ... ok [INFO] [stdout] test report::json::tests::json_paths_are_relative_to_root ... ok [INFO] [stdout] test report::json::tests::json_re_export_flagged_correctly ... ok [INFO] [stdout] test report::json::tests::json_schema_version_is_4 ... ok [INFO] [stdout] test report::json::tests::json_strips_root_from_duplicate_export_locations ... ok [INFO] [stdout] test report::json::tests::json_strips_root_from_circular_dependency_files ... ok [INFO] [stdout] test report::json::tests::json_strips_root_from_nested_locations ... ok [INFO] [stdout] test report::json::tests::json_total_issues_matches_results ... ok [INFO] [stdout] test report::json::tests::json_type_only_dependency_contains_expected_fields ... ok [INFO] [stdout] test report::json::tests::json_unlisted_dependency_contains_import_sites ... ok [INFO] [stdout] test report::json::tests::json_unresolved_import_contains_expected_fields ... ok [INFO] [stdout] test report::json::tests::json_unused_class_member_contains_expected_fields ... ok [INFO] [stdout] test report::json::tests::json_unused_dependency_contains_expected_fields ... ok [INFO] [stdout] test report::json::tests::json_serializes_to_valid_json ... ok [INFO] [stdout] test report::json::tests::json_unused_dependency_has_config_suppress_with_package_name ... ok [INFO] [stdout] test report::json::tests::json_unused_dev_dependency_contains_expected_fields ... ok [INFO] [stdout] test report::json::tests::json_unused_enum_member_contains_expected_fields ... ok [INFO] [stdout] test report::json::tests::json_unused_export_contains_expected_fields ... ok [INFO] [stdout] test report::json::tests::json_unused_export_has_actions ... ok [INFO] [stdout] test report::json::tests::json_unused_file_contains_path ... ok [INFO] [stdout] test report::json::tests::json_unused_file_has_file_suppress_and_note ... ok [INFO] [stdout] test report::json::tests::json_unused_member_kind_serialized ... ok [INFO] [stdout] test report::json::tests::json_version_matches_cargo_pkg_version ... ok [INFO] [stdout] test report::json::tests::json_unused_optional_dependency_contains_expected_fields ... ok [INFO] [stdout] test report::json::tests::json_unused_type_contains_expected_fields ... ok [INFO] [stdout] test report::json::tests::strip_root_prefix_deeply_nested_array_of_objects ... ok [INFO] [stdout] test report::json::tests::refactoring_target_has_actions ... ok [INFO] [stdout] test report::json::tests::refactoring_target_without_evidence_has_no_suppress ... ok [INFO] [stdout] test report::json::tests::strip_root_prefix_empty_string ... ok [INFO] [stdout] test report::json::tests::strip_root_prefix_leaves_non_matching_string ... ok [INFO] [stdout] test report::json::tests::strip_root_prefix_handles_empty_string_after_strip ... ok [INFO] [stdout] test report::json::tests::strip_root_prefix_normalizes_windows_separators ... ok [INFO] [stdout] test report::json::tests::strip_root_prefix_leaves_numbers_and_booleans ... ok [INFO] [stdout] test report::json::tests::strip_root_prefix_mixed_types ... ok [INFO] [stdout] test report::json::tests::strip_root_prefix_null_unchanged ... ok [INFO] [stdout] test report::json::tests::strip_root_prefix_on_string_value ... ok [INFO] [stdout] test report::json::tests::strip_root_prefix_recurses_into_arrays ... ok [INFO] [stdout] test report::json::tests::strip_root_prefix_recurses_into_nested_objects ... ok [INFO] [stdout] test report::markdown::tests::duplication_markdown_contains_families ... ok [INFO] [stdout] test report::markdown::tests::duplication_markdown_contains_groups ... ok [INFO] [stdout] test report::markdown::tests::duplication_markdown_empty ... ok [INFO] [stdout] test report::markdown::tests::duplication_markdown_single_group_no_plural ... ok [INFO] [stdout] test report::markdown::tests::duplication_markdown_zero_savings_no_suffix ... ok [INFO] [stdout] test report::markdown::tests::escape_backticks_handles_multiple ... ok [INFO] [stdout] test report::markdown::tests::escape_backticks_no_backticks_unchanged ... ok [INFO] [stdout] test report::markdown::tests::health_markdown_crap_column_shows_score_and_marker ... ok [INFO] [stdout] test report::markdown::tests::health_markdown_empty_no_findings ... ok [INFO] [stdout] test report::markdown::tests::health_markdown_hotspots_no_excluded_message ... ok [INFO] [stdout] test report::markdown::tests::health_markdown_file_scores_table ... ok [INFO] [stdout] test report::markdown::tests::health_markdown_no_marker_when_below_threshold ... ok [INFO] [stdout] test report::markdown::tests::health_markdown_hotspots_table ... ok [INFO] [stdout] test report::markdown::tests::health_markdown_metric_legend_with_scores ... ok [INFO] [stdout] test report::markdown::tests::health_markdown_vital_signs_table ... ok [INFO] [stdout] test report::markdown::tests::health_markdown_table_format ... ok [INFO] [stdout] test report::markdown::tests::health_markdown_truncated_findings_shown_count ... ok [INFO] [stdout] test report::markdown::tests::health_markdown_with_coverage_gaps ... ok [INFO] [stdout] test report::markdown::tests::health_markdown_with_targets ... ok [INFO] [stdout] test report::markdown::tests::markdown_circular_dep_format ... ok [INFO] [stdout] test report::markdown::tests::markdown_contains_all_sections ... ok [INFO] [stdout] test report::markdown::tests::markdown_contains_header_with_count ... ok [INFO] [stdout] test report::markdown::tests::markdown_dep_at_root_no_extra_label ... ok [INFO] [stdout] test report::markdown::tests::markdown_empty_results_no_issues ... ok [INFO] [stdout] test report::markdown::tests::markdown_dep_in_workspace_shows_package_label ... ok [INFO] [stdout] test report::markdown::tests::markdown_escapes_backticks_in_export_names ... ok [INFO] [stdout] test report::markdown::tests::markdown_exports_grouped_by_file ... ok [INFO] [stdout] test report::markdown::tests::markdown_escapes_backticks_in_package_names ... ok [INFO] [stdout] test report::markdown::tests::markdown_single_issue_no_plural ... ok [INFO] [stdout] test report::markdown::tests::markdown_multiple_issues_plural ... ok [INFO] [stdout] test report::markdown::tests::markdown_re_export_tagged ... ok [INFO] [stdout] test report::markdown::tests::markdown_strips_root_prefix ... ok [INFO] [stdout] test report::markdown::tests::markdown_type_only_dep_format ... ok [INFO] [stdout] test report::markdown::tests::markdown_unused_dep_format ... ok [INFO] [stdout] test report::markdown::tests::markdown_unused_export_grouped_by_file ... ok [INFO] [stdout] test report::markdown::tests::markdown_unused_file_format ... ok [INFO] [stdout] test report::markdown::tests::markdown_unused_optional_dep ... ok [INFO] [stdout] test report::sarif::tests::duplication_sarif_structure ... ok [INFO] [stdout] test report::sarif::tests::health_sarif_both_thresholds ... ok [INFO] [stdout] test report::sarif::tests::health_sarif_cognitive_only ... ok [INFO] [stdout] test report::sarif::tests::health_sarif_crap_only_emits_crap_rule ... ok [INFO] [stdout] test report::sarif::tests::health_sarif_cyclomatic_crap_uses_crap_rule ... ok [INFO] [stdout] test report::sarif::tests::health_sarif_cyclomatic_only ... ok [INFO] [stdout] test report::json::tests::codeowners_pattern_two_level_path ... ok [INFO] [stdout] test report::json::tests::health_empty_findings_no_actions ... ok [INFO] [stdout] test report::sarif::tests::health_sarif_empty_no_results ... ok [INFO] [stdout] test report::json::tests::json_results_fields_do_not_shadow_metadata ... ok [INFO] [stdout] test report::sarif::tests::health_sarif_includes_coverage_gaps ... ok [INFO] [stdout] test report::sarif::tests::health_sarif_includes_refactoring_targets ... ok [INFO] [stdout] test report::sarif::tests::sarif_circular_dep_line_zero_skips_region ... ok [INFO] [stdout] test report::sarif::tests::health_sarif_rules_have_full_descriptions ... ok [INFO] [stdout] test report::markdown::tests::markdown_unresolved_import_grouped_by_file ... ok [INFO] [stdout] test report::sarif::tests::sarif_all_issue_types_produce_results ... ok [INFO] [stdout] test report::sarif::tests::sarif_circular_dep_line_nonzero_has_region ... ok [INFO] [stdout] test report::sarif::tests::sarif_class_member_message_format ... ok [INFO] [stdout] test report::sarif::tests::sarif_declares_all_rules ... ok [INFO] [stdout] test report::sarif::tests::sarif_dependency_issues_point_to_package_json ... ok [INFO] [stdout] test report::sarif::tests::sarif_dependency_line_nonzero_has_region ... ok [INFO] [stdout] test report::sarif::tests::sarif_enum_member_message_format ... ok [INFO] [stdout] test report::sarif::tests::sarif_dependency_line_zero_skips_region ... ok [INFO] [stdout] test report::sarif::tests::sarif_has_tool_driver_info ... ok [INFO] [stdout] test report::sarif::tests::sarif_empty_results_no_results_entries ... ok [INFO] [stdout] test report::sarif::tests::sarif_has_required_top_level_fields ... ok [INFO] [stdout] test report::sarif::tests::sarif_result_with_region_includes_region ... ok [INFO] [stdout] test report::sarif::tests::sarif_rule_known_id_has_full_description ... ok [INFO] [stdout] test report::sarif::tests::sarif_rule_unknown_id_uses_fallback ... ok [INFO] [stdout] test report::sarif::tests::sarif_non_re_export_has_no_properties ... ok [INFO] [stdout] test report::sarif::tests::sarif_result_no_region_omits_region_key ... ok [INFO] [stdout] test report::sarif::tests::sarif_type_only_dep_line_zero_skips_region ... ok [INFO] [stdout] test report::sarif::tests::sarif_duplicate_export_emits_one_result_per_location ... ok [INFO] [stdout] test report::sarif::tests::sarif_unlisted_dep_multiple_import_sites ... ok [INFO] [stdout] test report::sarif::tests::sarif_unlisted_dep_no_import_sites ... ok [INFO] [stdout] test report::sarif::tests::sarif_re_export_has_properties ... ok [INFO] [stdout] test report::sarif::tests::sarif_unlisted_dependency_points_to_import_site ... ok [INFO] [stdout] test report::sarif::tests::sarif_unresolved_import_is_error_level ... ok [INFO] [stdout] test report::sarif::tests::sarif_type_re_export_message ... ok [INFO] [stdout] test report::sarif::tests::sarif_serializes_to_valid_json ... ok [INFO] [stdout] test report::sarif::tests::sarif_unused_export_includes_region ... ok [INFO] [stdout] test report::sarif::tests::sarif_unused_optional_dependency_result ... ok [INFO] [stdout] test report::sarif::tests::severity_to_sarif_level_error ... ok [INFO] [stdout] test report::sarif::tests::severity_to_sarif_level_off ... ok [INFO] [stdout] test report::sarif::tests::sarif_unused_file_has_no_region ... ok [INFO] [stdout] test report::sarif::tests::sarif_unused_file_result ... ok [INFO] [stdout] test report::tests::elide_common_prefix_empty_base ... ok [INFO] [stdout] test report::sarif::tests::sarif_warn_severity_produces_warning_level ... ok [INFO] [stdout] test report::tests::elide_common_prefix_identical_files ... ok [INFO] [stdout] test report::sarif::tests::severity_to_sarif_level_warn ... ok [INFO] [stdout] test report::tests::elide_common_prefix_both_empty ... ok [INFO] [stdout] test report::tests::elide_common_prefix_identical_paths ... ok [INFO] [stdout] test report::tests::elide_common_prefix_no_dirs ... ok [INFO] [stdout] test report::tests::elide_common_prefix_no_shared ... ok [INFO] [stdout] test report::tests::elide_common_prefix_partial_shared ... ok [INFO] [stdout] test report::tests::elide_common_prefix_same_file_different_extension ... ok [INFO] [stdout] test report::tests::elide_common_prefix_shared_dir ... ok [INFO] [stdout] test report::tests::emit_json_returns_success_for_valid_value ... ok [INFO] [stdout] test report::tests::level_is_copy ... ok [INFO] [stdout] test report::sarif::tests::sarif_file_write_produces_valid_sarif ... ok [INFO] [stdout] test report::tests::normalize_uri_backslashes_replaced ... ok [INFO] [stdout] test report::tests::normalize_uri_catch_all_route ... ok [INFO] [stdout] test report::tests::normalize_uri_empty_string ... ok [INFO] [stdout] test report::tests::elide_common_prefix_deep_monorepo ... ok [INFO] [stdout] test report::tests::normalize_uri_forward_slashes_unchanged ... ok [INFO] [stdout] test report::tests::normalize_uri_multiple_dynamic_segments ... ok [INFO] [stdout] test report::tests::elide_common_prefix_empty_target ... ok [INFO] [stdout] test report::tests::normalize_uri_mixed_slashes ... ok [INFO] [stdout] test report::tests::elide_common_prefix_partial_filename_match_not_stripped ... ok [INFO] [stdout] test report::tests::normalize_uri_optional_catch_all_route ... ok [INFO] [stdout] test report::tests::normalize_uri_path_with_spaces ... ok [INFO] [stdout] test report::tests::plural_one_is_singular ... ok [INFO] [stdout] test report::tests::normalize_uri_only_backslashes ... ok [INFO] [stdout] test report::tests::normalize_uri_no_special_chars ... ok [INFO] [stdout] test report::tests::normalize_uri_single_bracket_pair ... ok [INFO] [stdout] test report::tests::plural_two_is_plural ... ok [INFO] [stdout] test report::tests::plural_zero_is_plural ... ok [INFO] [stdout] test report::tests::plural_large_number ... ok [INFO] [stdout] test report::tests::proptests::plural_singular_only_for_one ... ok [INFO] [stdout] test report::tests::proptests::plural_returns_empty_or_s ... ok [INFO] [stdout] test report::tests::relative_path_at_root_returns_empty_or_file ... ok [INFO] [stdout] test report::tests::relative_path_deeply_nested ... ok [INFO] [stdout] test report::tests::relative_path_identical_paths_returns_empty ... ok [INFO] [stdout] test report::tests::relative_path_partial_name_match_not_stripped ... ok [INFO] [stdout] test report::tests::relative_path_returns_full_path_when_no_prefix ... ok [INFO] [stdout] test report::tests::relative_path_strips_root_prefix ... ok [INFO] [stdout] test report::tests::relative_uri_at_root_file ... ok [INFO] [stdout] test report::tests::relative_uri_combines_stripping_and_encoding ... ok [INFO] [stdout] test report::tests::relative_uri_encodes_brackets ... ok [INFO] [stdout] test report::tests::relative_uri_encodes_nested_dynamic_routes ... ok [INFO] [stdout] test report::tests::relative_uri_no_common_prefix_returns_full ... ok [INFO] [stdout] test report::tests::relative_uri_produces_forward_slash_path ... ok [INFO] [stdout] test report::tests::severity_error_maps_to_level_error ... ok [INFO] [stdout] test report::tests::severity_off_maps_to_level_info ... ok [INFO] [stdout] test report::tests::severity_to_level_is_const_evaluable ... ok [INFO] [stdout] test report::tests::severity_warn_maps_to_level_warn ... ok [INFO] [stdout] test report::tests::split_dir_filename_deeply_nested ... ok [INFO] [stdout] test report::tests::split_dir_filename_empty ... ok [INFO] [stdout] test report::tests::split_dir_filename_no_dir ... ok [INFO] [stdout] test report::tests::split_dir_filename_single_slash ... ok [INFO] [stdout] test report::tests::split_dir_filename_trailing_slash ... ok [INFO] [stdout] test report::tests::split_dir_filename_with_dir ... ok [INFO] [stdout] test report::json::tests::json_check_meta_integrates_correctly ... ok [INFO] [stdout] test report::json::tests::json_circular_dependency_contains_expected_fields ... ok [INFO] [stdout] test report::tests::proptests::split_dir_filename_reconstructs_path ... ok [INFO] [stdout] test report::tests::proptests::normalize_uri_encodes_all_brackets ... ok [INFO] [stdout] test report::tests::proptests::elide_common_prefix_returns_suffix_of_target ... ok [INFO] [stdout] test report::tests::proptests::relative_path_never_panics ... ok [INFO] [stdout] test report::tests::proptests::normalize_uri_no_backslashes ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 663 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.44s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/fallow-e483767b930b1a33) [INFO] [stdout] [INFO] [stdout] running 1565 tests [INFO] [stdout] test api::tests::api_url_respects_env_override_and_default ... ok [INFO] [stdout] test api::tests::refresh_token_stale_hint_points_to_reactivation ... ok [INFO] [stdout] test api::tests::trial_rate_limit_hint_mentions_five_per_hour ... ok [INFO] [stdout] test api::tests::upload_inventory_unauthorized_points_to_api_keys_not_trial ... ok [INFO] [stdout] test api::tests::refresh_invalid_token_hint_points_to_reactivation ... ok [INFO] [stdout] test baseline::tests::baseline_from_results_captures_all_extended_fields ... ok [INFO] [stdout] test api::tests::unknown_code_falls_back_to_backend_message_when_present ... ok [INFO] [stdout] test api::tests::unknown_code_without_message_falls_back_to_raw_body ... ok [INFO] [stdout] test baseline::tests::baseline_keys_are_relative_to_root ... ok [INFO] [stdout] test baseline::tests::baseline_serialization_roundtrip ... ok [INFO] [stdout] test baseline::tests::circular_dep_key_different_files_different_keys ... ok [INFO] [stdout] test baseline::tests::clone_group_key_is_deterministic ... ok [INFO] [stdout] test baseline::tests::circular_dep_key_is_order_independent ... ok [INFO] [stdout] test baseline::tests::clone_group_key_is_sorted ... ok [INFO] [stdout] test baseline::tests::circular_dep_key_three_files_order_independent ... ok [INFO] [stdout] test baseline::tests::boundary_violation_key_format ... ok [INFO] [stdout] test baseline::tests::duplicate_export_key_is_sorted ... ok [INFO] [stdout] test baseline::tests::duplication_baseline_roundtrip ... ok [INFO] [stdout] test baseline::tests::filter_keeps_new_circular_deps ... ok [INFO] [stdout] test baseline::tests::filter_keeps_new_boundary_violations ... ok [INFO] [stdout] test baseline::tests::filter_new_exports_by_file_and_name ... ok [INFO] [stdout] test baseline::tests::filter_new_clone_groups_removes_baseline ... ok [INFO] [stdout] test baseline::tests::health_baseline_empty_keeps_all ... ok [INFO] [stdout] test baseline::tests::filter_keeps_new_issues_not_in_baseline ... ok [INFO] [stdout] test baseline::tests::filter_removes_all_extended_baseline_issues ... ok [INFO] [stdout] test baseline::tests::filter_with_empty_baseline_keeps_all ... ok [INFO] [stdout] test baseline::tests::filter_removes_baseline_issues ... ok [INFO] [stdout] test baseline::tests::filter_new_clone_groups_keeps_new_groups ... ok [INFO] [stdout] test baseline::tests::health_baseline_filters_known_findings ... ok [INFO] [stdout] test baseline::tests::recompute_stats_zero_total_lines ... ok [INFO] [stdout] test check::filtering::tests::filter_changed_files_empty_set_clears_file_scoped_issues ... ok [INFO] [stdout] test baseline::tests::recompute_stats_after_filtering ... ok [INFO] [stdout] test check::filtering::tests::changed_files_error_describe_includes_underlying_reason ... ok [INFO] [stdout] test check::filtering::tests::filter_changed_files_filters_class_members_by_path ... ok [INFO] [stdout] test baseline::tests::health_baseline_roundtrip ... ok [INFO] [stdout] test check::filtering::tests::filter_changed_files_drops_duplicate_exports_below_two ... ok [INFO] [stdout] test check::filtering::tests::filter_changed_files_filters_types_by_path ... ok [INFO] [stdout] test check::filtering::tests::filter_changed_files_filters_enum_members_by_path ... ok [INFO] [stdout] test baseline::tests::baseline_from_results_captures_all_fields ... ok [INFO] [stdout] test api::tests::empty_body_still_produces_minimal_message ... ok [INFO] [stdout] test check::filtering::tests::filter_changed_files_filters_exports_by_path ... ok [INFO] [stdout] test check::filtering::tests::filter_changed_files_filters_unresolved_imports_by_path ... ok [INFO] [stdout] test check::filtering::tests::filter_changed_files_keeps_circular_deps_if_any_file_changed ... ok [INFO] [stdout] test baseline::tests::health_targets_baseline_filters_known ... ok [INFO] [stdout] test check::filtering::tests::filter_changed_files_keeps_duplicate_exports_when_both_changed ... ok [INFO] [stdout] test check::filtering::tests::filter_changed_files_preserves_optional_and_type_only_and_test_only_deps ... ok [INFO] [stdout] test check::filtering::tests::filter_changed_files_removes_unlisted_dep_if_no_importer_changed ... ok [INFO] [stdout] test check::filtering::tests::filter_changed_files_preserves_unused_deps ... ok [INFO] [stdout] test check::filtering::tests::filter_changed_files_keeps_only_changed ... ok [INFO] [stdout] test check::filtering::tests::filter_changed_files_keeps_unlisted_dep_if_importer_changed ... ok [INFO] [stdout] test check::filtering::tests::filter_changed_files_on_empty_results_stays_empty ... ok [INFO] [stdout] test check::filtering::tests::filter_changed_files_removes_circular_deps_if_no_file_changed ... ok [INFO] [stdout] test check::filtering::tests::filter_to_workspace_keeps_circular_dep_if_any_file_in_workspace ... ok [INFO] [stdout] test check::filtering::tests::filter_changed_files_unlisted_dep_with_multiple_importers_keeps_if_any_changed ... ok [INFO] [stdout] test check::filtering::tests::filter_to_workspace_keeps_files_under_ws_root ... ok [INFO] [stdout] test check::filtering::tests::filter_to_workspace_on_empty_results_stays_empty ... ok [INFO] [stdout] test check::filtering::tests::filter_to_workspace_scopes_enum_and_class_members ... ok [INFO] [stdout] test check::filtering::tests::filter_to_workspace_scopes_circular_dependencies ... ok [INFO] [stdout] test check::filtering::tests::filter_to_workspace_scopes_optional_dependencies ... ok [INFO] [stdout] test check::filtering::tests::filter_to_workspace_scopes_exports_and_types ... ok [INFO] [stdout] test check::filtering::tests::filter_to_workspace_scopes_test_only_dependencies ... ok [INFO] [stdout] test check::filtering::tests::filter_to_workspace_scopes_dependencies_to_ws_package_json ... ok [INFO] [stdout] test check::filtering::tests::filter_to_workspace_scopes_unresolved_imports ... ok [INFO] [stdout] test check::filtering::tests::filter_to_workspace_scopes_type_only_dependencies ... ok [INFO] [stdout] test check::filtering::tests::filter_to_workspaces_empty_slice_drops_everything ... ok [INFO] [stdout] test check::filtering::tests::filter_to_workspaces_scopes_deps_to_matched_package_jsons ... ok [INFO] [stdout] test check::filtering::tests::filter_to_workspace_scopes_unlisted_deps_by_importer ... ok [INFO] [stdout] test check::filtering::tests::filter_to_workspaces_unions_multiple_roots ... ok [INFO] [stdout] test check::filtering::tests::format_available_workspaces_does_not_truncate_below_cap ... ok [INFO] [stdout] test check::filtering::tests::find_matches_invalid_glob_after_no_literal_match_errors ... ok [INFO] [stdout] test check::filtering::tests::format_available_workspaces_truncates_when_above_cap ... ok [INFO] [stdout] test check::filtering::tests::split_patterns_separates_positive_and_negative ... ok [INFO] [stdout] test check::filtering::tests::resolve_workspace_scope_neither_flag_returns_none ... ok [INFO] [stdout] test check::filtering::tests::workspaces_containing_any_empty_changed_set_is_no_hits ... ok [INFO] [stdout] test check::filtering::tests::workspaces_containing_any_ignores_root_only_changes ... ok [INFO] [stdout] test check::filtering::tests::workspaces_containing_any_returns_only_hits ... ok [INFO] [stdout] test check::filtering::tests::workspaces_containing_any_single_changed_file_maps_to_one_workspace ... ok [INFO] [stdout] test check::output::tests::handle_trace_output_returns_none_when_no_trace_active ... ok [INFO] [stdout] test check::output::tests::parse_trace_spec_empty_string ... ok [INFO] [stdout] test check::output::tests::parse_trace_spec_colon_only ... ok [INFO] [stdout] test check::output::tests::parse_trace_spec_default_export ... ok [INFO] [stdout] test check::output::tests::parse_trace_spec_multiple_colons_uses_last ... ok [INFO] [stdout] test check::output::tests::parse_trace_spec_nested_path_with_colons ... ok [INFO] [stdout] test check::output::tests::parse_trace_spec_no_colon ... ok [INFO] [stdout] test check::filtering::tests::find_matches_exact_name_short_circuits_glob_metachars ... ok [INFO] [stdout] test check::filtering::tests::resolve_workspace_scope_both_flags_is_error ... ok [INFO] [stdout] test check::filtering::tests::find_matches_glob_against_name_and_path ... ok [INFO] [stdout] test check::output::tests::write_sarif_file_creates_parent_directories ... ok [INFO] [stdout] test check::output::tests::parse_trace_spec_simple ... ok [INFO] [stdout] test check::output::tests::write_sarif_file_creates_output ... ok [INFO] [stdout] test check::rules::tests::apply_rules_all_off_clears_everything ... ok [INFO] [stdout] test check::rules::tests::apply_rules_default_error_preserves_all ... ok [INFO] [stdout] test check::rules::tests::error_severity_with_issues_returns_true ... ok [INFO] [stdout] test check::rules::tests::apply_rules_off_clears_that_issue_type ... ok [INFO] [stdout] test check::rules::tests::has_error_circular_deps_warn_not_detected ... ok [INFO] [stdout] test check::rules::tests::has_error_optional_deps_detected_when_error ... ok [INFO] [stdout] test check::rules::tests::has_error_optional_deps_warn_by_default ... ok [INFO] [stdout] test check::rules::tests::has_error_type_only_deps_detected_when_error ... ok [INFO] [stdout] test check::rules::tests::has_error_type_only_deps_warn_by_default ... ok [INFO] [stdout] test check::rules::tests::apply_rules_with_override_filters_matching_files ... ok [INFO] [stdout] test check::rules::tests::apply_rules_warn_preserves_issues ... ok [INFO] [stdout] test check::rules::tests::apply_rules_with_override_preserves_non_matching_files ... ok [INFO] [stdout] test check::rules::tests::empty_results_no_error_issues ... ok [INFO] [stdout] test check::rules::tests::mixed_severity_returns_true_for_error_with_issues ... ok [INFO] [stdout] test check::rules::tests::has_error_with_override_per_file_resolution ... ok [INFO] [stdout] test check::rules::tests::promote_warns_to_errors_preserves_existing_errors ... ok [INFO] [stdout] test check::rules::tests::off_severity_with_issues_returns_false ... ok [INFO] [stdout] test check::rules::tests::promote_warns_to_errors_mixed_severities ... ok [INFO] [stdout] test check::rules::tests::warn_severity_with_issues_returns_false ... ok [INFO] [stdout] test check::tests::apply_all_filter_types_simultaneously ... ok [INFO] [stdout] test check::tests::apply_boundary_violations_filter ... ok [INFO] [stdout] test check::tests::apply_circular_deps_filter_keeps_only_circular_deps ... ok [INFO] [stdout] test check::tests::apply_multiple_filters_keeps_selected_types ... ok [INFO] [stdout] test check::tests::apply_no_active_filters_preserves_all_results ... ok [INFO] [stdout] test check::tests::apply_unused_deps_clears_optional_and_type_only ... ok [INFO] [stdout] test check::rules::tests::promote_warns_to_errors_preserves_off ... ok [INFO] [stdout] test check::tests::apply_unused_deps_filter_keeps_both_dep_types ... ok [INFO] [stdout] test check::tests::apply_unused_files_filter_keeps_only_unused_files ... ok [INFO] [stdout] test check::rules::tests::promote_warns_to_errors_promotes_all_warns ... ok [INFO] [stdout] test check::rules::tests::has_error_with_override_non_matching_file_still_error ... ok [INFO] [stdout] test check::tests::each_filter_flag_registers_as_active ... ok [INFO] [stdout] test check::tests::no_filters_means_none_active ... ok [INFO] [stdout] test check::tests::single_filter_is_active ... ok [INFO] [stdout] test check::tests::no_trace_options_means_none_active ... ok [INFO] [stdout] test check::tests::trace_export_is_active ... ok [INFO] [stdout] test check::tests::performance_flag_is_active ... ok [INFO] [stdout] test check::tests::trace_dependency_is_active ... ok [INFO] [stdout] test check::tests::trace_file_is_active ... ok [INFO] [stdout] test codeowners::tests::directory_group_monorepo ... ok [INFO] [stdout] test codeowners::tests::discover_nonexistent_root ... ok [INFO] [stdout] test codeowners::tests::directory_group_root_file ... ok [INFO] [stdout] test codeowners::tests::from_file_nonexistent ... ok [INFO] [stdout] test codeowners::tests::directory_group_simple ... ok [INFO] [stdout] test check::rules::tests::has_error_circular_deps_detected ... ok [INFO] [stdout] test check::filtering::tests::filter_to_workspace_drops_duplicate_exports_below_two_locations ... ok [INFO] [stdout] test codeowners::tests::email_owner ... ok [INFO] [stdout] test codeowners::tests::gitlab_inline_owner_overrides_section_default ... ok [INFO] [stdout] test codeowners::tests::gitlab_issue_127_reproduction ... ok [INFO] [stdout] test codeowners::tests::gitlab_negation_last_match_clears_ownership ... ok [INFO] [stdout] test codeowners::tests::gitlab_optional_section_header_skipped ... ok [INFO] [stdout] test codeowners::tests::from_file_real_codeowners ... ok [INFO] [stdout] test codeowners::tests::gitlab_negation_only_clears_when_last_match ... ok [INFO] [stdout] test codeowners::tests::gitlab_negation_owner_and_rule_returns_none ... ok [INFO] [stdout] test codeowners::tests::gitlab_optional_section_with_approval_count_skipped ... ok [INFO] [stdout] test codeowners::tests::gitlab_rules_before_first_section_retain_inline_owners ... ok [INFO] [stdout] test codeowners::tests::gitlab_section_default_owners_inherited ... ok [INFO] [stdout] test codeowners::tests::gitlab_section_defaults_reset_between_sections ... ok [INFO] [stdout] test codeowners::tests::gitlab_section_header_with_approval_count_skipped ... ok [INFO] [stdout] test codeowners::tests::has_sections_true_with_headers ... ok [INFO] [stdout] test codeowners::tests::gitlab_section_header_multiple_default_owners_uses_first ... ok [INFO] [stdout] test codeowners::tests::owner_of_extension_glob ... ok [INFO] [stdout] test codeowners::tests::has_sections_false_without_headers ... ok [INFO] [stdout] test codeowners::tests::owner_and_rule_of_returns_owner_and_pattern ... ok [INFO] [stdout] test codeowners::tests::gitlab_section_header_skipped_as_rule ... ok [INFO] [stdout] test codeowners::tests::owner_of_no_match_returns_none ... ok [INFO] [stdout] test codeowners::tests::parse_empty_content ... ok [INFO] [stdout] test codeowners::tests::owner_of_falls_back_to_catch_all ... ok [INFO] [stdout] test codeowners::tests::owner_of_last_match_wins ... ok [INFO] [stdout] test codeowners::tests::parse_section_header_rejects_malformed ... ok [INFO] [stdout] test codeowners::tests::non_section_bracket_pattern_parses_as_rule ... ok [INFO] [stdout] test codeowners::tests::owner_of_specific_overrides_general ... ok [INFO] [stdout] test codeowners::tests::parse_multi_owner_takes_first ... ok [INFO] [stdout] test codeowners::tests::owner_and_rule_of_no_match ... ok [INFO] [stdout] test codeowners::tests::parse_simple_codeowners ... ok [INFO] [stdout] test codeowners::tests::owner_of_nested_directory ... ok [INFO] [stdout] test codeowners::tests::parse_section_header_variants ... ok [INFO] [stdout] test codeowners::tests::parse_skips_pattern_without_owner ... ok [INFO] [stdout] test codeowners::tests::section_and_owners_of_returns_section_defaults ... ok [INFO] [stdout] test codeowners::tests::section_of_returns_none_for_negation_last_match ... ok [INFO] [stdout] test codeowners::tests::parse_skips_comments_and_blanks ... ok [INFO] [stdout] test codeowners::tests::section_and_owners_of_empty_owners_for_pre_section_rule ... ok [INFO] [stdout] test codeowners::tests::section_and_owners_of_same_owners_distinct_sections ... ok [INFO] [stdout] test codeowners::tests::section_of_returns_named_section ... ok [INFO] [stdout] test codeowners::tests::translate_path_with_slash ... ok [INFO] [stdout] test codeowners::tests::section_of_returns_none_for_unmatched_path ... ok [INFO] [stdout] test codeowners::tests::team_owner ... ok [INFO] [stdout] test codeowners::tests::translate_bare_glob ... ok [INFO] [stdout] test codeowners::tests::translate_directory_pattern ... ok [INFO] [stdout] test codeowners::tests::translate_double_star ... ok [INFO] [stdout] test codeowners::tests::translate_rooted_pattern ... ok [INFO] [stdout] test codeowners::tests::translate_single_file ... ok [INFO] [stdout] test codeowners::tests::translate_rooted_directory ... ok [INFO] [stdout] test config::tests::run_config_no_file_returns_exit_3 ... ok [INFO] [stdout] test config::tests::run_config_path_only_no_file_returns_exit_3 ... ok [INFO] [stdout] test config::tests::run_config_explicit_config_path_is_used_over_discovery ... ok [INFO] [stdout] test config::tests::run_config_path_only_with_file_returns_success ... ok [INFO] [stdout] test config::tests::run_config_with_file_returns_success ... ok [INFO] [stdout] test coverage::tests::detect_framework_recognizes_nuxt_projects ... ok [INFO] [stdout] test coverage::tests::detect_coverage_artifact_finds_nyc_output_istanbul_file ... ok [INFO] [stdout] test codeowners::tests::section_of_returns_some_none_for_pre_section_rule ... ok [INFO] [stdout] test coverage::tests::detect_package_manager_prefers_package_manager_field ... ok [INFO] [stdout] test config::tests::run_config_explicit_config_missing_returns_error ... ok [INFO] [stdout] test coverage::upload_inventory::tests::classify_upload_error_maps_400_payload_too_large_to_dedicated_exit ... ok [INFO] [stdout] test coverage::upload_inventory::tests::classify_upload_error_maps_5xx_to_server_error ... ok [INFO] [stdout] test coverage::upload_inventory::tests::classify_upload_error_maps_auth_codes_to_auth_rejected ... ok [INFO] [stdout] test coverage::tests::recipe_contents_uses_detected_package_manager_scripts ... ok [INFO] [stdout] test coverage::upload_inventory::tests::classify_upload_error_falls_back_to_validation_on_other_400_codes ... ok [INFO] [stdout] test coverage::upload_inventory::tests::count_digits_matches_base10_length ... ok [INFO] [stdout] test coverage::tests::recipe_contents_mentions_upload_inventory_ci_step ... ok [INFO] [stdout] test coverage::tests::recipe_contents_mentions_upload_inventory_without_build_script ... ok [INFO] [stdout] test coverage::upload_inventory::tests::endpoint_url_strips_override_trailing_slash ... ok [INFO] [stdout] test coverage::upload_inventory::tests::display_endpoint_url_uses_override_when_provided ... ok [INFO] [stdout] test coverage::upload_inventory::tests::extension_supported_handles_all_js_ts_variants ... ok [INFO] [stdout] test coverage::upload_inventory::tests::extension_supported_skips_typescript_declaration_files ... ok [INFO] [stdout] test coverage::upload_inventory::tests::extension_supported_still_accepts_non_declaration_ts ... ok [INFO] [stdout] test coverage::upload_inventory::tests::format_bytes_pivots_at_power_of_1024 ... ok [INFO] [stdout] test coverage::upload_inventory::tests::endpoint_url_uses_override_when_provided ... ok [INFO] [stdout] test coverage::upload_inventory::tests::format_count_groups_thousands ... ok [INFO] [stdout] test coverage::upload_inventory::tests::format_upload_error_message_uses_hint_for_known_code ... ok [INFO] [stdout] test coverage::upload_inventory::tests::format_upload_error_message_handles_empty_body ... ok [INFO] [stdout] test coverage::upload_inventory::tests::ignore_upload_errors_does_not_soft_fail_auth_rejection ... ok [INFO] [stdout] test check::rules::tests::apply_rules_off_each_type_individually ... ok [INFO] [stdout] test coverage::upload_inventory::tests::normalize_path_prefix_accepts_absolute_posix ... ok [INFO] [stdout] test coverage::upload_inventory::tests::normalize_path_prefix_none_stays_none ... ok [INFO] [stdout] test coverage::upload_inventory::tests::normalize_path_prefix_rejects_backslash ... ok [INFO] [stdout] test coverage::upload_inventory::tests::normalize_path_prefix_rejects_empty ... ok [INFO] [stdout] test coverage::upload_inventory::tests::normalize_path_prefix_rejects_relative ... ok [INFO] [stdout] test coverage::upload_inventory::tests::parse_git_remote_https_with_dot_git ... ok [INFO] [stdout] test coverage::upload_inventory::tests::normalize_path_prefix_trims_trailing_slash_and_whitespace ... ok [INFO] [stdout] test coverage::upload_inventory::tests::parse_git_remote_https_without_dot_git ... ok [INFO] [stdout] test coverage::upload_inventory::tests::parse_git_remote_nested_group_uses_last_two_segments ... ok [INFO] [stdout] test coverage::upload_inventory::tests::parse_git_remote_ssh_colon_shape ... ok [INFO] [stdout] test coverage::upload_inventory::tests::parse_git_remote_rejects_single_segment ... ok [INFO] [stdout] test coverage::upload_inventory::tests::parse_git_remote_ssh_scheme_shape ... ok [INFO] [stdout] test coverage::upload_inventory::tests::url_encode_path_segment_handles_utf8 ... ok [INFO] [stdout] test coverage::upload_inventory::tests::to_posix_string_normalizes_windows_separators ... ok [INFO] [stdout] test coverage::upload_inventory::tests::url_encode_path_segment_preserves_safe_chars ... ok [INFO] [stdout] test coverage::upload_inventory::tests::validate_project_id_accepts_bare_name ... ok [INFO] [stdout] test coverage::upload_inventory::tests::validate_project_id_accepts_owner_repo ... ok [INFO] [stdout] test coverage::upload_inventory::tests::validate_project_id_rejects_empty ... ok [INFO] [stdout] test coverage::upload_inventory::tests::validate_project_id_rejects_path_traversal ... ok [INFO] [stdout] test dupes::tests::baseline_empty_json_object_uses_defaults ... ok [INFO] [stdout] test dupes::tests::baseline_filters_matching_groups_completely ... ok [INFO] [stdout] test dupes::tests::baseline_keeps_groups_not_in_baseline ... ok [INFO] [stdout] test dupes::tests::baseline_save_load_round_trip ... ok [INFO] [stdout] test dupes::tests::build_config_cross_language_both_false ... ok [INFO] [stdout] test dupes::tests::build_config_cross_language_cli_true_overrides_toml_false ... ok [INFO] [stdout] test dupes::tests::build_config_cross_language_toml_true_with_cli_false ... ok [INFO] [stdout] test dupes::tests::build_config_always_enabled ... ok [INFO] [stdout] test dupes::tests::build_config_ignore_imports_both_false ... ok [INFO] [stdout] test dupes::tests::build_config_ignore_imports_cli_true_overrides_toml_false ... ok [INFO] [stdout] test dupes::tests::build_config_inherits_ignore_from_toml ... ok [INFO] [stdout] test dupes::tests::build_config_ignore_imports_toml_true_with_cli_false ... ok [INFO] [stdout] test dupes::tests::build_config_maps_all_modes ... ok [INFO] [stdout] test dupes::tests::build_config_uses_cli_min_tokens_and_lines ... ok [INFO] [stdout] test dupes::tests::build_config_uses_cli_skip_local ... ok [INFO] [stdout] test dupes::tests::build_config_inherits_normalization_from_toml ... ok [INFO] [stdout] test dupes::tests::build_config_uses_cli_threshold ... ok [INFO] [stdout] test dupes::tests::filter_by_changed_files_empty_changed_set_removes_all ... ok [INFO] [stdout] test dupes::tests::families_rebuilt_after_baseline_filter ... ok [INFO] [stdout] test dupes::tests::filter_by_changed_files_partial_group_retention ... ok [INFO] [stdout] test dupes::tests::filter_by_changed_files_removes_groups_with_no_changed_instances ... ok [INFO] [stdout] test dupes::tests::filter_by_workspaces_drops_group_with_no_instance_under_any_root ... ok [INFO] [stdout] test dupes::tests::filter_by_workspaces_empty_roots_drops_everything ... ok [INFO] [stdout] test dupes::tests::filter_by_changed_files_retains_groups_with_at_least_one_changed_instance ... ok [INFO] [stdout] test dupes::tests::filter_by_workspaces_retains_group_with_instance_under_any_root ... ok [INFO] [stdout] test dupes::tests::filter_by_workspaces_union_of_multiple_roots ... ok [INFO] [stdout] test dupes::tests::parse_trace_spec_empty_line ... ok [INFO] [stdout] test dupes::tests::parse_trace_spec_file_with_colons_in_path ... ok [INFO] [stdout] test dupes::tests::parse_trace_spec_large_line_number ... ok [INFO] [stdout] test dupes::tests::parse_trace_spec_negative_line ... ok [INFO] [stdout] test dupes::tests::parse_trace_spec_no_colon ... ok [INFO] [stdout] test dupes::tests::parse_trace_spec_line_zero ... ok [INFO] [stdout] test dupes::tests::parse_trace_spec_non_numeric_line ... ok [INFO] [stdout] test dupes::tests::parse_trace_spec_windows_path_with_drive ... ok [INFO] [stdout] test dupes::tests::parse_trace_spec_valid ... ok [INFO] [stdout] test dupes::tests::recompute_stats_basic ... ok [INFO] [stdout] test dupes::tests::recompute_stats_computes_all_fields_from_groups ... ok [INFO] [stdout] test dupes::tests::recompute_stats_counts_tokens_per_instance ... ok [INFO] [stdout] test coverage::upload_inventory::tests::extension_supported_rejects_non_js_ts ... ok [INFO] [stdout] test dupes::tests::recompute_stats_deduplicates_overlapping_lines_in_same_file ... ok [INFO] [stdout] test dupes::tests::recompute_stats_empty_report ... ok [INFO] [stdout] test dupes::tests::recompute_stats_zero_total_lines_no_division_by_zero ... ok [INFO] [stdout] test coverage::upload_inventory::tests::format_upload_error_message_falls_back_to_server_message ... ok [INFO] [stdout] test dupes::tests::stats_recomputed_after_changed_since_filter ... ok [INFO] [stdout] test dupes::tests::threshold_exactly_at_boundary ... ok [INFO] [stdout] test dupes::tests::threshold_just_below ... ok [INFO] [stdout] test dupes::tests::threshold_exceeded ... ok [INFO] [stdout] test dupes::tests::threshold_negative_never_fails ... ok [INFO] [stdout] test dupes::tests::threshold_zero_duplication_with_positive_threshold ... ok [INFO] [stdout] test explain::tests::check_docs_url_valid ... ok [INFO] [stdout] test dupes::tests::threshold_zero_never_fails ... ok [INFO] [stdout] test explain::tests::check_meta_docs_url_matches_constant ... ok [INFO] [stdout] test explain::tests::check_meta_has_docs_and_rules ... ok [INFO] [stdout] test explain::tests::check_rules_all_have_docs_path ... ok [INFO] [stdout] test explain::tests::check_rules_all_have_fallow_prefix ... ok [INFO] [stdout] test explain::tests::check_rules_all_have_non_empty_fields ... ok [INFO] [stdout] test explain::tests::check_rules_count ... ok [INFO] [stdout] test explain::tests::check_rules_no_duplicate_ids ... ok [INFO] [stdout] test explain::tests::dupes_docs_url_valid ... ok [INFO] [stdout] test explain::tests::dupes_meta_all_metrics_have_name_and_description ... ok [INFO] [stdout] test explain::tests::dupes_meta_docs_url_matches_constant ... ok [INFO] [stdout] test explain::tests::dupes_meta_has_line_count ... ok [INFO] [stdout] test explain::tests::dupes_meta_has_metrics ... ok [INFO] [stdout] test explain::tests::dupes_rules_all_have_docs_path ... ok [INFO] [stdout] test dupes::tests::threshold_just_above ... ok [INFO] [stdout] test explain::tests::check_meta_rule_has_required_fields ... ok [INFO] [stdout] test explain::tests::dupes_rules_all_have_fallow_prefix ... ok [INFO] [stdout] test explain::tests::dupes_rules_all_have_non_empty_fields ... ok [INFO] [stdout] test explain::tests::health_docs_url_valid ... ok [INFO] [stdout] test explain::tests::dupes_rules_count ... ok [INFO] [stdout] test explain::tests::health_meta_all_metrics_have_name_and_description ... ok [INFO] [stdout] test explain::tests::health_meta_docs_url_matches_constant ... ok [INFO] [stdout] test explain::tests::health_meta_has_all_expected_metrics ... ok [INFO] [stdout] test explain::tests::health_meta_has_metrics ... ok [INFO] [stdout] test explain::tests::health_rules_all_have_docs_path ... ok [INFO] [stdout] test explain::tests::health_rules_all_have_fallow_prefix ... ok [INFO] [stdout] test explain::tests::health_rules_all_have_non_empty_fields ... ok [INFO] [stdout] test explain::tests::health_rules_count ... ok [INFO] [stdout] test explain::tests::rule_by_id_finds_all_check_rules ... ok [INFO] [stdout] test explain::tests::rule_by_id_finds_all_dupes_rules ... ok [INFO] [stdout] test explain::tests::rule_by_id_finds_all_health_rules ... ok [INFO] [stdout] test explain::tests::rule_by_id_finds_check_rule ... ok [INFO] [stdout] test explain::tests::rule_by_id_finds_dupes_rule ... ok [INFO] [stdout] test explain::tests::rule_by_id_finds_health_rule ... ok [INFO] [stdout] test explain::tests::rule_by_id_returns_none_for_unknown ... ok [INFO] [stdout] test explain::tests::rule_docs_url_dupes_rule ... ok [INFO] [stdout] test explain::tests::rule_docs_url_format ... ok [INFO] [stdout] test explain::tests::rule_docs_url_health_rule ... ok [INFO] [stdout] test fix::deps::tests::dependency_fix_dry_run_with_human_output ... ok [INFO] [stdout] test fix::deps::tests::dependency_fix_dry_run_does_not_modify_package_json ... ok [INFO] [stdout] test fix::deps::tests::dependency_fix_dep_not_in_package_json ... ok [INFO] [stdout] test fix::deps::tests::dependency_fix_nonexistent_package_json_skipped ... ok [INFO] [stdout] test fix::deps::tests::dependency_fix_missing_section_skipped ... ok [INFO] [stdout] test fix::deps::tests::dependency_fix_invalid_json_skipped ... ok [INFO] [stdout] test fix::deps::tests::dependency_fix_output_has_trailing_newline ... ok [INFO] [stdout] test fix::deps::tests::dependency_fix_removes_from_multiple_sections ... ok [INFO] [stdout] test fix::deps::tests::dependency_fix_removes_last_dep_leaves_empty_object ... ok [INFO] [stdout] test fix::deps::tests::dependency_fix_removes_dev_dependency ... ok [INFO] [stdout] test fix::enum_members::tests::dry_run_enum_fix_with_human_output ... ok [INFO] [stdout] test fix::deps::tests::dependency_fix_removes_optional_dependency ... ok [INFO] [stdout] test fix::deps::tests::dependency_fix_removes_unused_dep_from_package_json ... ok [INFO] [stdout] test fix::enum_members::tests::enum_fix_dry_run_does_not_modify_file ... ok [INFO] [stdout] test fix::enum_members::tests::enum_fix_handles_members_with_values ... ok [INFO] [stdout] test fix::enum_members::tests::enum_fix_handles_numeric_values ... ok [INFO] [stdout] test fix::enum_members::tests::enum_fix_line_zero_saturating_sub ... ok [INFO] [stdout] test fix::enum_members::tests::enum_fix_nonexistent_file_skipped ... ok [INFO] [stdout] test fix::enum_members::tests::enum_fix_member_with_computed_value ... ok [INFO] [stdout] test fix::enum_members::tests::enum_fix_preserves_crlf_line_endings ... ok [INFO] [stdout] test fix::enum_members::tests::enum_fix_preserves_indentation ... ok [INFO] [stdout] test fix::deps::tests::dependency_fix_empty_results_returns_early ... ok [INFO] [stdout] test fix::enum_members::tests::enum_fix_removes_all_members_leaves_empty_body ... ok [INFO] [stdout] test fix::enum_members::tests::enum_fix_const_enum ... ok [INFO] [stdout] test fix::enum_members::tests::enum_fix_removes_first_member_of_multi_line_enum ... ok [INFO] [stdout] test fix::enum_members::tests::enum_fix_removes_multiple_members_from_same_enum ... ok [INFO] [stdout] test fix::enum_members::tests::enum_fix_removes_last_member_of_multi_line_enum ... ok [INFO] [stdout] test fix::enum_members::tests::enum_fix_removes_single_member_from_multi_member_enum ... ok [INFO] [stdout] test fix::enum_members::tests::enum_fix_returns_relative_path_in_json ... ok [INFO] [stdout] test fix::enum_members::tests::enum_fix_single_line_with_trailing_comma ... ok [INFO] [stdout] test fix::enum_members::tests::enum_fix_single_line_close_before_open ... ok [INFO] [stdout] test fix::enum_members::tests::enum_fix_single_line_no_braces ... ok [INFO] [stdout] test fix::enum_members::tests::enum_fix_skips_line_without_member_name ... ok [INFO] [stdout] test fix::enum_members::tests::enum_fix_skips_out_of_bounds_line ... ok [INFO] [stdout] test fix::enum_members::tests::single_line_remove_first_member ... ok [INFO] [stdout] test fix::enum_members::tests::enum_fix_single_line_removes_all_members ... ok [INFO] [stdout] test fix::enum_members::tests::enum_fix_skips_path_outside_project_root ... ok [INFO] [stdout] test fix::enum_members::tests::single_line_remove_member_preserves_export_keyword ... ok [INFO] [stdout] test fix::enum_members::tests::single_line_remove_member_with_string_value ... ok [INFO] [stdout] test fix::enum_members::tests::single_line_remove_last_member ... ok [INFO] [stdout] test fix::enum_members::tests::single_line_remove_member_with_value ... ok [INFO] [stdout] test fix::enum_members::tests::single_line_remove_only_member ... ok [INFO] [stdout] test fix::enum_members::tests::single_line_remove_middle_member ... ok [INFO] [stdout] test fix::enum_members::tests::enum_fix_single_line_enum ... ok [INFO] [stdout] test fix::enum_members::tests::enum_fix_single_line_with_values ... ok [INFO] [stdout] test fix::exports::tests::dry_run_with_human_output_reports_fixes ... ok [INFO] [stdout] test fix::exports::tests::dry_run_export_fix_does_not_modify_file ... ok [INFO] [stdout] test fix::exports::tests::export_fix_empty_file ... ok [INFO] [stdout] test fix::exports::tests::actual_export_fix_removes_export_keyword ... ok [INFO] [stdout] test fix::exports::tests::export_fix_handles_export_type_list ... ok [INFO] [stdout] test fix::exports::tests::export_fix_handles_export_list_without_from ... ok [INFO] [stdout] test fix::exports::tests::export_fix_line_zero_saturating_sub ... ok [INFO] [stdout] test fix::enum_members::tests::single_line_remove_two_members_sequentially ... ok [INFO] [stdout] test fix::exports::tests::export_fix_handles_multiple_exports_in_same_file ... ok [INFO] [stdout] test fix::exports::tests::export_fix_nonexistent_file_skipped ... ok [INFO] [stdout] test fix::exports::tests::export_fix_deduplicates_same_line ... ok [INFO] [stdout] test fix::exports::tests::export_fix_preserves_indentation ... ok [INFO] [stdout] test fix::exports::tests::export_fix_preserves_crlf_line_endings ... ok [INFO] [stdout] test fix::exports::tests::export_fix_handles_aliased_specifiers ... ok [INFO] [stdout] test fix::exports::tests::export_fix_preserves_tab_indentation ... ok [INFO] [stdout] test fix::exports::tests::export_fix_removes_all_specifiers_deletes_line ... ok [INFO] [stdout] test fix::exports::tests::export_fix_removes_default_from_async_function ... ok [INFO] [stdout] test fix::exports::tests::export_fix_removes_default_from_abstract_class ... ok [INFO] [stdout] test fix::exports::tests::export_fix_removes_default_from_function ... ok [INFO] [stdout] test fix::exports::tests::export_fix_removes_default_from_class ... ok [INFO] [stdout] test fix::exports::tests::export_fix_removes_export_from_enum ... ok [INFO] [stdout] test fix::exports::tests::export_fix_removes_export_from_let ... ok [INFO] [stdout] test fix::exports::tests::export_fix_removes_export_from_const ... ok [INFO] [stdout] test fix::exports::tests::export_fix_removes_export_from_interface ... ok [INFO] [stdout] test fix::exports::tests::export_fix_skips_default_expression_export ... ok [INFO] [stdout] test fix::exports::tests::export_fix_removes_export_from_type_alias ... ok [INFO] [stdout] test fix::exports::tests::export_fix_skips_default_variable_export ... ok [INFO] [stdout] test fix::exports::tests::export_fix_returns_relative_path_in_json ... ok [INFO] [stdout] test fix::exports::tests::export_fix_skips_line_not_starting_with_export ... ok [INFO] [stdout] test fix::exports::tests::export_fix_removes_specifier_from_export_list ... ok [INFO] [stdout] test fix::exports::tests::export_fix_single_specifier_list_deletes_line ... ok [INFO] [stdout] test fix::exports::tests::export_fix_skips_path_outside_project_root ... ok [INFO] [stdout] test fix::exports::tests::export_fix_skips_out_of_bounds_line ... ok [INFO] [stdout] test fix::io::tests::atomic_write_empty_content ... ok [INFO] [stdout] test fix::io::tests::atomic_write_to_nonexistent_dir_fails ... ok [INFO] [stdout] test fix::io::tests::atomic_write_binary_content ... ok [INFO] [stdout] test fix::io::tests::atomic_write_creates_file_with_content ... ok [INFO] [stdout] test fix::io::tests::read_source_detects_crlf_line_ending ... ok [INFO] [stdout] test fix::io::tests::read_source_detects_lf_line_ending ... ok [INFO] [stdout] test fix::io::tests::atomic_write_no_leftover_temp_on_success ... ok [INFO] [stdout] test fix::io::tests::read_source_returns_none_for_nonexistent_file ... ok [INFO] [stdout] test fix::io::tests::read_source_empty_file ... ok [INFO] [stdout] test fix::io::tests::atomic_write_overwrites_existing_file ... ok [INFO] [stdout] test fix::io::tests::read_source_returns_none_for_path_outside_root ... ok [INFO] [stdout] test fix::io::tests::write_fixed_content_empty_lines ... ok [INFO] [stdout] test health::coverage::tests::binary_signing_verify_key_is_32_bytes ... ok [INFO] [stdout] test health::coverage::tests::binary_signing_verify_key_must_not_be_placeholder ... ok [INFO] [stdout] test fix::io::tests::write_fixed_content_no_trailing_newline_when_original_has_none ... ok [INFO] [stdout] test fix::io::tests::write_fixed_content_preserves_trailing_newline ... ok [INFO] [stdout] test fix::io::tests::write_fixed_content_single_line ... ok [INFO] [stdout] test fix::io::tests::write_fixed_content_preserves_crlf_trailing_newline ... ok [INFO] [stdout] test health::coverage::tests::build_request_uses_workspace_root_for_sidecar_project_root ... ok [INFO] [stdout] test health::coverage::tests::detects_istanbul_file_by_name ... ok [INFO] [stdout] test health::coverage::tests::convert_response_round_trips_ids_and_evidence ... ok [INFO] [stdout] test health::coverage::tests::coverage_final_filename_with_v8_shape_still_uses_v8_classification ... ok [INFO] [stdout] test health::coverage::tests::detects_istanbul_file_by_shape_without_canonical_filename ... ok [INFO] [stdout] test health::coverage::tests::directory_with_istanbul_and_v8_files_expands_to_per_file_sources ... ok [INFO] [stdout] test health::coverage::tests::discovers_platform_package_sidecar_before_bin_wrapper ... ok [INFO] [stdout] test health::coverage::tests::discovers_project_local_sidecar_before_global_locations ... ok [INFO] [stdout] test health::coverage::tests::falls_back_to_raw_v8_for_unsupported_source_map_schemes ... ok [INFO] [stdout] test health::coverage::tests::falls_back_to_raw_v8_when_any_function_in_script_cannot_be_remapped ... ok [INFO] [stdout] test health::coverage::tests::keeps_same_line_functions_separate_when_columns_differ ... ok [INFO] [stdout] test health::coverage::tests::preserves_windows_absolute_source_map_sources ... ok [INFO] [stdout] test health::coverage::tests::path_binary_candidates_include_windows_cmd_shims ... ok [INFO] [stdout] test health::coverage::tests::remaps_v8_source_map_cache_into_istanbul_sources ... ok [INFO] [stdout] test health::coverage::tests::remaps_vite_virtual_source_map_sources ... ok [INFO] [stdout] test health::coverage::tests::remaps_webpack_virtual_source_map_sources ... ok [INFO] [stdout] test health::coverage::tests::resolves_yarn_sidecar_without_node_modules_bin ... ok [INFO] [stdout] test health::coverage::tests::verify_sidecar_signature_rejects_missing_sig_file ... ok [INFO] [stdout] test health::coverage::tests::verify_sidecar_signature_rejects_wrong_length_sig ... ok [INFO] [stdout] test health::coverage::tests::resolves_npm_sidecar_from_node_modules_root ... ok [INFO] [stdout] test health::hotspots::tests::excluded_matching_glob ... ok [INFO] [stdout] test health::coverage::tests::production_coverage_module_has_no_network_code ... ok [INFO] [stdout] test health::hotspots::tests::excluded_multiple_globs_first_matches ... ok [INFO] [stdout] test health::hotspots::tests::excluded_multiple_globs_none_matches ... ok [INFO] [stdout] test health::hotspots::tests::excluded_multiple_globs_second_matches ... ok [INFO] [stdout] test health::hotspots::tests::excluded_no_filters ... ok [INFO] [stdout] test health::hotspots::tests::excluded_non_matching_glob ... ok [INFO] [stdout] test health::hotspots::tests::excluded_path_equals_root ... ok [INFO] [stdout] test health::hotspots::tests::excluded_path_outside_root ... ok [INFO] [stdout] test health::hotspots::tests::excluded_workspace_filter_match ... ok [INFO] [stdout] test health::hotspots::tests::excluded_workspace_filter_mismatch ... ok [INFO] [stdout] test health::hotspots::tests::hotspot_score_both_maxima_zero ... ok [INFO] [stdout] test health::hotspots::tests::hotspot_score_equal_normalization ... ok [INFO] [stdout] test health::hotspots::tests::hotspot_score_half_values ... ok [INFO] [stdout] test health::hotspots::tests::hotspot_score_high_churn_low_complexity ... ok [INFO] [stdout] test health::hotspots::tests::hotspot_score_low_churn_high_complexity ... ok [INFO] [stdout] test health::hotspots::tests::hotspot_score_max_density_zero ... ok [INFO] [stdout] test health::hotspots::tests::hotspot_score_max_weighted_zero ... ok [INFO] [stdout] test health::hotspots::tests::hotspot_score_rounding ... ok [INFO] [stdout] test health::hotspots::tests::hotspot_score_very_small_values ... ok [INFO] [stdout] test health::hotspots::tests::hotspot_score_weighted_exceeds_max ... ok [INFO] [stdout] test health::hotspots::tests::normalization_maxima_all_zeros ... ok [INFO] [stdout] test health::hotspots::tests::normalization_maxima_below_min_commits ... ok [INFO] [stdout] test health::hotspots::tests::normalization_maxima_empty_input ... ok [INFO] [stdout] test health::hotspots::tests::normalization_maxima_exactly_at_threshold ... ok [INFO] [stdout] test health::hotspots::tests::normalization_maxima_file_score_without_churn ... ok [INFO] [stdout] test health::hotspots::tests::normalization_maxima_min_commits_zero ... ok [INFO] [stdout] test health::hotspots::tests::normalization_maxima_mixed_above_and_below_threshold ... ok [INFO] [stdout] test health::hotspots::tests::normalization_maxima_multiple_files_picks_max ... ok [INFO] [stdout] test health::hotspots::tests::normalization_maxima_single_file ... ok [INFO] [stdout] test health::ownership::tests::bot_globs_match_default_patterns ... ok [INFO] [stdout] test health::ownership::tests::bus_factor_even_split_three_authors_is_two ... ok [INFO] [stdout] test health::ownership::tests::bus_factor_excludes_bots ... ok [INFO] [stdout] test health::ownership::tests::bus_factor_single_dominant_author_is_one ... ok [INFO] [stdout] test health::ownership::tests::drift_does_not_fire_for_recently_scaffolded_file ... ok [INFO] [stdout] test health::ownership::tests::drift_does_not_fire_when_original_is_top_contributor ... ok [INFO] [stdout] test health::ownership::tests::drift_does_not_fire_when_original_still_active ... ok [INFO] [stdout] test health::ownership::tests::drift_fires_when_original_author_inactive_old_file ... ok [INFO] [stdout] test health::ownership::tests::extract_handle_empty_local_falls_back ... ok [INFO] [stdout] test health::ownership::tests::extract_handle_falls_back_for_no_at ... ok [INFO] [stdout] test health::ownership::tests::extract_handle_keeps_plus_suffix_when_present ... ok [INFO] [stdout] test health::ownership::tests::extract_handle_strips_domain ... ok [INFO] [stdout] test health::ownership::tests::extract_handle_unwraps_github_noreply ... ok [INFO] [stdout] test health::ownership::tests::hash_email_differs_per_input ... ok [INFO] [stdout] test health::ownership::tests::hash_email_is_stable ... ok [INFO] [stdout] test health::ownership::tests::human_github_noreply_is_not_a_bot ... ok [INFO] [stdout] test health::ownership::tests::recent_contributors_takes_top_three_excluding_top ... ok [INFO] [stdout] test health::ownership::tests::render_email_handle_strips_domain ... ok [INFO] [stdout] test health::ownership::tests::render_email_hash_obfuscates ... ok [INFO] [stdout] test health::ownership::tests::render_email_raw_passes_through ... ok [INFO] [stdout] test health::ownership::tests::returns_none_when_no_authors ... ok [INFO] [stdout] test health::hotspots::tests::excluded_workspace_and_glob_combined ... ok [INFO] [stdout] test health::ownership::tests::returns_none_when_only_bot_authors ... ok [INFO] [stdout] test health::coverage::tests::verify_sidecar_signature_rejects_bad_signature ... ok [INFO] [stdout] test health::hotspots::tests::excluded_workspace_match_but_glob_no_match ... ok [INFO] [stdout] test health::ownership::tests::shares_are_rounded_to_three_decimals ... ok [INFO] [stdout] test health::ownership::tests::stale_days_clamps_at_zero_for_future_timestamps ... ok [INFO] [stdout] test health::ownership::tests::unowned_tristate_none_when_no_codeowners_file ... ok [INFO] [stdout] test health::ownership::tests::unowned_tristate_some_false_when_rule_matches ... ok [INFO] [stdout] test health::ownership::tests::unowned_tristate_some_true_when_no_rule_matches ... ok [INFO] [stdout] test health::scoring::tests::aggregate_complexity_empty_module ... ok [INFO] [stdout] test health::scoring::tests::aggregate_complexity_multiple_functions ... ok [INFO] [stdout] test health::ownership::tests::stale_days_basic ... ok [INFO] [stdout] test health::scoring::tests::aggregate_complexity_single_function ... ok [INFO] [stdout] test health::scoring::tests::binary_crap_empty ... ok [INFO] [stdout] test health::scoring::tests::binary_crap_multiple_functions ... ok [INFO] [stdout] test health::scoring::tests::binary_crap_not_reachable ... ok [INFO] [stdout] test health::scoring::tests::binary_crap_test_reachable ... ok [INFO] [stdout] test health::scoring::tests::binary_crap_threshold_boundary ... ok [INFO] [stdout] test health::scoring::tests::build_test_refs_empty ... ok [INFO] [stdout] test health::scoring::tests::build_test_refs_empty_inputs ... ok [INFO] [stdout] test health::scoring::tests::complexity_density_high ... ok [INFO] [stdout] test health::scoring::tests::complexity_density_normal ... ok [INFO] [stdout] test health::scoring::tests::complexity_density_single_line ... ok [INFO] [stdout] test health::scoring::tests::complexity_density_zero_cyclomatic_with_lines ... ok [INFO] [stdout] test health::scoring::tests::complexity_density_zero_lines ... ok [INFO] [stdout] test health::scoring::tests::compute_file_scores_empty_graph ... ok [INFO] [stdout] test health::scoring::tests::compute_file_scores_analysis_counts_unused_exports_and_types ... ok [INFO] [stdout] test health::scoring::tests::compute_file_scores_changed_since_filter ... ok [INFO] [stdout] test health::scoring::tests::compute_file_scores_excludes_barrel_files ... ok [INFO] [stdout] test health::scoring::tests::compute_file_scores_mi_rounded_to_one_decimal ... ok [INFO] [stdout] test health::scoring::tests::compute_file_scores_module_not_in_file_paths_skipped ... ok [INFO] [stdout] test health::scoring::tests::compute_file_scores_no_graph_returns_error ... ok [INFO] [stdout] test health::scoring::tests::compute_file_scores_single_file_with_function ... ok [INFO] [stdout] test health::scoring::tests::compute_file_scores_sorted_by_maintainability_ascending ... ok [INFO] [stdout] test health::scoring::tests::compute_file_scores_top_complex_fns_zero_cognitive_excluded ... ok [INFO] [stdout] test health::scoring::tests::compute_file_scores_tracks_top_complex_functions ... ok [INFO] [stdout] test health::scoring::tests::compute_file_scores_value_export_counts_tracked ... ok [INFO] [stdout] test health::scoring::tests::compute_file_scores_with_circular_deps ... ok [INFO] [stdout] test health::scoring::tests::compute_file_scores_with_unused_file_populates_evidence ... ok [INFO] [stdout] test health::scoring::tests::count_unused_exports_empty ... ok [INFO] [stdout] test health::scoring::tests::crap_formula_full_coverage ... ok [INFO] [stdout] test health::scoring::tests::count_unused_exports_groups_by_path ... ok [INFO] [stdout] test health::scoring::tests::count_unused_exports_single_file_single_export ... ok [INFO] [stdout] test health::scoring::tests::crap_formula_high_coverage_low_complexity ... ok [INFO] [stdout] test health::scoring::tests::crap_formula_partial_coverage ... ok [INFO] [stdout] test health::scoring::tests::crap_formula_zero_coverage ... ok [INFO] [stdout] test health::scoring::tests::crap_scores_empty_complexity ... ok [INFO] [stdout] test health::scoring::tests::crap_scores_mixed_functions_untested ... ok [INFO] [stdout] test health::scoring::tests::crap_scores_test_reachable ... ok [INFO] [stdout] test health::scoring::tests::crap_scores_untested_above_threshold ... ok [INFO] [stdout] test health::scoring::tests::crap_scores_untested_at_threshold ... ok [INFO] [stdout] test health::scoring::tests::crap_scores_untested_below_threshold ... ok [INFO] [stdout] test health::scoring::tests::dead_code_ratio_all_type_only_exports ... ok [INFO] [stdout] test health::scoring::tests::dead_code_ratio_all_unused_file ... ok [INFO] [stdout] test health::scoring::tests::dead_code_ratio_all_value_exports_unused ... ok [INFO] [stdout] test health::scoring::tests::dead_code_ratio_clamped_when_unused_exceeds_value_exports ... ok [INFO] [stdout] test health::scoring::tests::dead_code_ratio_mix ... ok [INFO] [stdout] test health::scoring::tests::dead_code_ratio_mixed_exports_counts_only_values ... ok [INFO] [stdout] test health::scoring::tests::dead_code_ratio_no_exports ... ok [INFO] [stdout] test health::scoring::tests::dead_code_ratio_no_unused_exports_for_path ... ok [INFO] [stdout] test health::scoring::tests::dead_code_ratio_only_type_exports_returns_zero ... ok [INFO] [stdout] test health::scoring::tests::dead_code_ratio_type_only_exports_excluded_from_denominator ... ok [INFO] [stdout] test health::scoring::tests::estimated_crap_empty ... ok [INFO] [stdout] test health::scoring::tests::estimated_crap_indirect_test_reachable ... ok [INFO] [stdout] test health::scoring::tests::estimated_crap_direct_test_reference ... ok [INFO] [stdout] test health::scoring::tests::estimated_crap_low_complexity_direct_ref ... ok [INFO] [stdout] test health::scoring::tests::estimated_crap_multiple_functions_mixed_coverage ... ok [INFO] [stdout] test health::scoring::tests::estimated_crap_untested_file ... ok [INFO] [stdout] test health::scoring::tests::istanbul_crap_empty_complexity ... ok [INFO] [stdout] test health::scoring::tests::istanbul_crap_falls_back_to_binary_when_no_file_coverage ... ok [INFO] [stdout] test health::scoring::tests::istanbul_crap_falls_back_to_binary_when_no_match ... ok [INFO] [stdout] test health::scoring::tests::istanbul_crap_match_statistics ... ok [INFO] [stdout] test health::scoring::tests::istanbul_crap_with_coverage_data ... ok [INFO] [stdout] test health::scoring::tests::istanbul_crap_zero_coverage_matches_binary_untested ... ok [INFO] [stdout] test health::scoring::tests::istanbul_lookup_anonymous_fallback_ambiguous_returns_none ... ok [INFO] [stdout] test health::scoring::tests::istanbul_lookup_empty ... ok [INFO] [stdout] test health::scoring::tests::istanbul_lookup_exact_match ... ok [INFO] [stdout] test health::scoring::tests::istanbul_lookup_anonymous_fallback_single_candidate ... ok [INFO] [stdout] test health::scoring::tests::istanbul_lookup_fuzzy_match_outside_offset ... ok [INFO] [stdout] test health::scoring::tests::istanbul_lookup_fuzzy_match_within_offset ... ok [INFO] [stdout] test health::scoring::tests::istanbul_lookup_fuzzy_picks_closest ... ok [INFO] [stdout] test health::scoring::tests::istanbul_lookup_named_match_beats_nearby_anonymous ... ok [INFO] [stdout] test health::scoring::tests::istanbul_lookup_name_mismatch ... ok [INFO] [stdout] test health::scoring::tests::maintainability_all_penalties_maxed ... ok [INFO] [stdout] test health::scoring::tests::maintainability_clamped_at_zero ... ok [INFO] [stdout] test health::scoring::tests::maintainability_at_dampening_boundary ... ok [INFO] [stdout] test health::scoring::tests::maintainability_dead_file_penalty ... ok [INFO] [stdout] test health::scoring::tests::maintainability_fan_out_is_logarithmic ... ok [INFO] [stdout] test health::scoring::tests::maintainability_fan_out_capped_at_15 ... ok [INFO] [stdout] test health::scoring::tests::maintainability_large_file_undampened ... ok [INFO] [stdout] test health::scoring::tests::maintainability_fan_out_one ... ok [INFO] [stdout] test health::scoring::tests::maintainability_formula_correct ... ok [INFO] [stdout] test health::scoring::tests::maintainability_only_complexity_penalty ... ok [INFO] [stdout] test health::scoring::tests::maintainability_perfect_score ... ok [INFO] [stdout] test health::scoring::tests::maintainability_only_dead_code_penalty ... ok [INFO] [stdout] test health::scoring::tests::maintainability_small_file_dampened ... ok [INFO] [stdout] test health::scoring::tests::maintainability_small_file_ranks_better_than_complex_large_file ... ok [INFO] [stdout] test health::scoring::tests::maintainability_zero_lines_zero_density_penalty ... ok [INFO] [stdout] test health::scoring::tests::total_exports_counts_graph_modules_not_extraction_modules ... ok [INFO] [stdout] test health::scoring::tests::istanbul_lookup_anonymous_fallback_outside_offset ... ok [INFO] [stdout] test health::targets::tests::contributing_factor_crap ... ok [INFO] [stdout] test health::targets::tests::contributing_factor_cognitive_complexity ... ok [INFO] [stdout] test health::targets::tests::contributing_factor_dead_code_with_value_exports ... ok [INFO] [stdout] test health::targets::tests::contributing_factor_fan_out ... ok [INFO] [stdout] test health::targets::tests::contributing_factor_hotspot ... ok [INFO] [stdout] test health::targets::tests::confidence_mapping ... ok [INFO] [stdout] test health::targets::tests::contributing_factor_circular_dependency ... ok [INFO] [stdout] test health::targets::tests::efficiency_surfaces_quick_wins ... ok [INFO] [stdout] test health::targets::tests::effort_high_for_large_file ... ok [INFO] [stdout] test health::targets::tests::effort_high_for_high_fan_in ... ok [INFO] [stdout] test health::targets::tests::effort_high_for_many_complex_functions ... ok [INFO] [stdout] test health::targets::tests::effort_low_for_small_simple_file ... ok [INFO] [stdout] test health::targets::tests::effort_medium_for_moderate_file ... ok [INFO] [stdout] test health::targets::tests::evidence_add_test_coverage_includes_all_fns ... ok [INFO] [stdout] test health::targets::tests::evidence_break_circular_dep ... ok [INFO] [stdout] test health::targets::tests::evidence_dead_code_includes_unused_exports ... ok [INFO] [stdout] test health::targets::tests::evidence_dead_code_none_when_no_exports ... ok [INFO] [stdout] test health::targets::tests::evidence_extract_complex_functions ... ok [INFO] [stdout] test health::targets::tests::evidence_split_high_impact_returns_none ... ok [INFO] [stdout] test health::targets::tests::no_targets_for_clean_files ... ok [INFO] [stdout] test health::targets::tests::percentile_empty_returns_zero ... ok [INFO] [stdout] test health::targets::tests::percentile_p50_median ... ok [INFO] [stdout] test health::targets::tests::percentile_single_element ... ok [INFO] [stdout] test health::targets::tests::rule_add_test_coverage ... ok [INFO] [stdout] test health::targets::tests::rule_add_test_coverage_below_density_threshold ... ok [INFO] [stdout] test health::targets::tests::rule_circular_dep_high_fan_in ... ok [INFO] [stdout] test health::targets::tests::rule_circular_dep_low_fan_in_fallback ... ok [INFO] [stdout] test health::targets::tests::rule_dead_code_gate_too_few_exports ... ok [INFO] [stdout] test health::targets::tests::rule_extract_complex_functions ... ok [INFO] [stdout] test health::targets::tests::rule_extract_dependencies_skipped_for_entry ... ok [INFO] [stdout] test health::targets::tests::rule_extract_dependencies_not_entry ... ok [INFO] [stdout] test health::targets::tests::rule_no_match_clean_file ... ok [INFO] [stdout] test health::targets::tests::rule_remove_dead_code ... ok [INFO] [stdout] test health::targets::tests::rule_split_high_impact_moderate_fan_in_many_functions ... ok [INFO] [stdout] test health::targets::tests::rule_urgent_churn_complexity ... ok [INFO] [stdout] test health::targets::tests::rule_split_high_impact ... ok [INFO] [stdout] test health::targets::tests::rule_extract_two_complex_functions ... ok [INFO] [stdout] test health::targets::tests::rule_urgent_churn_overrides_circular_dep ... ok [INFO] [stdout] test health::targets::tests::target_priority_all_zero ... ok [INFO] [stdout] test health::targets::tests::target_priority_complexity_density_weight ... ok [INFO] [stdout] test health::targets::tests::target_priority_adapts_to_thresholds ... ok [INFO] [stdout] test health::targets::tests::target_priority_fan_in_weight ... ok [INFO] [stdout] test health::targets::tests::target_priority_dead_code_weight ... ok [INFO] [stdout] test health::targets::tests::target_priority_max_all_inputs ... ok [INFO] [stdout] test health::targets::tests::target_priority_hotspot_weight ... ok [INFO] [stdout] test health::targets::tests::targets_sorted_by_efficiency_descending ... ok [INFO] [stdout] test health::targets::tests::thresholds_empty_scores_use_floors ... ok [INFO] [stdout] test health::targets::tests::thresholds_floors_prevent_degenerate_values ... ok [INFO] [stdout] test health::tests::build_ignore_set_empty_patterns ... ok [INFO] [stdout] test health::targets::tests::target_priority_fan_out_weight ... ok [INFO] [stdout] test health::tests::build_ignore_set_skips_invalid_patterns ... ok [INFO] [stdout] test health::targets::tests::thresholds_adapt_to_large_project ... ok [INFO] [stdout] test health::tests::collect_findings_below_threshold ... ok [INFO] [stdout] test health::tests::build_ignore_set_matches_glob ... ok [INFO] [stdout] test health::tests::build_ignore_set_multiple_patterns ... ok [INFO] [stdout] test health::tests::collect_findings_empty_modules ... ok [INFO] [stdout] test health::tests::collect_findings_exceeds_both ... ok [INFO] [stdout] test health::tests::collect_findings_exceeds_cyclomatic_only ... ok [INFO] [stdout] test health::tests::collect_findings_exceeds_cognitive_only ... ok [INFO] [stdout] test health::tests::collect_findings_filters_by_changed_files ... ok [INFO] [stdout] test health::tests::collect_findings_ignores_matching_files ... ok [INFO] [stdout] test health::tests::collect_findings_multiple_functions_per_file ... ok [INFO] [stdout] test health::tests::collect_findings_preserves_function_metadata ... ok [INFO] [stdout] test health::tests::collect_findings_skips_module_without_path ... ok [INFO] [stdout] test health::tests::production_coverage_baseline_refreshes_to_clean_when_only_baselined_findings_remain ... ok [INFO] [stdout] test health::tests::production_coverage_changed_review_ignores_unmodified_hot_paths ... ok [INFO] [stdout] test health::tests::production_coverage_changed_review_uses_hot_path_verdict ... ok [INFO] [stdout] test health::tests::print_health_result_fails_on_low_traffic_production_coverage ... ok [INFO] [stdout] test health::tests::production_coverage_top_applies_after_baseline_filtering ... ok [INFO] [stdout] test health_types::production_coverage::tests::action_serializes_kind_as_type ... ok [INFO] [stdout] test health_types::production_coverage::tests::confidence_display_matches_snake_case_serde ... ok [INFO] [stdout] test health_types::production_coverage::tests::report_verdict_display_matches_kebab_case_serde ... ok [INFO] [stdout] test health_types::production_coverage::tests::verdict_display_matches_snake_case_serde ... ok [INFO] [stdout] test health_types::production_coverage::tests::watermark_display_matches_kebab_case_serde ... ok [INFO] [stdout] test health_types::scores::tests::compute_severity_at_exact_boundaries ... ok [INFO] [stdout] test health_types::scores::tests::compute_severity_crap_moderate_under_high ... ok [INFO] [stdout] test health_types::scores::tests::compute_severity_crap_contributes_critical ... ok [INFO] [stdout] test health_types::scores::tests::compute_severity_crap_contributes_high ... ok [INFO] [stdout] test health_types::scores::tests::compute_severity_critical_from_cognitive ... ok [INFO] [stdout] test health_types::scores::tests::compute_severity_high_from_cognitive ... ok [INFO] [stdout] test health_types::scores::tests::compute_severity_moderate_when_below_high_thresholds ... ok [INFO] [stdout] test health_types::scores::tests::compute_severity_critical_from_cyclomatic ... ok [INFO] [stdout] test health_types::scores::tests::compute_severity_high_from_cyclomatic ... ok [INFO] [stdout] test health_types::scores::tests::compute_severity_uses_highest_across_dimensions ... ok [INFO] [stdout] test health_types::scores::tests::exceeded_threshold_all_variants_serialize ... ok [INFO] [stdout] test health_types::scores::tests::coverage_model_serializes_as_snake_case ... ok [INFO] [stdout] test health_types::scores::tests::exceeded_threshold_from_bools ... ok [INFO] [stdout] test health_types::scores::tests::exceeded_threshold_includes_helpers ... ok [INFO] [stdout] test health_types::scores::tests::exceeded_threshold_serializes_as_snake_case ... ok [INFO] [stdout] test health_types::scores::tests::finding_severity_ordering ... ok [INFO] [stdout] test health::tests::collect_findings_at_exact_threshold_not_reported ... ok [INFO] [stdout] test health_types::scores::tests::finding_severity_serializes_as_snake_case ... ok [INFO] [stdout] test health_types::scores::tests::letter_grade_boundaries ... ok [INFO] [stdout] test health_types::scores::tests::health_score_serializes_correctly ... ok [INFO] [stdout] test health_types::scores::tests::hotspot_score_threshold_is_50 ... ok [INFO] [stdout] test health_types::targets::tests::category_compact_labels_are_non_empty ... ok [INFO] [stdout] test health_types::targets::tests::category_compact_labels_are_unique ... ok [INFO] [stdout] test health_types::targets::tests::category_labels_are_unique ... ok [INFO] [stdout] test health_types::targets::tests::category_compact_labels_have_no_spaces ... ok [INFO] [stdout] test health_types::targets::tests::category_labels_are_non_empty ... ok [INFO] [stdout] test health_types::targets::tests::category_serializes_as_snake_case ... ok [INFO] [stdout] test health_types::targets::tests::confidence_labels_are_non_empty ... ok [INFO] [stdout] test health_types::targets::tests::contributing_factor_serializes_correctly ... ok [INFO] [stdout] test health_types::targets::tests::confidence_serializes_as_snake_case ... ok [INFO] [stdout] test health_types::targets::tests::effort_labels_are_non_empty ... ok [INFO] [stdout] test health_types::targets::tests::effort_numeric_values ... ok [INFO] [stdout] test health_types::targets::tests::effort_serializes_as_snake_case ... ok [INFO] [stdout] test health_types::targets::tests::target_evidence_with_data ... ok [INFO] [stdout] test health_types::targets::tests::refactoring_target_skips_empty_factors ... ok [INFO] [stdout] test health_types::targets::tests::target_evidence_skips_empty_fields ... ok [INFO] [stdout] test health_types::tests::health_report_skips_empty_collections ... ok [INFO] [stdout] test health_types::tests::health_score_none_skipped_in_report ... ok [INFO] [stdout] test health_types::vital_signs::tests::snapshot_v1_deserializes_with_default_score_and_grade ... ok [INFO] [stdout] test health_types::vital_signs::tests::vital_signs_serialization_roundtrip ... ok [INFO] [stdout] test health_types::vital_signs::tests::vital_signs_all_none_optional_fields_omitted ... ok [INFO] [stdout] test health_types::vital_signs::tests::snapshot_schema_version_is_seven ... ok [INFO] [stdout] test health_types::vital_signs::tests::vital_signs_snapshot_roundtrip ... ok [INFO] [stdout] test init::tests::detect_empty_project ... ok [INFO] [stdout] test init::tests::detect_npm_workspaces ... ok [INFO] [stdout] test init::tests::detect_pnpm_monorepo ... ok [INFO] [stdout] test init::tests::detect_react_vitest_storybook ... ok [INFO] [stdout] test init::tests::detect_svelte ... ok [INFO] [stdout] test init::tests::detect_jest ... ok [INFO] [stdout] test init::tests::detect_playwright ... ok [INFO] [stdout] test init::tests::detect_angular ... ok [INFO] [stdout] test init::tests::detect_typescript_project ... ok [INFO] [stdout] test init::tests::detect_vue ... ok [INFO] [stdout] test init::tests::detect_yarn_workspaces ... ok [INFO] [stdout] test init::tests::hooks_fails_if_hook_already_exists ... ok [INFO] [stdout] test health::coverage::tests::build_request_joins_dead_code_and_direct_test_signals ... ok [INFO] [stdout] test init::tests::hooks_detects_lefthook ... ok [INFO] [stdout] test init::tests::hooks_file_is_executable ... ok [INFO] [stdout] test init::tests::hooks_fails_without_git_dir ... ok [INFO] [stdout] test init::tests::hooks_rejects_malicious_branch_ref ... ok [INFO] [stdout] test init::tests::hooks_creates_git_hook ... ok [INFO] [stdout] test init::tests::hooks_uses_custom_branch_ref ... ok [INFO] [stdout] test init::tests::init_creates_gitignore_with_fallow_entry ... ok [INFO] [stdout] test init::tests::init_creates_json_config_by_default ... ok [INFO] [stdout] test init::tests::init_appends_to_existing_gitignore ... ok [INFO] [stdout] test init::tests::init_creates_toml_config_when_requested ... ok [INFO] [stdout] test init::tests::init_appends_newline_to_gitignore_without_trailing_newline ... ok [INFO] [stdout] test init::tests::init_existing_config_blocks_both_formats ... ok [INFO] [stdout] test init::tests::init_fails_if_fallow_toml_exists ... ok [INFO] [stdout] test init::tests::init_fails_if_dot_fallow_toml_exists ... ok [INFO] [stdout] test init::tests::init_fails_if_fallowrc_json_exists ... ok [INFO] [stdout] test init::tests::init_does_not_duplicate_gitignore_entry ... ok [INFO] [stdout] test init::tests::init_json_config_is_valid_json ... ok [INFO] [stdout] test init::tests::init_json_detects_monorepo_setup ... ok [INFO] [stdout] test init::tests::init_recognizes_fallow_without_trailing_slash ... ok [INFO] [stdout] test init::tests::init_toml_also_updates_gitignore ... ok [INFO] [stdout] test init::tests::init_toml_detects_monorepo_setup ... ok [INFO] [stdout] test init::tests::json_config_empty_project_is_valid ... ok [INFO] [stdout] test init::tests::init_json_does_not_create_toml ... ok [INFO] [stdout] test init::tests::json_config_storybook_adds_ignore ... ok [INFO] [stdout] test init::tests::json_config_test_framework_adds_rule ... ok [INFO] [stdout] test init::tests::json_config_monorepo_includes_workspaces ... ok [INFO] [stdout] test init::tests::init_toml_does_not_create_json ... ok [INFO] [stdout] test init::tests::hooks_prefers_husky ... ok [INFO] [stdout] test license::tests::read_jwt_errors_when_no_source ... ok [INFO] [stdout] test init::tests::toml_config_monorepo_includes_workspaces ... ok [INFO] [stdout] test init::tests::toml_config_storybook_adds_ignore ... ok [INFO] [stdout] test license::tests::read_jwt_normalizes_whitespace ... ok [INFO] [stdout] test init::tests::json_config_typescript_uses_ts_extensions ... ok [INFO] [stdout] test license::tests::read_jwt_prefers_raw_arg ... ok [INFO] [stdout] test license::tests::run_trial_without_email_errors ... ok [INFO] [stdout] test list::tests::needs_discovery_when_boundaries_requested ... ok [INFO] [stdout] test list::tests::needs_discovery_when_entry_points_requested ... ok [INFO] [stdout] test list::tests::needs_discovery_when_show_all ... ok [INFO] [stdout] test list::tests::needs_discovery_when_files_requested ... ok [INFO] [stdout] test list::tests::list_options_default_flags ... ok [INFO] [stdout] test list::tests::list_options_single_flag ... ok [INFO] [stdout] test list::tests::no_discovery_when_only_plugins ... ok [INFO] [stdout] test list::tests::not_show_all_when_all_flags_set ... ok [INFO] [stdout] test list::tests::not_show_all_when_boundaries_set ... ok [INFO] [stdout] test list::tests::not_show_all_when_files_set ... ok [INFO] [stdout] test list::tests::not_show_all_when_entry_points_set ... ok [INFO] [stdout] test list::tests::not_show_all_when_plugins_set ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_all_warnings_have_jscpd_source ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_all_unmappable_fields ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_array_root ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_basic ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_complex_full_config ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_empty_ignore_array ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_empty_object ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_ignore_mixed_types ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_ignore_non_value ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_ignore_patterns ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_large_min_tokens ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_ignore_single_string ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_min_lines_zero ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_min_tokens_float_ignored ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_mode_mild ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_mode_non_string_ignored ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_mode_strict ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_non_numeric_min_lines_ignored ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_mode_weak_warns ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_mode_unknown ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_non_numeric_min_tokens_ignored ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_non_object_root_warns ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_null_root ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_only_unmappable_fields_no_duplicates_key ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_skip_local ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_skip_local_non_bool_ignored ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_threshold_integer ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_skip_local_false ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_threshold_non_numeric_ignored ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_threshold_zero ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_unmappable_fields_generate_warnings ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_unmappable_without_suggestions ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_all_regex_ignore_deps_no_output ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_all_rule_mappings ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_all_warnings_have_knip_source ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_complex_full_config ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_empty_entry_array ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_empty_exclude_array ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_empty_ignore_array ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_empty_include_array ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_empty_object_no_config ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_entry_string ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_exclude_overrides_rules_for_same_type ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_exclude_all_mappable_types ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_exclude_single_string ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_exclude_unmappable_warns ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_ignore_deps_mixed_types_in_array ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_ignore_deps_non_value_ignored ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_ignore_deps_single_string ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_ignore_single_string ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_include_single_string ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_include_unmappable_warns ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_multiple_plugin_keys_warn ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_multiple_unmappable_fields_with_suggestions ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_non_object_root_warns ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_regex_ignore_deps_skipped ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_plugin_keys_generate_warnings ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_rules_non_object_ignored ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_rules_non_string_severity_ignored ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_rules_then_include_rules_take_precedence ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_rules_unknown_key_not_in_unmappable_silently_ignored ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_rules_unmappable_warns ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_unmappable_fields_generate_warnings ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_unmappable_without_suggestion ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_with_exclude ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_with_ignore_dependencies ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_with_ignore_patterns ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_with_include ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_with_rules ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_workspaces_non_object_no_warning ... ok [INFO] [stdout] test migrate::knip::tests::migrate_knip_workspaces_object_warns ... ok [INFO] [stdout] test migrate::knip::tests::migrate_minimal_knip_json ... ok [INFO] [stdout] test migrate::knip_fields::tests::exclude_empty_slice ... ok [INFO] [stdout] test migrate::knip_fields::tests::exclude_multiple_types ... ok [INFO] [stdout] test migrate::knip_fields::tests::exclude_single_known_type ... ok [INFO] [stdout] test migrate::knip_fields::tests::exclude_unmappable_type_warns ... ok [INFO] [stdout] test migrate::knip_fields::tests::ignore_deps_all_regex_no_config_key ... ok [INFO] [stdout] test migrate::knip_fields::tests::ignore_deps_non_string_value_skipped ... ok [INFO] [stdout] test migrate::knip_fields::tests::ignore_deps_plain_strings ... ok [INFO] [stdout] test migrate::knip_fields::tests::ignore_deps_single_string ... ok [INFO] [stdout] test migrate::knip_fields::tests::ignore_deps_regex_filtered_with_warning ... ok [INFO] [stdout] test migrate::knip_fields::tests::include_known_types_sets_others_to_off ... ok [INFO] [stdout] test migrate::knip_fields::tests::include_respects_existing_rules ... ok [INFO] [stdout] test migrate::knip_fields::tests::include_unmappable_type_warns ... ok [INFO] [stdout] test migrate::knip_fields::tests::rules_empty_object ... ok [INFO] [stdout] test migrate::knip_fields::tests::rules_known_mapping ... ok [INFO] [stdout] test migrate::knip_fields::tests::rules_non_object_is_noop ... ok [INFO] [stdout] test migrate::knip_fields::tests::rules_unknown_not_in_unmappable_silently_ignored ... ok [INFO] [stdout] test migrate::knip_fields::tests::rules_unknown_unmappable_generates_warning ... ok [INFO] [stdout] test migrate::knip_fields::tests::simple_field_absent ... ok [INFO] [stdout] test migrate::knip_fields::tests::simple_field_empty_array_skipped ... ok [INFO] [stdout] test migrate::knip_fields::tests::simple_field_non_string_non_array_skipped ... ok [INFO] [stdout] test migrate::knip_fields::tests::simple_field_present_array ... ok [INFO] [stdout] test migrate::knip_fields::tests::simple_field_renames_key ... ok [INFO] [stdout] test migrate::knip_fields::tests::warn_plugin_keys_detects_plugins ... ok [INFO] [stdout] test migrate::knip_fields::tests::warn_plugin_keys_empty_object_no_warnings ... ok [INFO] [stdout] test migrate::knip_fields::tests::warn_plugin_keys_non_plugin_keys_no_warnings ... ok [INFO] [stdout] test migrate::knip_fields::tests::warn_unmappable_fields_detects_known_fields ... ok [INFO] [stdout] test migrate::knip_fields::tests::warn_unmappable_fields_empty_object_no_warnings ... ok [INFO] [stdout] test migrate::knip_fields::tests::warn_unmappable_fields_suggestion_presence ... ok [INFO] [stdout] test migrate::knip_fields::tests::warn_unmappable_fields_unrelated_keys_no_warnings ... ok [INFO] [stdout] test migrate::knip_tables::tests::plugin_keys_are_sorted ... ok [INFO] [stdout] test migrate::knip_tables::tests::plugin_keys_contains_known_plugins ... ok [INFO] [stdout] test migrate::knip_tables::tests::plugin_keys_do_not_overlap_with_unmappable_fields ... ok [INFO] [stdout] test migrate::knip_tables::tests::plugin_keys_have_no_duplicates ... ok [INFO] [stdout] test migrate::knip_tables::tests::plugin_keys_is_non_empty ... ok [INFO] [stdout] test migrate::knip_tables::tests::rule_map_has_no_duplicate_fallow_values ... ok [INFO] [stdout] test migrate::knip_tables::tests::rule_map_has_no_duplicate_knip_keys ... ok [INFO] [stdout] test migrate::knip_tables::tests::rule_map_has_no_empty_keys_or_values ... ok [INFO] [stdout] test migrate::knip_tables::tests::rule_map_is_non_empty ... ok [INFO] [stdout] test migrate::knip_tables::tests::unmappable_fields_do_not_overlap_with_rule_map_keys ... ok [INFO] [stdout] test migrate::knip_tables::tests::unmappable_fields_have_non_empty_names_and_messages ... ok [INFO] [stdout] test migrate::knip_tables::tests::unmappable_fields_is_non_empty ... ok [INFO] [stdout] test migrate::knip_tables::tests::unmappable_issue_types_do_not_overlap_with_rule_map_keys ... ok [INFO] [stdout] test migrate::knip_tables::tests::unmappable_issue_types_is_non_empty ... ok [INFO] [stdout] test migrate::tests::auto_detect_knip_json_takes_precedence_over_knip_jsonc ... ok [INFO] [stdout] test migrate::tests::auto_detect_knip_ts_skipped_with_warning ... ok [INFO] [stdout] test migrate::tests::auto_detect_no_configs_found ... ok [INFO] [stdout] test migrate::tests::auto_detect_package_json_jscpd ... ok [INFO] [stdout] test migrate::tests::auto_detect_package_json_knip ... ok [INFO] [stdout] test migrate::tests::auto_detect_package_json_with_both_knip_and_jscpd ... ok [INFO] [stdout] test migrate::tests::auto_detect_standalone_jscpd_prevents_package_json_jscpd ... ok [INFO] [stdout] test migrate::tests::auto_detect_standalone_knip_prevents_package_json_knip ... ok [INFO] [stdout] test migrate::tests::indent_json_value_array ... ok [INFO] [stdout] test migrate::tests::indent_json_value_deeply_nested_object ... ok [INFO] [stdout] test migrate::tests::indent_json_value_empty_string ... ok [INFO] [stdout] test migrate::tests::indent_json_value_multiline_indents_continuation_lines ... ok [INFO] [stdout] test migrate::tests::indent_json_value_single_line_unchanged ... ok [INFO] [stdout] test migrate::tests::jsonc_comments_stripped ... ok [INFO] [stdout] test migrate::tests::jsonc_full_roundtrip_with_all_fields ... ok [INFO] [stdout] test migrate::tests::jsonc_output_deserializes_as_valid_config ... ok [INFO] [stdout] test migrate::tests::jsonc_output_empty_config ... ok [INFO] [stdout] test migrate::tests::jsonc_output_has_schema ... ok [INFO] [stdout] test migrate::tests::jsonc_output_has_source_comment ... ok [INFO] [stdout] test migrate::tests::jsonc_output_keys_ordered_correctly ... ok [INFO] [stdout] test migrate::tests::jsonc_output_only_rules ... ok [INFO] [stdout] test migrate::tests::jsonc_output_with_multiple_sources ... ok [INFO] [stdout] test migrate::tests::load_json_or_jsonc_file_not_found ... ok [INFO] [stdout] test migrate::tests::load_json_or_jsonc_invalid_json_and_invalid_jsonc ... ok [INFO] [stdout] test migrate::tests::migrate_both_knip_and_jscpd ... ok [INFO] [stdout] test migrate::tests::migrate_from_file_jscpd_heuristic_via_mode ... ok [INFO] [stdout] test migrate::tests::migrate_from_file_jscpd_json ... ok [INFO] [stdout] test migrate::tests::migrate_from_file_knip_heuristic_via_ignore_dependencies ... ok [INFO] [stdout] test migrate::tests::migrate_from_file_knip_heuristic_via_rules_field ... ok [INFO] [stdout] test migrate::tests::migrate_from_file_knip_json ... ok [INFO] [stdout] test migrate::tests::migrate_from_file_knip_ts_rejected ... ok [INFO] [stdout] test migrate::tests::migrate_from_file_nonexistent_path ... ok [INFO] [stdout] test migrate::tests::migrate_from_file_package_json_with_both_knip_and_jscpd ... ok [INFO] [stdout] test coverage::upload_inventory::tests::dirty_worktree_does_not_bypass_validation_with_explicit_git_sha ... ok [INFO] [stdout] test migrate::tests::migrate_from_file_package_json_without_knip_or_jscpd ... ok [INFO] [stdout] test migrate::tests::migrate_from_file_unrecognized_file_detected_as_jscpd ... ok [INFO] [stdout] test migrate::tests::migrate_from_file_unrecognized_file_detected_as_knip ... ok [INFO] [stdout] test coverage::upload_inventory::tests::dirty_worktree_is_allowed_with_explicit_opt_in ... ok [INFO] [stdout] test migrate::tests::migrate_from_file_unrecognized_file_unknown_format ... ok [INFO] [stdout] test migrate::tests::string_or_array_with_array_value ... ok [INFO] [stdout] test migrate::tests::string_or_array_with_bool ... ok [INFO] [stdout] test migrate::tests::string_or_array_with_empty_array ... ok [INFO] [stdout] test migrate::tests::string_or_array_with_mixed_array_filters_non_strings ... ok [INFO] [stdout] test migrate::tests::string_or_array_with_non_string_non_array ... ok [INFO] [stdout] test coverage::upload_inventory::tests::dirty_worktree_is_rejected_by_default ... ok [INFO] [stdout] test migrate::tests::string_or_array_with_null ... ok [INFO] [stdout] test migrate::tests::string_or_array_with_object ... ok [INFO] [stdout] test migrate::tests::string_or_array_with_string_value ... ok [INFO] [stdout] test migrate::tests::toml_output_duplicates_section ... ok [INFO] [stdout] test migrate::tests::toml_output_duplicates_string_and_array_values ... ok [INFO] [stdout] test migrate::tests::toml_output_empty_config ... ok [INFO] [stdout] test migrate::tests::toml_output_empty_duplicates_omits_section ... ok [INFO] [stdout] test migrate::tests::toml_output_empty_rules_omits_section ... ok [INFO] [stdout] test migrate::tests::toml_output_has_source_comment ... ok [INFO] [stdout] test migrate::tests::toml_output_only_ignore_dependencies ... ok [INFO] [stdout] test migrate::tests::toml_output_only_ignore_patterns ... ok [INFO] [stdout] test migrate::tests::toml_output_rules_section ... ok [INFO] [stdout] test migrate::tests::toml_output_with_multiple_sources ... ok [INFO] [stdout] test migrate::tests::warning_display_with_suggestion ... ok [INFO] [stdout] test migrate::tests::warning_display_without_suggestion ... ok [INFO] [stdout] test regression::baseline::tests::chrono_now_format ... ok [INFO] [stdout] test regression::baseline::tests::compare_exceeded_includes_type_deltas ... ok [INFO] [stdout] test migrate::tests::toml_full_roundtrip_with_duplicates ... ok [INFO] [stdout] test migrate::tests::toml_output_deserializes_as_valid_config ... ok [INFO] [stdout] test regression::baseline::tests::compare_exceeded_with_config_baseline ... ok [INFO] [stdout] test regression::baseline::tests::compare_improvement_is_pass ... ok [INFO] [stdout] test regression::baseline::tests::compare_no_baseline_source_returns_error ... ok [INFO] [stdout] test regression::baseline::tests::compare_pass_with_config_baseline ... ok [INFO] [stdout] test regression::baseline::tests::compare_pass_within_tolerance ... ok [INFO] [stdout] test regression::baseline::tests::compare_returns_none_when_disabled ... ok [INFO] [stdout] test regression::baseline::tests::compare_returns_skipped_when_scoped ... ok [INFO] [stdout] test regression::baseline::tests::compare_with_percentage_tolerance ... ok [INFO] [stdout] test regression::baseline::tests::find_json_key_basic ... ok [INFO] [stdout] test regression::baseline::tests::find_json_key_in_nested_comment_then_real ... ok [INFO] [stdout] test regression::baseline::tests::compare_file_baseline_missing_check_data_returns_error ... ok [INFO] [stdout] test regression::baseline::tests::find_json_key_multiple_same_keys ... ok [INFO] [stdout] test regression::baseline::tests::find_json_key_not_found ... ok [INFO] [stdout] test regression::baseline::tests::find_json_key_skips_block_comment ... ok [INFO] [stdout] test regression::baseline::tests::find_json_key_skips_comment ... ok [INFO] [stdout] test regression::baseline::tests::json_insert_into_empty_object ... ok [INFO] [stdout] test regression::baseline::tests::json_insert_into_existing_config ... ok [INFO] [stdout] test regression::baseline::tests::json_insert_with_trailing_comma ... ok [INFO] [stdout] test regression::baseline::tests::json_malformed_brace_returns_error ... ok [INFO] [stdout] test regression::baseline::tests::json_nested_regression_object_replaced_correctly ... ok [INFO] [stdout] test regression::baseline::tests::json_no_closing_brace_returns_error ... ok [INFO] [stdout] test regression::baseline::tests::json_replace_existing_regression ... ok [INFO] [stdout] test regression::baseline::tests::json_skips_regression_in_comment ... ok [INFO] [stdout] test regression::baseline::tests::load_invalid_json_returns_error ... ok [INFO] [stdout] test regression::baseline::tests::load_nonexistent_file_returns_error ... ok [INFO] [stdout] test regression::baseline::tests::compare_with_file_baseline ... ok [INFO] [stdout] test regression::baseline::tests::save_baseline_to_nonexistent_json_config ... ok [INFO] [stdout] test regression::baseline::tests::save_baseline_to_nonexistent_toml_config ... ok [INFO] [stdout] test regression::baseline::tests::save_baseline_to_json_config ... ok [INFO] [stdout] test regression::baseline::tests::save_baseline_to_toml_config ... ok [INFO] [stdout] test regression::baseline::tests::save_load_roundtrip ... ok [INFO] [stdout] test regression::baseline::tests::toml_content_without_trailing_newline ... ok [INFO] [stdout] test regression::baseline::tests::toml_insert_after_existing_content ... ok [INFO] [stdout] test regression::baseline::tests::save_load_roundtrip_check_only ... ok [INFO] [stdout] test regression::baseline::tests::toml_insert_into_empty ... ok [INFO] [stdout] test regression::baseline::tests::toml_replace_existing_section ... ok [INFO] [stdout] test regression::baseline::tests::toml_replace_section_at_end ... ok [INFO] [stdout] test regression::baseline::tests::toml_replace_section_not_at_end ... ok [INFO] [stdout] test regression::counts::tests::baseline_json_with_unknown_check_fields_deserializes ... ok [INFO] [stdout] test regression::counts::tests::baseline_without_check_section ... ok [INFO] [stdout] test regression::counts::tests::baseline_without_dupes_section ... ok [INFO] [stdout] test regression::counts::tests::baseline_without_git_sha ... ok [INFO] [stdout] test regression::counts::tests::check_counts_config_roundtrip ... ok [INFO] [stdout] test regression::counts::tests::check_counts_zero_config_roundtrip ... ok [INFO] [stdout] test regression::counts::tests::check_counts_from_results ... ok [INFO] [stdout] test regression::baseline::tests::save_creates_parent_directories ... ok [INFO] [stdout] test regression::counts::tests::deltas_all_categories_changed ... ok [INFO] [stdout] test regression::counts::tests::deltas_empty_when_identical ... ok [INFO] [stdout] test regression::counts::tests::deltas_mixed_increase_decrease ... ok [INFO] [stdout] test regression::counts::tests::deltas_reports_changes_only ... ok [INFO] [stdout] test regression::counts::tests::dupes_counts_default_fields ... ok [INFO] [stdout] test regression::counts::tests::dupes_counts_roundtrip ... ok [INFO] [stdout] test regression::counts::tests::regression_baseline_roundtrip ... ok [INFO] [stdout] test regression::outcome::tests::exceeded_outcome_json ... ok [INFO] [stdout] test regression::outcome::tests::exceeded_outcome_json_absolute ... ok [INFO] [stdout] test regression::outcome::tests::pass_outcome_json ... ok [INFO] [stdout] test regression::outcome::tests::pass_outcome_json_with_improvement ... ok [INFO] [stdout] test regression::outcome::tests::print_exceeded_outcome_absolute_does_not_panic ... ok [INFO] [stdout] test regression::outcome::tests::print_exceeded_outcome_does_not_panic ... ok [INFO] [stdout] test regression::outcome::tests::print_exceeded_with_empty_deltas_does_not_panic ... ok [INFO] [stdout] test regression::outcome::tests::print_pass_outcome_does_not_panic ... ok [INFO] [stdout] test regression::outcome::tests::print_skipped_outcome_does_not_panic ... ok [INFO] [stdout] test regression::outcome::tests::regression_outcome_is_failure ... ok [INFO] [stdout] test regression::outcome::tests::skipped_outcome_json ... ok [INFO] [stdout] test regression::tolerance::tests::absolute_tolerance_allows_within_range ... ok [INFO] [stdout] test regression::tolerance::tests::absolute_tolerance_at_exact_boundary ... ok [INFO] [stdout] test regression::tolerance::tests::decrease_never_exceeds ... ok [INFO] [stdout] test regression::tolerance::tests::equal_values_never_exceed ... ok [INFO] [stdout] test regression::tolerance::tests::decrease_never_exceeds_for_all_variants ... ok [INFO] [stdout] test regression::tolerance::tests::parse_absolute_tolerance ... ok [INFO] [stdout] test regression::tolerance::tests::parse_decimal_percentage_tolerance ... ok [INFO] [stdout] test regression::tolerance::tests::parse_empty_defaults_to_zero ... ok [INFO] [stdout] test regression::tolerance::tests::parse_invalid_absolute ... ok [INFO] [stdout] test regression::tolerance::tests::parse_invalid_percentage ... ok [INFO] [stdout] test regression::tolerance::tests::parse_large_absolute_tolerance ... ok [INFO] [stdout] test regression::tolerance::tests::parse_negative_absolute_is_err ... ok [INFO] [stdout] test regression::tolerance::tests::parse_negative_percentage ... ok [INFO] [stdout] test regression::tolerance::tests::parse_percentage_tolerance ... ok [INFO] [stdout] test regression::tolerance::tests::parse_whitespace_only_defaults_to_zero ... ok [INFO] [stdout] test regression::tolerance::tests::parse_whitespace_padded_percentage ... ok [INFO] [stdout] test regression::tolerance::tests::parse_whitespace_padded_tolerance ... ok [INFO] [stdout] test regression::tolerance::tests::parse_zero_percent_tolerance ... ok [INFO] [stdout] test regression::tolerance::tests::parse_zero_tolerance ... ok [INFO] [stdout] test regression::tolerance::tests::percentage_tolerance_allows_within_range ... ok [INFO] [stdout] test regression::tolerance::tests::percentage_tolerance_from_zero_baseline ... ok [INFO] [stdout] test regression::tolerance::tests::percentage_tolerance_large_percentage ... ok [INFO] [stdout] test regression::tolerance::tests::percentage_tolerance_with_small_baseline ... ok [INFO] [stdout] test regression::tolerance::tests::zero_pct_tolerance_detects_any_increase ... ok [INFO] [stdout] test regression::tolerance::tests::zero_tolerance_detects_any_increase ... ok [INFO] [stdout] test report::badge::tests::grade_colors_cover_all_grades ... ok [INFO] [stdout] test report::badge::tests::print_health_badge_no_score ... ok [INFO] [stdout] test report::badge::tests::print_health_badge_with_score ... ok [INFO] [stdout] test report::badge::tests::render_badge_contains_svg_elements ... ok [INFO] [stdout] test report::badge::tests::render_badge_has_accessibility ... ok [INFO] [stdout] test report::badge::tests::render_badge_unique_ids ... ok [INFO] [stdout] test report::badge::tests::render_badge_width_increases_with_longer_text ... ok [INFO] [stdout] test report::badge::tests::text_width_empty_string ... ok [INFO] [stdout] test report::badge::tests::text_width_rounds_to_odd ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_circular_dep_emits_chain_in_description ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_dep_with_zero_line_omits_line_number ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_duplicate_export_one_issue_per_location ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_empty_results_produces_empty_array ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_fingerprints_are_unique ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_fingerprints_are_deterministic ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_issue_has_required_fields ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_paths_are_relative ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_re_export_label_in_description ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_type_only_dep_has_correct_check_name ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_produces_array_of_issues ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_unused_export_has_line_number ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_unlisted_dep_one_issue_per_import_site ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_unused_file_line_defaults_to_1 ... ok [INFO] [stdout] test report::codeclimate::tests::fingerprint_hash_different_inputs_differ ... ok [INFO] [stdout] test report::codeclimate::tests::fingerprint_hash_is_16_hex_chars ... ok [INFO] [stdout] test report::codeclimate::tests::codeclimate_unused_file_severity_follows_rules ... ok [INFO] [stdout] test report::codeclimate::tests::fingerprint_hash_order_matters ... ok [INFO] [stdout] test report::codeclimate::tests::fingerprint_hash_separator_prevents_collision ... ok [INFO] [stdout] test report::codeclimate::tests::health_codeclimate_crap_only_uses_crap_check_name ... ok [INFO] [stdout] test report::codeclimate::tests::health_severity_above_1_5x_returns_major ... ok [INFO] [stdout] test report::codeclimate::tests::health_codeclimate_includes_coverage_gaps ... ok [INFO] [stdout] test report::codeclimate::tests::health_severity_1_5x_threshold_returns_minor ... ok [INFO] [stdout] test report::codeclimate::tests::health_severity_above_2_5x_returns_critical ... ok [INFO] [stdout] test report::codeclimate::tests::health_severity_at_2_5x_returns_major ... ok [INFO] [stdout] test report::codeclimate::tests::health_severity_at_threshold_returns_minor ... ok [INFO] [stdout] test report::codeclimate::tests::health_severity_zero_threshold_returns_minor ... ok [INFO] [stdout] test report::codeclimate::tests::severity_error_maps_to_major ... ok [INFO] [stdout] test report::codeclimate::tests::severity_off_maps_to_minor ... ok [INFO] [stdout] test report::codeclimate::tests::severity_warn_maps_to_minor ... ok [INFO] [stdout] test report::compact::tests::compact_all_issue_types_produce_lines ... ok [INFO] [stdout] test report::compact::tests::compact_duplicate_export_format ... ok [INFO] [stdout] test report::compact::tests::compact_circular_dependency_closes_cycle ... ok [INFO] [stdout] test report::compact::tests::compact_circular_dependency_format ... ok [INFO] [stdout] test report::compact::tests::compact_empty_results_no_lines ... ok [INFO] [stdout] test report::compact::tests::compact_multiple_unused_files ... ok [INFO] [stdout] test report::compact::tests::compact_health_includes_production_coverage_lines ... ok [INFO] [stdout] test report::compact::tests::compact_ordering_optional_dep_between_devdep_and_enum ... ok [INFO] [stdout] test report::compact::tests::compact_re_export_tagged_correctly ... ok [INFO] [stdout] test report::compact::tests::compact_path_outside_root_preserved ... ok [INFO] [stdout] test report::compact::tests::compact_strips_root_prefix_from_paths ... ok [INFO] [stdout] test report::compact::tests::compact_type_re_export_tagged_correctly ... ok [INFO] [stdout] test report::compact::tests::compact_type_only_dep_format ... ok [INFO] [stdout] test report::compact::tests::compact_unlisted_dep_format ... ok [INFO] [stdout] test report::compact::tests::compact_unused_class_member_format ... ok [INFO] [stdout] test report::compact::tests::compact_unresolved_import_format ... ok [INFO] [stdout] test report::compact::tests::compact_unused_dep_format ... ok [INFO] [stdout] test report::compact::tests::compact_unused_enum_member_format ... ok [INFO] [stdout] test report::compact::tests::compact_unused_devdep_format ... ok [INFO] [stdout] test report::compact::tests::compact_unused_export_format ... ok [INFO] [stdout] test report::compact::tests::compact_unused_optional_dep_format ... ok [INFO] [stdout] test report::compact::tests::compact_unused_file_format ... ok [INFO] [stdout] test report::compact::tests::compact_unused_type_format ... ok [INFO] [stdout] test report::grouping::tests::circular_dep_empty_files_goes_to_unowned ... ok [INFO] [stdout] test report::grouping::tests::boundary_violations_grouped_by_from_path ... ok [INFO] [stdout] test report::grouping::tests::circular_dep_uses_first_file ... ok [INFO] [stdout] test report::grouping::tests::duplicate_exports_empty_locations_goes_to_unowned ... ok [INFO] [stdout] test report::grouping::tests::directory_mode_groups_by_first_path_component ... ok [INFO] [stdout] test report::grouping::tests::directory_mode_groups_have_no_owners_metadata ... ok [INFO] [stdout] test report::grouping::tests::empty_results_returns_empty_vec ... ok [INFO] [stdout] test report::grouping::tests::group_type_only_deps ... ok [INFO] [stdout] test report::grouping::tests::group_test_only_deps ... ok [INFO] [stdout] test report::grouping::tests::group_unresolved_imports ... ok [INFO] [stdout] test report::grouping::tests::group_unused_enum_members ... ok [INFO] [stdout] test report::grouping::tests::group_unused_class_members ... ok [INFO] [stdout] test report::grouping::tests::group_unused_optional_deps ... ok [INFO] [stdout] test report::grouping::tests::mode_label_owner ... ok [INFO] [stdout] test report::grouping::tests::mode_label_directory ... ok [INFO] [stdout] test report::grouping::tests::mode_label_package ... ok [INFO] [stdout] test report::grouping::tests::mode_label_section ... ok [INFO] [stdout] test report::grouping::tests::multiple_groups_split_by_directory ... ok [INFO] [stdout] test report::grouping::tests::package_mode_groups_by_workspace ... ok [INFO] [stdout] test report::grouping::tests::package_resolver_matches_longest_prefix ... ok [INFO] [stdout] test report::grouping::tests::package_resolver_root_fallback ... ok [INFO] [stdout] test report::grouping::tests::owner_mode_unmatched_goes_to_unowned ... ok [INFO] [stdout] test report::grouping::tests::resolve_owner_returns_codeowner ... ok [INFO] [stdout] test report::grouping::tests::owner_mode_groups_by_codeowners_owner ... ok [INFO] [stdout] test report::grouping::tests::resolve_owner_returns_directory ... ok [INFO] [stdout] test report::grouping::tests::resolve_with_rule_directory_mode_no_rule ... ok [INFO] [stdout] test report::grouping::tests::resolve_with_rule_owner_mode_no_match ... ok [INFO] [stdout] test report::grouping::tests::resolve_with_rule_owner_mode_with_match ... ok [INFO] [stdout] test report::grouping::tests::resolve_with_rule_package_mode_no_rule ... ok [INFO] [stdout] test report::grouping::tests::section_mode_unmatched_goes_to_unowned ... ok [INFO] [stdout] test report::grouping::tests::single_group_all_same_directory ... ok [INFO] [stdout] test report::grouping::tests::section_mode_groups_distinct_sections_with_shared_owners ... ok [INFO] [stdout] test report::grouping::tests::sort_order_alphabetical_tiebreaker ... ok [INFO] [stdout] test report::grouping::tests::sort_order_descending_by_total_issues ... ok [INFO] [stdout] test report::grouping::tests::unlisted_dep_empty_imported_from_goes_to_unowned ... ok [INFO] [stdout] test report::grouping::tests::unlisted_dep_with_import_site_goes_to_directory ... ok [INFO] [stdout] test report::grouping::tests::unowned_sorts_last_regardless_of_count ... ok [INFO] [stdout] test report::human::check::tests::all_issue_types_produce_output_lines ... ok [INFO] [stdout] test report::human::check::tests::circular_dependencies_show_cycle_with_arrow_and_repeat ... ok [INFO] [stdout] test report::grouping::tests::section_mode_pre_section_rule_goes_to_no_section ... ok [INFO] [stdout] test report::human::check::tests::deeply_nested_paths_display_correctly ... ok [INFO] [stdout] test report::human::check::tests::circular_deps_grouped_by_hub ... ok [INFO] [stdout] test report::human::check::tests::duplicate_exports_show_name_and_locations ... ok [INFO] [stdout] test report::human::check::tests::empty_results_produce_no_lines ... ok [INFO] [stdout] test report::human::check::tests::each_section_ends_with_empty_line_separator ... ok [INFO] [stdout] test report::human::check::tests::empty_sections_are_omitted ... ok [INFO] [stdout] test report::human::check::tests::flat_section_truncates_at_max ... ok [INFO] [stdout] test report::human::check::tests::grouped_items_from_same_file_share_one_file_header ... ok [INFO] [stdout] test report::human::check::tests::grouped_exports_from_different_files_sorted_by_path ... ok [INFO] [stdout] test report::human::check::tests::off_severity_still_shows_section_when_items_present ... ok [INFO] [stdout] test report::human::check::tests::re_exports_are_tagged ... ok [INFO] [stdout] test report::human::check::tests::grouped_section_truncates_files ... ok [INFO] [stdout] test report::human::check::tests::non_re_exports_have_no_tag ... ok [INFO] [stdout] test report::human::check::tests::section_header_formats_for_all_levels ... ok [INFO] [stdout] test report::human::check::tests::section_footer_contains_docs_link ... ok [INFO] [stdout] test report::human::check::tests::section_header_uses_bullet_indicator ... ok [INFO] [stdout] test report::human::check::tests::section_header_shows_correct_count_for_multiple_items ... ok [INFO] [stdout] test report::human::check::tests::summary_footer_singularizes_pre_pluralized_labels_for_count_1 ... ok [INFO] [stdout] test report::human::check::tests::section_headers_contain_title_and_count ... ok [INFO] [stdout] test report::human::check::tests::summary_footer_uses_short_labels ... ok [INFO] [stdout] test report::human::check::tests::type_only_deps_section_title_includes_suggestion ... ok [INFO] [stdout] test report::human::check::tests::unlisted_deps_show_package_name ... ok [INFO] [stdout] test report::human::check::tests::top_flag_limits_unused_files_shown ... ok [INFO] [stdout] test report::human::check::tests::unresolved_imports_show_specifier_and_line ... ok [INFO] [stdout] test report::human::check::tests::unused_class_members_show_parent_dot_member ... ok [INFO] [stdout] test report::human::check::tests::unused_deps_in_workspace_show_workspace_path ... ok [INFO] [stdout] test report::human::check::tests::unused_enum_members_show_parent_dot_member ... ok [INFO] [stdout] test report::human::check::tests::unused_deps_at_root_show_package_name_only ... ok [INFO] [stdout] test report::human::check::tests::warn_severity_produces_header_with_bullet ... ok [INFO] [stdout] test report::human::check::tests::unused_exports_grouped_by_file_with_line_and_name ... ok [INFO] [stdout] test report::human::check::tests::unused_files_show_relative_paths ... ok [INFO] [stdout] test report::human::cross_ref::tests::cross_reference_unused_type_reason ... ok [INFO] [stdout] test report::human::cross_ref::tests::cross_reference_empty_findings_produces_header_and_blanks ... ok [INFO] [stdout] test report::human::dupes::tests::duplication_empty_report_produces_no_output ... ok [INFO] [stdout] test report::human::cross_ref::tests::cross_reference_unused_export_reason ... ok [INFO] [stdout] test report::human::dupes::tests::duplication_groups_show_instances_with_line_count ... ok [INFO] [stdout] test report::human::dupes::tests::duplication_single_group_family_is_suppressed ... ok [INFO] [stdout] test report::human::dupes::tests::duplication_multiple_groups_plural ... ok [INFO] [stdout] test report::human::dupes::tests::duplication_single_instance_no_plural ... ok [INFO] [stdout] test report::human::dupes::tests::duplication_suggestion_with_zero_savings_omits_savings_text ... ok [INFO] [stdout] test report::human::dupes::tests::mirrored_dirs_below_threshold_not_detected ... ok [INFO] [stdout] test report::human::dupes::tests::mirrored_dirs_detected ... ok [INFO] [stdout] test report::human::dupes::tests::single_instance_clone_group_no_connectors ... ok [INFO] [stdout] test report::human::health::tests::completely_empty_report_produces_no_lines ... ok [INFO] [stdout] test report::human::health::tests::all_sections_combined ... ok [INFO] [stdout] test report::human::health::tests::file_scores_docs_link ... ok [INFO] [stdout] test report::human::health::tests::file_scores_mi_color_thresholds ... ok [INFO] [stdout] test report::human::health::tests::file_scores_truncation_above_max_flat_items ... ok [INFO] [stdout] test report::human::health::tests::file_scores_single_entry ... ok [INFO] [stdout] test report::human::health::tests::finding_only_cognitive_exceeds ... ok [INFO] [stdout] test report::human::health::tests::finding_only_cyclomatic_exceeds ... ok [INFO] [stdout] test report::human::health::tests::findings_docs_link ... ok [INFO] [stdout] test report::human::health::tests::fmt_trend_delta_decimal_when_fractional ... ok [INFO] [stdout] test report::human::health::tests::fmt_trend_delta_integer_when_round ... ok [INFO] [stdout] test report::human::health::tests::fmt_trend_delta_percentage ... ok [INFO] [stdout] test report::human::health::tests::fmt_trend_val_decimal_when_fractional ... ok [INFO] [stdout] test report::human::health::tests::fmt_trend_val_integer_when_round ... ok [INFO] [stdout] test report::human::health::tests::fmt_trend_val_percentage ... ok [INFO] [stdout] test report::human::health::tests::format_window_labels ... ok [INFO] [stdout] test report::human::health::tests::health_coverage_gaps_render_section ... ok [INFO] [stdout] test report::human::health::tests::health_empty_findings_produces_no_header ... ok [INFO] [stdout] test report::human::health::tests::health_findings_grouped_by_file ... ok [INFO] [stdout] test report::human::health::tests::findings_across_multiple_files ... ok [INFO] [stdout] test report::human::health::tests::health_findings_show_function_details ... ok [INFO] [stdout] test report::human::health::tests::health_production_coverage_long_capture_shows_neither_warning_nor_prompt ... ok [INFO] [stdout] test report::human::health::tests::health_production_coverage_renders_section ... ok [INFO] [stdout] test report::human::health::tests::health_production_coverage_short_capture_shows_warning_and_prompt ... ok [INFO] [stdout] test report::human::health::tests::health_score_grade_a_display ... ok [INFO] [stdout] test report::human::health::tests::health_score_grade_c_display ... ok [INFO] [stdout] test report::human::health::tests::health_score_grade_f_display ... ok [INFO] [stdout] test report::human::health::tests::health_score_na_components_shown ... ok [INFO] [stdout] test report::human::health::tests::health_score_no_na_when_all_present ... ok [INFO] [stdout] test report::human::health::tests::health_score_zero_penalties_suppressed ... ok [INFO] [stdout] test report::human::health::tests::health_shown_vs_total_when_truncated ... ok [INFO] [stdout] test report::human::health::tests::health_trend_all_stable_collapsed ... ok [INFO] [stdout] test report::human::health::tests::health_trend_declining_display ... ok [INFO] [stdout] test report::human::health::tests::health_trend_improving_display ... ok [INFO] [stdout] test report::human::health::tests::health_trend_without_sha ... ok [INFO] [stdout] test report::human::health::tests::hotspot_score_high_medium_low ... ok [INFO] [stdout] test report::human::health::tests::hotspots_accelerating_trend ... ok [INFO] [stdout] test report::human::health::tests::hotspots_cooling_trend ... ok [INFO] [stdout] test report::human::health::tests::hotspots_docs_link ... ok [INFO] [stdout] test report::human::health::tests::hotspots_stable_trend ... ok [INFO] [stdout] test report::human::health::tests::hotspots_summary_no_exclusions ... ok [INFO] [stdout] test report::human::health::tests::hotspots_with_summary_and_since ... ok [INFO] [stdout] test report::human::health::tests::refactoring_targets_all_categories ... ok [INFO] [stdout] test list::tests::not_show_all_when_two_flags_set ... ok [INFO] [stdout] test list::tests::show_all_when_no_flags_set ... ok [INFO] [stdout] test migrate::jscpd::tests::migrate_jscpd_unmappable_with_suggestions ... ok [INFO] [stdout] test report::human::health::tests::refactoring_targets_efficiency_color_thresholds ... ok [INFO] [stdout] test migrate::tests::migrate_from_file_package_json_with_only_jscpd ... ok [INFO] [stdout] test report::human::health::tests::health_score_grade_b_display ... ok [INFO] [stdout] test report::human::health::tests::refactoring_targets_docs_link ... ok [INFO] [stdout] test migrate::knip_fields::tests::simple_field_present_string ... ok [INFO] [stdout] test report::human::health::tests::refactoring_targets_mixed_effort ... ok [INFO] [stdout] test report::human::health::tests::vital_signs_optional_fields_omitted_when_none ... ok [INFO] [stdout] test report::human::dupes::tests::duplication_families_show_suggestions ... ok [INFO] [stdout] test report::human::health::tests::vital_signs_plural_vs_singular ... ok [INFO] [stdout] test report::human::health::tests::vital_signs_shown_without_trend ... ok [INFO] [stdout] test report::human::health::tests::vital_signs_suppressed_when_trend_active ... ok [INFO] [stdout] test report::human::health::tests::vital_signs_zero_counts_suppressed ... ok [INFO] [stdout] test report::human::perf::tests::performance_output_contains_all_pipeline_stages ... ok [INFO] [stdout] test report::human::perf::tests::performance_output_omits_cache_detail_when_no_cache_hits ... ok [INFO] [stdout] test report::human::perf::tests::performance_output_shows_cache_detail_when_cache_hits_nonzero ... ok [INFO] [stdout] test report::human::tests::section_header_uses_bullet_indicator ... ok [INFO] [stdout] test report::human::tests::format_path_no_directory ... ok [INFO] [stdout] test report::human::tests::format_path_with_directory ... ok [INFO] [stdout] test report::human::tests::section_header_formats_for_all_levels ... ok [INFO] [stdout] test report::human::tests::strip_ansi_handles_empty_string ... ok [INFO] [stdout] test report::human::tests::strip_ansi_preserves_plain_text ... ok [INFO] [stdout] test report::human::tests::thousands_irregular ... ok [INFO] [stdout] test report::human::tests::thousands_large ... ok [INFO] [stdout] test report::human::tests::thousands_small ... ok [INFO] [stdout] test report::human::tests::thousands_zero ... ok [INFO] [stdout] test report::human::tests::strip_ansi_removes_color_codes ... ok [INFO] [stdout] test report::human::tests::thousands_boundary ... ok [INFO] [stdout] test report::json::tests::clone_family_has_actions ... ok [INFO] [stdout] test report::json::tests::clone_group_has_actions ... ok [INFO] [stdout] test report::json::tests::codeowners_pattern_for_root_file ... ok [INFO] [stdout] test report::json::tests::codeowners_pattern_normalizes_backslashes ... ok [INFO] [stdout] test report::human::health::tests::refactoring_targets_single_low_effort ... ok [INFO] [stdout] test report::json::tests::codeowners_pattern_two_level_path ... ok [INFO] [stdout] test report::json::tests::codeowners_pattern_uses_deepest_directory ... ok [INFO] [stdout] test report::json::tests::build_json_envelope_has_metadata_fields ... ok [INFO] [stdout] test report::json::tests::build_json_envelope_metadata_appears_first ... ok [INFO] [stdout] test report::json::tests::build_json_envelope_non_object_report ... ok [INFO] [stdout] test report::json::tests::health_empty_findings_no_actions ... ok [INFO] [stdout] test report::json::tests::health_finding_has_actions ... ok [INFO] [stdout] test report::json::tests::health_finding_suppress_has_placement ... ok [INFO] [stdout] test report::json::tests::health_json_includes_production_coverage_with_relative_paths_and_actions ... ok [INFO] [stdout] test report::json::tests::dupes_empty_results_no_actions ... ok [INFO] [stdout] test report::json::tests::hotspot_drift_emits_action ... ok [INFO] [stdout] test report::human::health::tests::refactoring_targets_truncation_above_max_flat_items ... ok [INFO] [stdout] test report::json::tests::hotspot_has_actions ... ok [INFO] [stdout] test report::json::tests::hotspot_unowned_emits_action_with_pattern ... ok [INFO] [stdout] test report::json::tests::hotspot_low_bus_factor_emits_action ... ok [INFO] [stdout] test report::json::tests::insert_meta_overwrites_existing_meta ... ok [INFO] [stdout] test report::json::tests::insert_meta_noop_on_non_object ... ok [INFO] [stdout] test report::json::tests::json_all_issue_type_arrays_present_in_empty_results ... ok [INFO] [stdout] test report::json::tests::json_circular_dependency_contains_expected_fields ... ok [INFO] [stdout] test report::json::tests::json_check_meta_integrates_correctly ... ok [INFO] [stdout] test report::json::tests::json_duplicate_export_contains_locations ... ok [INFO] [stdout] test report::json::tests::hotspot_unowned_skipped_when_codeowners_missing ... ok [INFO] [stdout] test report::json::tests::insert_meta_adds_key_to_object ... ok [INFO] [stdout] test report::json::tests::json_all_issue_types_have_actions ... ok [INFO] [stdout] test report::json::tests::json_elapsed_ms_large_duration ... ok [INFO] [stdout] test report::json::tests::json_elapsed_ms_sub_millisecond_truncated ... ok [INFO] [stdout] test report::json::tests::json_empty_results_have_no_actions_in_empty_arrays ... ok [INFO] [stdout] test report::json::tests::json_output_has_metadata_fields ... ok [INFO] [stdout] test report::json::tests::json_full_sample_results_total_issues_correct ... ok [INFO] [stdout] test report::json::tests::json_metadata_fields_appear_first ... ok [INFO] [stdout] test report::json::tests::json_multiple_unused_files ... ok [INFO] [stdout] test report::json::tests::json_empty_results_produce_valid_structure ... ok [INFO] [stdout] test report::json::tests::json_re_export_flagged_correctly ... ok [INFO] [stdout] test report::json::tests::json_output_includes_issue_arrays ... ok [INFO] [stdout] test report::json::tests::json_results_fields_do_not_shadow_metadata ... ok [INFO] [stdout] test report::json::tests::json_schema_version_is_4 ... ok [INFO] [stdout] test report::json::tests::json_elapsed_ms_zero_duration ... ok [INFO] [stdout] test report::json::tests::json_output_is_deterministic ... ok [INFO] [stdout] test report::json::tests::json_empty_results_round_trips_through_string ... ok [INFO] [stdout] test report::json::tests::json_path_outside_root_not_stripped ... ok [INFO] [stdout] test report::json::tests::json_full_sample_no_absolute_paths_in_output ... ok [INFO] [stdout] test report::json::tests::json_strips_root_from_circular_dependency_files ... ok [INFO] [stdout] test report::json::tests::json_serializes_to_valid_json ... ok [INFO] [stdout] test report::json::tests::json_total_issues_matches_results ... ok [INFO] [stdout] test report::json::tests::json_type_only_dependency_contains_expected_fields ... ok [INFO] [stdout] test report::json::tests::json_unused_class_member_contains_expected_fields ... ok [INFO] [stdout] test report::json::tests::json_unresolved_import_contains_expected_fields ... ok [INFO] [stdout] test report::json::tests::json_unlisted_dependency_contains_import_sites ... ok [INFO] [stdout] test report::json::tests::json_unused_dependency_contains_expected_fields ... ok [INFO] [stdout] test report::json::tests::json_unused_dependency_has_config_suppress_with_package_name ... ok [INFO] [stdout] test report::json::tests::json_unused_export_has_actions ... ok [INFO] [stdout] test report::json::tests::json_unused_dev_dependency_contains_expected_fields ... ok [INFO] [stdout] test report::json::tests::json_unused_file_contains_path ... ok [INFO] [stdout] test report::json::tests::json_unused_enum_member_contains_expected_fields ... ok [INFO] [stdout] test report::json::tests::json_unused_member_kind_serialized ... ok [INFO] [stdout] test report::json::tests::json_unused_export_contains_expected_fields ... ok [INFO] [stdout] test report::json::tests::json_unused_file_has_file_suppress_and_note ... ok [INFO] [stdout] test report::json::tests::json_version_matches_cargo_pkg_version ... ok [INFO] [stdout] test report::json::tests::json_unused_optional_dependency_contains_expected_fields ... ok [INFO] [stdout] test report::json::tests::refactoring_target_has_actions ... ok [INFO] [stdout] test report::json::tests::strip_root_prefix_deeply_nested_array_of_objects ... ok [INFO] [stdout] test report::json::tests::strip_root_prefix_empty_string ... ok [INFO] [stdout] test report::json::tests::json_unused_type_contains_expected_fields ... ok [INFO] [stdout] test report::json::tests::refactoring_target_without_evidence_has_no_suppress ... ok [INFO] [stdout] test report::json::tests::strip_root_prefix_leaves_numbers_and_booleans ... ok [INFO] [stdout] test report::json::tests::strip_root_prefix_handles_empty_string_after_strip ... ok [INFO] [stdout] test report::json::tests::strip_root_prefix_leaves_non_matching_string ... ok [INFO] [stdout] test report::json::tests::strip_root_prefix_normalizes_windows_separators ... ok [INFO] [stdout] test report::json::tests::strip_root_prefix_mixed_types ... ok [INFO] [stdout] test report::json::tests::strip_root_prefix_null_unchanged ... ok [INFO] [stdout] test report::json::tests::strip_root_prefix_recurses_into_nested_objects ... ok [INFO] [stdout] test report::json::tests::strip_root_prefix_on_string_value ... ok [INFO] [stdout] test report::json::tests::strip_root_prefix_recurses_into_arrays ... ok [INFO] [stdout] test report::json::tests::json_strips_root_from_duplicate_export_locations ... ok [INFO] [stdout] test report::markdown::tests::duplication_markdown_single_group_no_plural ... ok [INFO] [stdout] test report::markdown::tests::duplication_markdown_contains_families ... ok [INFO] [stdout] test report::markdown::tests::duplication_markdown_zero_savings_no_suffix ... ok [INFO] [stdout] test report::json::tests::json_strips_root_from_nested_locations ... ok [INFO] [stdout] test report::markdown::tests::duplication_markdown_contains_groups ... ok [INFO] [stdout] test report::markdown::tests::duplication_markdown_empty ... ok [INFO] [stdout] test report::markdown::tests::escape_backticks_handles_multiple ... ok [INFO] [stdout] test report::markdown::tests::escape_backticks_no_backticks_unchanged ... ok [INFO] [stdout] test report::markdown::tests::health_markdown_hotspots_table ... ok [INFO] [stdout] test report::markdown::tests::health_markdown_hotspots_no_excluded_message ... ok [INFO] [stdout] test report::markdown::tests::health_markdown_metric_legend_with_scores ... ok [INFO] [stdout] test report::markdown::tests::health_markdown_crap_column_shows_score_and_marker ... ok [INFO] [stdout] test report::markdown::tests::health_markdown_no_marker_when_below_threshold ... ok [INFO] [stdout] test report::markdown::tests::health_markdown_table_format ... ok [INFO] [stdout] test report::markdown::tests::health_markdown_truncated_findings_shown_count ... ok [INFO] [stdout] test report::markdown::tests::health_markdown_with_targets ... ok [INFO] [stdout] test report::markdown::tests::health_markdown_empty_no_findings ... ok [INFO] [stdout] test report::markdown::tests::health_markdown_with_coverage_gaps ... ok [INFO] [stdout] test report::markdown::tests::health_markdown_vital_signs_table ... ok [INFO] [stdout] test report::markdown::tests::markdown_circular_dep_format ... ok [INFO] [stdout] test report::markdown::tests::health_markdown_file_scores_table ... ok [INFO] [stdout] test report::markdown::tests::markdown_empty_results_no_issues ... ok [INFO] [stdout] test report::markdown::tests::markdown_contains_header_with_count ... ok [INFO] [stdout] test report::json::tests::json_paths_are_relative_to_root ... ok [INFO] [stdout] test report::markdown::tests::markdown_escapes_backticks_in_export_names ... ok [INFO] [stdout] test report::markdown::tests::markdown_contains_all_sections ... ok [INFO] [stdout] test report::markdown::tests::markdown_dep_in_workspace_shows_package_label ... ok [INFO] [stdout] test report::markdown::tests::markdown_dep_at_root_no_extra_label ... ok [INFO] [stdout] test report::markdown::tests::markdown_multiple_issues_plural ... ok [INFO] [stdout] test report::markdown::tests::markdown_re_export_tagged ... ok [INFO] [stdout] test report::markdown::tests::markdown_unresolved_import_grouped_by_file ... ok [INFO] [stdout] test report::markdown::tests::markdown_unused_dep_format ... ok [INFO] [stdout] test report::markdown::tests::markdown_exports_grouped_by_file ... ok [INFO] [stdout] test report::markdown::tests::markdown_type_only_dep_format ... ok [INFO] [stdout] test report::markdown::tests::markdown_escapes_backticks_in_package_names ... ok [INFO] [stdout] test report::markdown::tests::markdown_unused_export_grouped_by_file ... ok [INFO] [stdout] test report::markdown::tests::markdown_unused_file_format ... ok [INFO] [stdout] test report::markdown::tests::markdown_single_issue_no_plural ... ok [INFO] [stdout] test report::markdown::tests::markdown_unused_optional_dep ... ok [INFO] [stdout] test report::sarif::tests::duplication_sarif_structure ... ok [INFO] [stdout] test report::sarif::tests::health_sarif_both_thresholds ... ok [INFO] [stdout] test report::markdown::tests::markdown_strips_root_prefix ... ok [INFO] [stdout] test report::sarif::tests::health_sarif_cyclomatic_only ... ok [INFO] [stdout] test report::sarif::tests::health_sarif_cognitive_only ... ok [INFO] [stdout] test report::sarif::tests::health_sarif_crap_only_emits_crap_rule ... ok [INFO] [stdout] test report::sarif::tests::health_sarif_includes_coverage_gaps ... ok [INFO] [stdout] test report::sarif::tests::health_sarif_empty_no_results ... ok [INFO] [stdout] test report::sarif::tests::health_sarif_rules_have_full_descriptions ... ok [INFO] [stdout] test report::sarif::tests::health_sarif_includes_refactoring_targets ... ok [INFO] [stdout] test report::sarif::tests::sarif_circular_dep_line_zero_skips_region ... ok [INFO] [stdout] test report::sarif::tests::sarif_declares_all_rules ... ok [INFO] [stdout] test report::sarif::tests::sarif_class_member_message_format ... ok [INFO] [stdout] test report::sarif::tests::sarif_circular_dep_line_nonzero_has_region ... ok [INFO] [stdout] test report::sarif::tests::sarif_dependency_issues_point_to_package_json ... ok [INFO] [stdout] test report::sarif::tests::sarif_all_issue_types_produce_results ... ok [INFO] [stdout] test report::sarif::tests::sarif_dependency_line_zero_skips_region ... ok [INFO] [stdout] test report::sarif::tests::sarif_duplicate_export_emits_one_result_per_location ... ok [INFO] [stdout] test report::sarif::tests::sarif_dependency_line_nonzero_has_region ... ok [INFO] [stdout] test report::sarif::tests::sarif_empty_results_no_results_entries ... ok [INFO] [stdout] test report::sarif::tests::sarif_has_tool_driver_info ... ok [INFO] [stdout] test report::sarif::tests::sarif_result_no_region_omits_region_key ... ok [INFO] [stdout] test report::sarif::tests::sarif_non_re_export_has_no_properties ... ok [INFO] [stdout] test report::sarif::tests::health_sarif_cyclomatic_crap_uses_crap_rule ... ok [INFO] [stdout] test report::sarif::tests::sarif_enum_member_message_format ... ok [INFO] [stdout] test report::sarif::tests::sarif_result_with_region_includes_region ... ok [INFO] [stdout] test report::sarif::tests::sarif_rule_known_id_has_full_description ... ok [INFO] [stdout] test report::sarif::tests::sarif_re_export_has_properties ... ok [INFO] [stdout] test report::sarif::tests::sarif_rule_unknown_id_uses_fallback ... ok [INFO] [stdout] test report::sarif::tests::sarif_type_re_export_message ... ok [INFO] [stdout] test report::sarif::tests::sarif_has_required_top_level_fields ... ok [INFO] [stdout] test report::sarif::tests::sarif_unlisted_dep_multiple_import_sites ... ok [INFO] [stdout] test report::sarif::tests::sarif_file_write_produces_valid_sarif ... ok [INFO] [stdout] test report::sarif::tests::sarif_type_only_dep_line_zero_skips_region ... ok [INFO] [stdout] test report::sarif::tests::sarif_unresolved_import_is_error_level ... ok [INFO] [stdout] test report::sarif::tests::sarif_unused_file_result ... ok [INFO] [stdout] test report::sarif::tests::severity_to_sarif_level_error ... ok [INFO] [stdout] test report::sarif::tests::severity_to_sarif_level_off ... ok [INFO] [stdout] test report::sarif::tests::severity_to_sarif_level_warn ... ok [INFO] [stdout] test report::sarif::tests::sarif_serializes_to_valid_json ... ok [INFO] [stdout] test report::tests::elide_common_prefix_both_empty ... ok [INFO] [stdout] test report::tests::elide_common_prefix_deep_monorepo ... ok [INFO] [stdout] test report::tests::elide_common_prefix_empty_target ... ok [INFO] [stdout] test report::tests::elide_common_prefix_identical_files ... ok [INFO] [stdout] test report::tests::elide_common_prefix_identical_paths ... ok [INFO] [stdout] test report::sarif::tests::sarif_unlisted_dependency_points_to_import_site ... ok [INFO] [stdout] test report::tests::elide_common_prefix_no_dirs ... ok [INFO] [stdout] test report::sarif::tests::sarif_unused_export_includes_region ... ok [INFO] [stdout] test report::tests::elide_common_prefix_no_shared ... ok [INFO] [stdout] test report::tests::elide_common_prefix_partial_filename_match_not_stripped ... ok [INFO] [stdout] test report::tests::elide_common_prefix_partial_shared ... ok [INFO] [stdout] test report::tests::elide_common_prefix_same_file_different_extension ... ok [INFO] [stdout] test report::tests::elide_common_prefix_shared_dir ... ok [INFO] [stdout] test report::tests::emit_json_returns_success_for_valid_value ... ok [INFO] [stdout] test report::tests::level_is_copy ... ok [INFO] [stdout] test report::tests::normalize_uri_empty_string ... ok [INFO] [stdout] test report::tests::normalize_uri_backslashes_replaced ... ok [INFO] [stdout] test report::sarif::tests::sarif_warn_severity_produces_warning_level ... ok [INFO] [stdout] test report::tests::normalize_uri_forward_slashes_unchanged ... ok [INFO] [stdout] test report::tests::normalize_uri_catch_all_route ... ok [INFO] [stdout] test report::tests::normalize_uri_mixed_slashes ... ok [INFO] [stdout] test report::sarif::tests::sarif_unused_optional_dependency_result ... ok [INFO] [stdout] test report::tests::normalize_uri_multiple_dynamic_segments ... ok [INFO] [stdout] test report::tests::normalize_uri_no_special_chars ... ok [INFO] [stdout] test report::sarif::tests::sarif_unused_file_has_no_region ... ok [INFO] [stdout] test report::tests::normalize_uri_optional_catch_all_route ... ok [INFO] [stdout] test report::tests::normalize_uri_only_backslashes ... ok [INFO] [stdout] test report::tests::plural_one_is_singular ... ok [INFO] [stdout] test report::tests::normalize_uri_single_bracket_pair ... ok [INFO] [stdout] test report::tests::plural_two_is_plural ... ok [INFO] [stdout] test report::tests::normalize_uri_path_with_spaces ... ok [INFO] [stdout] test report::tests::plural_zero_is_plural ... ok [INFO] [stdout] test report::sarif::tests::sarif_unlisted_dep_no_import_sites ... ok [INFO] [stdout] test report::tests::plural_large_number ... ok [INFO] [stdout] test report::tests::elide_common_prefix_empty_base ... ok [INFO] [stdout] test report::tests::proptests::plural_singular_only_for_one ... ok [INFO] [stdout] test report::tests::proptests::plural_returns_empty_or_s ... ok [INFO] [stdout] test report::tests::relative_path_deeply_nested ... ok [INFO] [stdout] test report::tests::relative_path_partial_name_match_not_stripped ... ok [INFO] [stdout] test report::tests::relative_path_returns_full_path_when_no_prefix ... ok [INFO] [stdout] test report::tests::relative_path_strips_root_prefix ... ok [INFO] [stdout] test report::tests::relative_uri_at_root_file ... ok [INFO] [stdout] test report::tests::relative_path_identical_paths_returns_empty ... ok [INFO] [stdout] test report::tests::relative_path_at_root_returns_empty_or_file ... ok [INFO] [stdout] test report::tests::relative_uri_encodes_brackets ... ok [INFO] [stdout] test report::tests::relative_uri_encodes_nested_dynamic_routes ... ok [INFO] [stdout] test report::tests::relative_uri_no_common_prefix_returns_full ... ok [INFO] [stdout] test report::tests::severity_error_maps_to_level_error ... ok [INFO] [stdout] test report::tests::severity_off_maps_to_level_info ... ok [INFO] [stdout] test report::tests::severity_to_level_is_const_evaluable ... ok [INFO] [stdout] test report::tests::severity_warn_maps_to_level_warn ... ok [INFO] [stdout] test report::tests::split_dir_filename_deeply_nested ... ok [INFO] [stdout] test report::tests::split_dir_filename_empty ... ok [INFO] [stdout] test report::tests::relative_uri_combines_stripping_and_encoding ... ok [INFO] [stdout] test report::tests::split_dir_filename_no_dir ... ok [INFO] [stdout] test report::tests::relative_uri_produces_forward_slash_path ... ok [INFO] [stdout] test report::tests::split_dir_filename_trailing_slash ... ok [INFO] [stdout] test report::tests::split_dir_filename_with_dir ... ok [INFO] [stdout] test schema::tests::build_arg_schema_bool_type ... ok [INFO] [stdout] test schema::tests::build_arg_schema_includes_short_flag ... ok [INFO] [stdout] test report::tests::split_dir_filename_single_slash ... ok [INFO] [stdout] test schema::tests::schema_exit_code_2_mentions_json_errors ... ok [INFO] [stdout] test schema::tests::schema_has_global_flags ... ok [INFO] [stdout] test schema::tests::schema_has_commands_array ... ok [INFO] [stdout] test schema::tests::schema_has_issue_types ... ok [INFO] [stdout] test schema::tests::schema_has_name_and_version ... ok [INFO] [stdout] test schema::tests::schema_output_formats_include_all_formats ... ok [INFO] [stdout] test schema::tests::schema_severity_levels ... ok [INFO] [stdout] test tests::emit_error_returns_given_exit_code ... ok [INFO] [stdout] test tests::format_parsing_covers_all_variants ... ok [INFO] [stdout] test schema::tests::schema_includes_environment_variables ... ok [INFO] [stdout] test tests::tracing_filter_defaults_to_warn_without_env ... ok [INFO] [stdout] test tests::quiet_parsing_logic ... ok [INFO] [stdout] test tests::tracing_filter_treats_empty_env_as_off ... ok [INFO] [stdout] test validate::tests::control_chars_allows_empty_string ... ok [INFO] [stdout] test validate::tests::control_chars_allows_newline ... ok [INFO] [stdout] test validate::tests::control_chars_allows_normal_text ... ok [INFO] [stdout] test validate::tests::control_chars_allows_paths_with_dots_and_slashes ... ok [INFO] [stdout] test validate::tests::control_chars_allows_space ... ok [INFO] [stdout] test tests::tracing_filter_respects_explicit_env_directives ... ok [INFO] [stdout] test validate::tests::control_chars_allows_unicode ... ok [INFO] [stdout] test tests::cli_definition_has_no_flag_collisions ... ok [INFO] [stdout] test validate::tests::control_chars_allows_tab ... ok [INFO] [stdout] test validate::tests::control_chars_rejects_backspace ... ok [INFO] [stdout] test validate::tests::control_chars_rejects_bell ... ok [INFO] [stdout] test validate::tests::control_chars_rejects_carriage_return ... ok [INFO] [stdout] test validate::tests::control_chars_rejects_escape ... ok [INFO] [stdout] test validate::tests::control_chars_rejects_null_byte ... ok [INFO] [stdout] test validate::tests::git_ref_allows_commit_sha ... ok [INFO] [stdout] test validate::tests::git_ref_allows_dots_in_branch ... ok [INFO] [stdout] test validate::tests::git_ref_allows_head_tilde_caret ... ok [INFO] [stdout] test validate::tests::git_ref_allows_multiple_braces_segments ... ok [INFO] [stdout] test validate::tests::git_ref_allows_reflog_index ... ok [INFO] [stdout] test validate::tests::git_ref_allows_reflog_relative_date ... ok [INFO] [stdout] test validate::tests::git_ref_allows_reflog_timestamp ... ok [INFO] [stdout] test validate::tests::git_ref_allows_simple_branch_names ... ok [INFO] [stdout] test validate::tests::git_ref_allows_space_in_complex_reflog ... ok [INFO] [stdout] test validate::tests::git_ref_allows_underscores ... ok [INFO] [stdout] test validate::tests::control_chars_rejects_form_feed ... ok [INFO] [stdout] test validate::tests::git_ref_rejects_ampersand ... ok [INFO] [stdout] test validate::tests::git_ref_rejects_colon_outside_braces ... ok [INFO] [stdout] test validate::tests::control_chars_error_includes_position ... ok [INFO] [stdout] test validate::tests::git_ref_rejects_backtick ... ok [INFO] [stdout] test validate::tests::git_ref_rejects_leading_dash ... ok [INFO] [stdout] test validate::tests::git_ref_rejects_parentheses ... ok [INFO] [stdout] test validate::tests::git_ref_rejects_pipe ... ok [INFO] [stdout] test validate::tests::git_ref_rejects_semicolon ... ok [INFO] [stdout] test validate::tests::git_ref_rejects_space_outside_braces ... ok [INFO] [stdout] test validate::tests::git_ref_rejects_unclosed_brace ... ok [INFO] [stdout] test validate::tests::validate_root_nonexistent_path ... ok [INFO] [stdout] test validate::tests::validate_root_valid_dir ... ok [INFO] [stdout] test vital_signs::tests::compute_cyclomatic_stats ... ok [INFO] [stdout] test validate::tests::git_ref_rejects_empty ... ok [INFO] [stdout] test vital_signs::tests::compute_hotspot_count_with_threshold ... ok [INFO] [stdout] test report::tests::proptests::normalize_uri_encodes_all_brackets ... ok [INFO] [stdout] test vital_signs::tests::compute_trend_no_snapshots ... ok [INFO] [stdout] test vital_signs::tests::compute_trend_stable_within_tolerance ... ok [INFO] [stdout] test vital_signs::tests::compute_trend_uses_most_recent_snapshot ... ok [INFO] [stdout] test vital_signs::tests::compute_with_analysis_counts ... ok [INFO] [stdout] test validate::tests::git_ref_rejects_dollar_sign ... ok [INFO] [stdout] test vital_signs::tests::compute_without_hotspots_gives_none ... ok [INFO] [stdout] test vital_signs::tests::compute_trend_improving ... ok [INFO] [stdout] test vital_signs::tests::compute_trend_includes_raw_counts ... ok [INFO] [stdout] test vital_signs::tests::days_to_ymd_epoch ... ok [INFO] [stdout] test vital_signs::tests::days_to_ymd_known_date ... ok [INFO] [stdout] test vital_signs::tests::health_score_clamped_at_zero ... ok [INFO] [stdout] test vital_signs::tests::health_score_complexity_penalty ... ok [INFO] [stdout] test vital_signs::tests::health_score_dead_code_penalty ... ok [INFO] [stdout] test vital_signs::tests::health_score_duplication_penalty ... ok [INFO] [stdout] test vital_signs::tests::health_score_hotspot_normalized_by_files ... ok [INFO] [stdout] test vital_signs::tests::health_score_no_optional_metrics ... ok [INFO] [stdout] test vital_signs::tests::health_score_perfect ... ok [INFO] [stdout] test vital_signs::tests::load_snapshots_ignores_non_json ... ok [INFO] [stdout] test vital_signs::tests::load_snapshots_skips_corrupt_files ... ok [INFO] [stdout] test vital_signs::tests::load_snapshots_returns_sorted ... ok [INFO] [stdout] test vital_signs::tests::load_snapshots_empty_dir ... ok [INFO] [stdout] test watch::tests::collect_changed_paths_deduplicates ... ok [INFO] [stdout] test watch::tests::collect_changed_paths_empty_events ... ok [INFO] [stdout] test watch::tests::collect_changed_paths_filters_non_source ... ok [INFO] [stdout] test vital_signs::tests::snapshot_save_creates_nested_dirs ... ok [INFO] [stdout] test watch::tests::collect_changed_paths_includes_config ... ok [INFO] [stdout] test watch::tests::collect_changed_paths_ignores_non_any_events ... ok [INFO] [stdout] test watch::tests::not_relevant_config ... ok [INFO] [stdout] test watch::tests::collect_changed_paths_strips_root_prefix ... ok [INFO] [stdout] test watch::tests::not_relevant_source ... ok [INFO] [stdout] test vital_signs::tests::snapshot_save_explicit_path ... ok [INFO] [stdout] test watch::tests::relevant_config_files ... ok [INFO] [stdout] test watch::tests::relevant_source_js_extensions ... ok [INFO] [stdout] test watch::tests::relevant_source_style_extensions ... ok [INFO] [stdout] test watch::tests::relevant_source_ts_extensions ... ok [INFO] [stdout] test watch::tests::relevant_source_framework_extensions ... ok [INFO] [stdout] test watch::tests::reload_config_failure_keeps_previous_config ... ok [INFO] [stdout] test vital_signs::tests::snapshot_save_and_load ... ok [INFO] [stdout] test watch::tests::reload_config_successfully_replaces_previous_config ... ok [INFO] [stdout] test report::tests::proptests::normalize_uri_no_backslashes ... ok [INFO] [stdout] test report::tests::proptests::elide_common_prefix_returns_suffix_of_target ... ok [INFO] [stdout] test report::tests::proptests::relative_path_never_panics ... ok [INFO] [stdout] test report::tests::proptests::split_dir_filename_reconstructs_path ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1565 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.97s [INFO] [stdout] [INFO] [stderr] Running tests/audit_tests.rs (/opt/rustwide/target/debug/deps/audit_tests-597a7a94e1bb7525) [INFO] [stdout] [INFO] [stdout] running 9 tests [INFO] [stdout] test audit_rejects_global_save_baseline_flag ... ok [INFO] [stdout] test audit_pass_verdict_when_no_changes ... ok [INFO] [stdout] test audit_badge_format_exits_2 ... ok [INFO] [stdout] test audit_json_has_verdict_and_schema ... ok [INFO] [stdout] test audit_rejects_global_baseline_flag ... ok [INFO] [stdout] test audit_max_crap_flag_fails_when_threshold_crossed ... ok [INFO] [stdout] test audit_json_has_summary_with_changes ... ok [INFO] [stdout] test audit_without_baseline_reports_preexisting_issues ... ok [INFO] [stderr] Running tests/changed_since_added_files_tests.rs (/opt/rustwide/target/debug/deps/changed_since_added_files_tests-6086fad5c534bc54) [INFO] [stdout] test audit_with_dead_code_baseline_filters_preexisting_issues ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.61s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 6 tests [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpIsQHP6/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpPvkBf9/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpi9UMOb/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpwH3QLN/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpCgOVZc/.git/ [INFO] [stdout] [main (root-commit) 933a066] initial [INFO] [stdout] 3 files changed, 4 insertions(+) [INFO] [stdout] create mode 100644 package.json [INFO] [stdout] create mode 100644 src/base.ts [INFO] [stdout] create mode 100644 src/index.ts [INFO] [stdout] [main (root-commit) 0ffa783] initial [INFO] [stdout] 3 files changed, 4 insertions(+) [INFO] [stdout] create mode 100644 package.json [INFO] [stdout] create mode 100644 src/base.ts [INFO] [stdout] create mode 100644 src/index.ts [INFO] [stdout] [main (root-commit) 9d3f64d] initial [INFO] [stdout] 4 files changed, 17 insertions(+) [INFO] [stdout] create mode 100644 package.json [INFO] [stdout] create mode 100644 src/base.ts [INFO] [stdout] create mode 100644 src/index.ts [INFO] [stdout] create mode 100644 src/original.ts [INFO] [stdout] [main (root-commit) 9d3f64d] initial [INFO] [stdout] 4 files changed, 17 insertions(+) [INFO] [stdout] create mode 100644 package.json [INFO] [stdout] create mode 100644 src/base.ts [INFO] [stdout] create mode 100644 src/index.ts [INFO] [stdout] create mode 100644 src/original.ts [INFO] [stdout] Initialized empty Git repository in /tmp/.tmphhNxWA/.git/ [INFO] [stdout] [main d061ad7] add changed files [INFO] [stdout] 2 files changed, 14 insertions(+) [INFO] [stdout] create mode 100644 src/dupe.ts [INFO] [stdout] create mode 100644 src/new.ts [INFO] [stdout] [main (root-commit) 9d3f64d] initial [INFO] [stdout] 4 files changed, 17 insertions(+) [INFO] [stdout] create mode 100644 package.json [INFO] [stdout] create mode 100644 src/base.ts [INFO] [stdout] create mode 100644 src/index.ts [INFO] [stdout] create mode 100644 src/original.ts [INFO] [stdout] test check_changed_since_keeps_staged_added_file_type_findings ... ok [INFO] [stdout] [main d061ad7] add changed files [INFO] [stdout] 2 files changed, 14 insertions(+) [INFO] [stdout] create mode 100644 src/dupe.ts [INFO] [stdout] create mode 100644 src/new.ts [INFO] [stdout] [main (root-commit) c91cb81] initial [INFO] [stdout] 3 files changed, 4 insertions(+) [INFO] [stdout] create mode 100644 package.json [INFO] [stdout] create mode 100644 src/base.ts [INFO] [stdout] create mode 100644 src/index.ts [INFO] [stdout] [main d061ad7] add changed files [INFO] [stdout] 2 files changed, 14 insertions(+) [INFO] [stdout] create mode 100644 src/dupe.ts [INFO] [stdout] create mode 100644 src/new.ts [INFO] [stdout] test check_changed_since_keeps_untracked_added_file_type_findings ... ok [INFO] [stdout] test check_changed_since_keeps_added_file_findings ... ok [INFO] [stdout] test check_changed_since_keeps_dirty_modified_file_type_findings ... ok [INFO] [stdout] test dupes_changed_since_keeps_groups_with_added_file_instances ... ok [INFO] [stderr] Running tests/changed_workspaces_tests.rs (/opt/rustwide/target/debug/deps/changed_workspaces_tests-f2b3d4e90c500739) [INFO] [stdout] test combined_changed_since_keeps_added_file_findings ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.46s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 6 tests [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpn4sGzA/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpGBG4UG/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpzY5LvP/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpHXcxYP/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp3zApGc/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp0NtdsG/.git/ [INFO] [stdout] [main (root-commit) 544ee93] initial [INFO] [stdout] 2 files changed, 2 insertions(+) [INFO] [stdout] create mode 100644 package.json [INFO] [stdout] create mode 100644 src/index.ts [INFO] [stdout] [main (root-commit) 2d8a6f0] initial [INFO] [stdout] 7 files changed, 11 insertions(+) [INFO] [stdout] create mode 100644 package.json [INFO] [stdout] create mode 100644 packages/api/package.json [INFO] [stdout] create mode 100644 packages/api/src/index.ts [INFO] [stdout] create mode 100644 packages/api/src/utils.ts [INFO] [stdout] create mode 100644 packages/ui/package.json [INFO] [stdout] create mode 100644 packages/ui/src/index.ts [INFO] [stdout] create mode 100644 packages/ui/src/utils.ts [INFO] [stdout] [main (root-commit) 2d8a6f0] initial [INFO] [stdout] 7 files changed, 11 insertions(+) [INFO] [stdout] create mode 100644 package.json [INFO] [stdout] create mode 100644 packages/api/package.json [INFO] [stdout] create mode 100644 packages/api/src/index.ts [INFO] [stdout] create mode 100644 packages/api/src/utils.ts [INFO] [stdout] create mode 100644 packages/ui/package.json [INFO] [stdout] create mode 100644 packages/ui/src/index.ts [INFO] [stdout] create mode 100644 packages/ui/src/utils.ts [INFO] [stdout] [main (root-commit) 2d8a6f0] initial [INFO] [stdout] 7 files changed, 11 insertions(+) [INFO] [stdout] create mode 100644 package.json [INFO] [stdout] create mode 100644 packages/api/package.json [INFO] [stdout] create mode 100644 packages/api/src/index.ts [INFO] [stdout] create mode 100644 packages/api/src/utils.ts [INFO] [stdout] create mode 100644 packages/ui/package.json [INFO] [stdout] create mode 100644 packages/ui/src/index.ts [INFO] [stdout] create mode 100644 packages/ui/src/utils.ts [INFO] [stdout] [main 6cd68cd] ui: add extra [INFO] [stdout] 1 file changed, 1 insertion(+) [INFO] [stdout] create mode 100644 packages/ui/src/extra.ts [INFO] [stdout] [main (root-commit) 2d8a6f0] initial [INFO] [stdout] 7 files changed, 11 insertions(+) [INFO] [stdout] create mode 100644 package.json [INFO] [stdout] create mode 100644 packages/api/package.json [INFO] [stdout] create mode 100644 packages/api/src/index.ts [INFO] [stdout] create mode 100644 packages/api/src/utils.ts [INFO] [stdout] create mode 100644 packages/ui/package.json [INFO] [stdout] create mode 100644 packages/ui/src/index.ts [INFO] [stdout] create mode 100644 packages/ui/src/utils.ts [INFO] [stdout] test changed_workspaces_without_monorepo_errors ... ok [INFO] [stdout] [main e156fa2] root: bump [INFO] [stdout] 1 file changed, 1 insertion(+), 1 deletion(-) [INFO] [stdout] [main (root-commit) 2d8a6f0] initial [INFO] [stdout] 7 files changed, 11 insertions(+) [INFO] [stdout] create mode 100644 package.json [INFO] [stdout] create mode 100644 packages/api/package.json [INFO] [stdout] create mode 100644 packages/api/src/index.ts [INFO] [stdout] create mode 100644 packages/api/src/utils.ts [INFO] [stdout] create mode 100644 packages/ui/package.json [INFO] [stdout] create mode 100644 packages/ui/src/index.ts [INFO] [stdout] create mode 100644 packages/ui/src/utils.ts [INFO] [stdout] test changed_workspaces_bad_ref_is_hard_error ... ok [INFO] [stdout] test workspace_and_changed_workspaces_are_mutually_exclusive ... ok [INFO] [stdout] test changed_workspaces_root_only_diff_scopes_to_empty ... ok [INFO] [stdout] test changed_workspaces_scopes_to_workspaces_with_changes ... ok [INFO] [stdout] test changed_workspaces_scopes_to_workspace_with_untracked_file ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.74s [INFO] [stdout] [INFO] [stderr] Running tests/check_tests.rs (/opt/rustwide/target/debug/deps/check_tests-d7ac4be3b621d6b2) [INFO] [stdout] [INFO] [stdout] running 19 tests [INFO] [stdout] test check_invalid_root_exits_2 ... ok [INFO] [stdout] test check_json_error_format ... ok [INFO] [stdout] test check_ci_flag_implies_fail_on_issues ... ok [INFO] [stdout] test check_human_output_unused_deps_has_content ... ok [INFO] [stdout] test check_compact_format_has_no_ansi ... ok [INFO] [stdout] test check_json_format_produces_valid_json ... ok [INFO] [stdout] test check_json_has_total_issues ... ok [INFO] [stdout] test check_human_output_unused_exports_only ... ok [INFO] [stdout] test check_multiple_filters_combined ... ok [INFO] [stdout] test check_json_has_version_and_elapsed ... ok [INFO] [stdout] test check_human_output_unused_files_only ... ok [INFO] [stdout] test check_codeclimate_format_is_array ... ok [INFO] [stdout] test check_markdown_format_has_heading ... ok [INFO] [stdout] test check_warn_severity_exits_1_with_fail_on_issues ... ok [INFO] [stdout] test check_unused_deps_filter ... ok [INFO] [stdout] test check_sarif_format_has_schema ... ok [INFO] [stdout] test check_with_issues_exits_1 ... ok [INFO] [stdout] test check_unused_files_filter_limits_output ... ok [INFO] [stderr] Running tests/codeowners_tests.rs (/opt/rustwide/target/debug/deps/codeowners_tests-71f033c9938a1bc6) [INFO] [stdout] test check_warn_severity_exits_0_without_fail_flag ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.80s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 7 tests [INFO] [stdout] test discover_returns_err_for_repo_without_codeowners ... ok [INFO] [stdout] test from_file_surfaces_parse_error_for_malformed_glob ... ok [INFO] [stderr] Running tests/dupes_tests.rs (/opt/rustwide/target/debug/deps/dupes_tests-e7b94d3931b8e591) [INFO] [stdout] test load_with_explicit_path_bypasses_probe ... ok [INFO] [stdout] test gitlab_codeowners_probed_at_root ... ok [INFO] [stdout] test gitlab_section_shared_lead_owner_regression_133 ... ok [INFO] [stdout] test gitlab_codeowners_reproduction_from_issue_127 ... ok [INFO] [stdout] test gitlab_exclusion_pattern_clears_ownership_end_to_end ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test dupes_json_paths_are_relative ... ok [INFO] [stdout] test dupes_strict_mode_accepted ... ok [INFO] [stdout] test dupes_json_output_has_clone_groups ... ok [INFO] [stdout] test dupes_mild_mode_accepted ... ok [INFO] [stdout] test dupes_min_tokens_filter ... ok [INFO] [stdout] test dupes_top_flag ... ok [INFO] [stdout] test dupes_json_has_stats ... ok [INFO] [stdout] test dupes_human_output_snapshot ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.33s [INFO] [stdout] [INFO] [stderr] Running tests/dupes_workspace_tests.rs (/opt/rustwide/target/debug/deps/dupes_workspace_tests-a074bf8586a58ab1) [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] Initialized empty Git repository in /tmp/.tmp4uVYDQ/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpcLgxCb/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpPxbLeW/.git/ [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpOoU4KF/.git/ [INFO] [stdout] [main (root-commit) 64d819c] initial [INFO] [stdout] 5 files changed, 23 insertions(+) [INFO] [stdout] create mode 100644 package.json [INFO] [stdout] create mode 100644 packages/api/package.json [INFO] [stdout] create mode 100644 packages/api/src/index.ts [INFO] [stdout] create mode 100644 packages/ui/package.json [INFO] [stdout] create mode 100644 packages/ui/src/index.ts [INFO] [stdout] [main (root-commit) 64d819c] initial [INFO] [stdout] 5 files changed, 23 insertions(+) [INFO] [stdout] create mode 100644 package.json [INFO] [stdout] create mode 100644 packages/api/package.json [INFO] [stdout] create mode 100644 packages/api/src/index.ts [INFO] [stdout] create mode 100644 packages/ui/package.json [INFO] [stdout] create mode 100644 packages/ui/src/index.ts [INFO] [stdout] [main (root-commit) 64d819c] initial [INFO] [stdout] 5 files changed, 23 insertions(+) [INFO] [stdout] create mode 100644 package.json [INFO] [stdout] create mode 100644 packages/api/package.json [INFO] [stdout] create mode 100644 packages/api/src/index.ts [INFO] [stdout] create mode 100644 packages/ui/package.json [INFO] [stdout] create mode 100644 packages/ui/src/index.ts [INFO] [stdout] [main (root-commit) 64d819c] initial [INFO] [stdout] 5 files changed, 23 insertions(+) [INFO] [stdout] create mode 100644 package.json [INFO] [stdout] create mode 100644 packages/api/package.json [INFO] [stdout] create mode 100644 packages/api/src/index.ts [INFO] [stdout] create mode 100644 packages/ui/package.json [INFO] [stdout] create mode 100644 packages/ui/src/index.ts [INFO] [stdout] test dupes_without_scope_finds_cross_package_clone ... ok [INFO] [stdout] test dupes_workspace_scope_drops_cross_package_only_group ... ok [INFO] [stdout] test combined_workspace_scope_applies_to_dupes ... ok [INFO] [stdout] test combined_changed_workspaces_head_drops_all_dupes ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.63s [INFO] [stdout] [INFO] [stderr] Running tests/exit_code_tests.rs (/opt/rustwide/target/debug/deps/exit_code_tests-0e0292d8cd00dfc7) [INFO] [stdout] [INFO] [stdout] running 14 tests [INFO] [stdout] test combined_only_and_skip_are_mutually_exclusive ... ok [INFO] [stdout] test combined_only_dead_code ... ok [INFO] [stdout] test baseline_filters_known_issues ... ok [INFO] [stdout] test changed_since_accepts_head ... ok [INFO] [stdout] test fail_on_issues_check_exits_1_with_issues ... ok [INFO] [stdout] test fail_on_issues_dupes_exits_1_with_clones ... ok [INFO] [stdout] test nonexistent_root_exits_2 ... ok [INFO] [stdout] test no_package_json_returns_empty_results ... ok [INFO] [stdout] test save_baseline_creates_file ... ok [INFO] [stdout] test combined_mode_hidden_coverage_gap_gate_does_not_fail ... ok [INFO] [stdout] test combined_mode_runs_successfully ... ok [INFO] [stdout] test combined_human_output_labels_metrics_line ... ok [INFO] [stdout] test combined_skip_dead_code ... ok [INFO] [stderr] Running tests/fix_tests.rs (/opt/rustwide/target/debug/deps/fix_tests-9bb02a892d640407) [INFO] [stdout] test combined_mode_config_enabled_coverage_gaps_stays_out_of_health_section ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.62s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 5 tests [INFO] [stdout] test fix_without_yes_in_non_tty_exits_2 ... ok [INFO] [stdout] test fix_dry_run_does_not_have_applied_key ... ok [INFO] [stdout] test fix_dry_run_exits_0 ... ok [INFO] [stdout] test fix_dry_run_finds_fixable_items ... ok [INFO] [stderr] Running tests/flags_tests.rs (/opt/rustwide/target/debug/deps/flags_tests-f4413c6280014078) [INFO] [stdout] test fix_dry_run_json_has_dry_run_flag ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.19s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test feature_flag_suppression_next_line ... ok [INFO] [stdout] test feature_flag_suppression_file_wide ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s [INFO] [stdout] [INFO] [stderr] Running tests/health_tests.rs (/opt/rustwide/target/debug/deps/health_tests-16f8086f15ea3554) [INFO] [stdout] [INFO] [stdout] running 19 tests [INFO] [stdout] Initialized empty Git repository in /tmp/.tmpP3wHdi/.git/ [INFO] [stderr] hint: Using 'master' as the name for the initial branch. This default branch name [INFO] [stderr] hint: is subject to change. To configure the initial branch name to use in all [INFO] [stderr] hint: of your new repositories, which will suppress this warning, call: [INFO] [stderr] hint: [INFO] [stderr] hint: git config --global init.defaultBranch [INFO] [stderr] hint: [INFO] [stderr] hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and [INFO] [stderr] hint: 'development'. The just-created branch can be renamed via this command: [INFO] [stderr] hint: [INFO] [stderr] hint: git branch -m [INFO] [stdout] [master (root-commit) 8509c22] initial [INFO] [stdout] 9 files changed, 49 insertions(+) [INFO] [stdout] create mode 100644 package.json [INFO] [stdout] create mode 100644 src/covered.ts [INFO] [stdout] create mode 100644 src/fixture-only.ts [INFO] [stdout] create mode 100644 src/main.ts [INFO] [stdout] create mode 100644 src/setup-only.ts [INFO] [stdout] create mode 100644 tests/covered.test.ts [INFO] [stdout] create mode 100644 tests/fixtures/helper.ts [INFO] [stdout] create mode 100644 tests/setup.ts [INFO] [stdout] create mode 100644 vitest.config.ts [INFO] [stdout] [master bccb558] update fixture gap [INFO] [stdout] 1 file changed, 1 insertion(+), 1 deletion(-) [INFO] [stdout] test health_exits_0_below_threshold ... ok [INFO] [stdout] test health_coverage_gaps_production_excludes_dead_test_helpers ... ok [INFO] [stdout] test health_exits_0_when_crap_below_threshold ... ok [INFO] [stdout] test health_coverage_gaps_changed_since_scopes_results ... ok [INFO] [stdout] test health_exits_1_when_crap_threshold_exceeded ... ok [INFO] [stdout] test health_coverage_gaps_flag_reports_runtime_gaps ... ok [INFO] [stdout] test health_exits_1_when_threshold_exceeded ... ok [INFO] [stdout] test health_coverage_gaps_suppressed_file_excluded ... ok [INFO] [stdout] test health_json_has_findings ... ok [INFO] [stdout] test health_human_output_snapshot ... ok [INFO] [stdout] test health_file_scores_flag ... ok [INFO] [stdout] test health_coverage_gaps_workspace_scope_limits_results ... ok [INFO] [stdout] test health_file_scores_include_vue_sfc_files ... ok [INFO] [stdout] test health_complexity_reports_vue_sfc_functions ... ok [INFO] [stdout] test health_score_flag_shows_score ... ok [INFO] [stdout] test health_coverage_gaps_config_error_enforces_without_flag ... ok [INFO] [stdout] test health_score_flag_with_config_does_not_render_coverage_gaps ... ok [INFO] [stdout] test health_score_flag_with_config_error_fails_without_rendering_coverage_gaps ... ok [INFO] [stdout] test health_json_output_is_valid ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.10s [INFO] [stdout] [INFO] [stderr] Running tests/init_tests.rs (/opt/rustwide/target/debug/deps/init_tests-5dcd1236507ef2df) [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test init_created_config_is_valid_json ... ok [INFO] [stdout] test init_creates_fallowrc_json ... ok [INFO] [stdout] test init_creates_toml_with_flag ... ok [INFO] [stdout] test init_exits_nonzero_if_config_exists ... ok [INFO] [stderr] Running tests/list_tests.rs (/opt/rustwide/target/debug/deps/list_tests-de97b2f0356d0cec) [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 43 tests [INFO] [stdout] test list_basic_project_detects_typescript_plugin ... ok [INFO] [stdout] test list_boundaries_json_reports_not_configured_when_absent ... ok [INFO] [stdout] test list_boundaries_json_reports_zone_and_rule_counts ... ok [INFO] [stdout] test list_boundaries_only_json_omits_plugins_files_and_entry_points ... ok [INFO] [stdout] test list_cjs_project_discovers_js_files ... ok [INFO] [stdout] test list_basic_project_main_entry_point_source ... ok [INFO] [stdout] test list_entry_point_has_source_field ... ok [INFO] [stdout] test list_css_modules_project_discovers_css_module_files ... ok [INFO] [stdout] test list_entry_points_only_json_omits_plugins_and_files ... ok [INFO] [stdout] test list_files_and_entry_points_together_json ... ok [INFO] [stdout] test list_human_output_files_are_relative_paths ... ok [INFO] [stdout] test list_human_output_entry_points_section ... ok [INFO] [stdout] test list_human_output_files_section ... ok [INFO] [stdout] test list_invalid_root_returns_error ... ok [INFO] [stdout] test list_human_output_boundaries_section ... ok [INFO] [stdout] test list_files_only_json_omits_plugins_and_entry_points ... ok [INFO] [stdout] test list_external_plugin_detected ... ok [INFO] [stdout] test list_json_entry_points_array_items_have_path_and_source ... ok [INFO] [stdout] test list_entry_points_only_includes_plugin_entries ... ok [INFO] [stdout] test list_human_output_plugins_section ... ok [INFO] [stdout] test list_json_plugins_array_items_have_name_field ... ok [INFO] [stdout] test list_json_files_are_sorted_alphabetically ... ok [INFO] [stdout] test list_json_entry_point_paths_are_relative ... ok [INFO] [stdout] test list_plugins_and_files_together_json ... ok [INFO] [stdout] test list_json_files_are_relative_paths ... ok [INFO] [stdout] test list_production_mode_flag_accepted ... ok [INFO] [stdout] test list_project_without_known_plugins_has_empty_or_minimal_plugins ... ok [INFO] [stdout] test list_json_output_is_valid_json_object ... ok [INFO] [stdout] test list_nextjs_project_detects_nextjs_plugin ... ok [INFO] [stdout] test list_plugins_only_json_omits_files_and_entry_points ... ok [INFO] [stdout] test list_human_show_all_omits_boundaries_when_not_requested ... ok [INFO] [stdout] test list_plugin_discovered_entry_points_in_show_all_mode ... ok [INFO] [stdout] test list_svelte_project_discovers_svelte_files ... ok [INFO] [stdout] test list_show_all_json_omits_boundaries_even_when_configured ... ok [INFO] [stdout] test list_show_all_entry_point_count_matches_array_length ... ok [INFO] [stdout] test list_workspace_project_discovers_entry_points_from_multiple_packages ... ok [INFO] [stdout] test list_vue_project_discovers_vue_files ... ok [INFO] [stdout] test list_show_all_json_includes_plugins_files_and_entry_points ... ok [INFO] [stdout] test list_returns_exit_code_0_on_success ... ok [INFO] [stdout] test list_workspace_project_discovers_files_across_packages ... ok [INFO] [stdout] test list_show_all_file_count_matches_files_array_length ... ok [INFO] [stdout] test list_workspace_project_entry_points_have_varied_sources ... ok [INFO] [stderr] Running tests/logging_tests.rs (/opt/rustwide/target/debug/deps/logging_tests-0727be49a5600e44) [INFO] [stdout] test list_nextjs_project_app_page_is_plugin_entry_point ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 43 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.10s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test combined_human_output_hides_internal_info_logs_when_rust_log_is_empty ... ok [INFO] [stdout] [INFO] [stderr] Running tests/migrate_tests.rs (/opt/rustwide/target/debug/deps/migrate_tests-fa3304fea18677b0) [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.96s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test migrate_no_config_exits_2 ... ok [INFO] [stdout] test migrate_dry_run_outputs_config ... ok [INFO] [stdout] test migrate_dry_run_toml_output ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s [INFO] [stdout] [INFO] [stderr] Running tests/production_coverage_tests.rs (/opt/rustwide/target/debug/deps/production_coverage_tests-6073b484d8c83d58) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/production_workspace_tests.rs (/opt/rustwide/target/debug/deps/production_workspace_tests-5cd99ff6fa636156) [INFO] [stdout] [INFO] [stdout] running 6 tests [INFO] [stdout] test workspace_scoping_on_nonexistent_package ... ok [INFO] [stdout] test production_mode_dupes_exits_successfully ... ok [INFO] [stdout] test production_mode_check_exits_successfully ... ok [INFO] [stdout] test regression_baseline_round_trip ... ok [INFO] [stdout] test workspace_scoping_limits_output_to_package ... ok [INFO] [stderr] Running tests/schema_tests.rs (/opt/rustwide/target/debug/deps/schema_tests-3f0bcdb27ecb6d7f) [INFO] [stdout] test production_mode_health_exits_successfully ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.14s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 9 tests [INFO] [stdout] test plugin_schema_is_json_schema ... ok [INFO] [stdout] test schema_has_commands_array ... ok [INFO] [stdout] test config_schema_outputs_valid_json ... ok [INFO] [stdout] test schema_has_exit_codes ... ok [INFO] [stdout] test plugin_schema_outputs_valid_json ... ok [INFO] [stdout] test schema_has_name_and_version ... ok [INFO] [stdout] test config_schema_is_json_schema ... ok [INFO] [stdout] test schema_outputs_valid_json ... ok [INFO] [stdout] test schema_has_issue_types ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.18s [INFO] [stdout] [INFO] [stderr] Running tests/snapshot_tests.rs (/opt/rustwide/target/debug/deps/snapshot_tests-b241b1d304f0553a) [INFO] [stdout] [INFO] [stdout] running 109 tests [INFO] [stdout] test codeclimate_empty_results_snapshot ... ok [INFO] [stdout] test codeclimate_circular_deps_only_snapshot ... ok [INFO] [stdout] test codeclimate_duplication_output_snapshot ... ok [INFO] [stdout] test codeclimate_health_with_production_coverage_snapshot ... ok [INFO] [stdout] test codeclimate_health_output_snapshot ... ok [INFO] [stdout] test codeclimate_health_empty_snapshot ... ok [INFO] [stdout] test codeclimate_duplication_empty_snapshot ... ok [INFO] [stdout] test codeclimate_duplicate_exports_only_snapshot ... ok [INFO] [stdout] test codeclimate_health_with_score_snapshot ... ok [INFO] [stdout] test codeclimate_re_export_variant_snapshot ... ok [INFO] [stdout] test codeclimate_type_only_deps_snapshot ... ok [INFO] [stdout] test codeclimate_multiple_exports_same_file_snapshot ... ok [INFO] [stdout] test codeclimate_unresolved_imports_only_snapshot ... ok [INFO] [stdout] test codeclimate_unused_enum_members_only_snapshot ... ok [INFO] [stdout] test codeclimate_mixed_severity_snapshot ... ok [INFO] [stdout] test codeclimate_unlisted_deps_only_snapshot ... ok [INFO] [stdout] test codeclimate_unused_deps_only_snapshot ... ok [INFO] [stdout] test codeclimate_unused_dev_deps_only_snapshot ... ok [INFO] [stdout] test codeclimate_unused_exports_only_snapshot ... ok [INFO] [stdout] test codeclimate_unused_files_only_snapshot ... ok [INFO] [stdout] test codeclimate_unused_types_only_snapshot ... ok [INFO] [stdout] test codeclimate_unused_optional_deps_only_snapshot ... ok [INFO] [stdout] test codeclimate_unused_class_members_only_snapshot ... ok [INFO] [stdout] test codeclimate_output_snapshot ... ok [INFO] [stdout] test compact_empty_results_snapshot ... ok [INFO] [stdout] test compact_duplicate_exports_only_snapshot ... ok [INFO] [stdout] test codeclimate_workspace_dep_snapshot ... ok [INFO] [stdout] test compact_circular_deps_only_snapshot ... ok [INFO] [stdout] test compact_multiple_exports_same_file_snapshot ... ok [INFO] [stdout] test compact_unused_deps_only_snapshot ... ok [INFO] [stdout] test compact_unresolved_imports_only_snapshot ... ok [INFO] [stdout] test compact_re_export_variant_snapshot ... ok [INFO] [stdout] test compact_unused_class_members_only_snapshot ... ok [INFO] [stdout] test compact_type_only_deps_snapshot ... ok [INFO] [stdout] test compact_unlisted_deps_only_snapshot ... ok [INFO] [stdout] test compact_output_snapshot ... ok [INFO] [stdout] test compact_unused_enum_members_only_snapshot ... ok [INFO] [stdout] test compact_unused_types_only_snapshot ... ok [INFO] [stdout] test compact_unused_dev_deps_only_snapshot ... ok [INFO] [stdout] test compact_workspace_dep_snapshot ... ok [INFO] [stdout] test compact_unused_files_only_snapshot ... ok [INFO] [stdout] test json_empty_results_snapshot ... ok [INFO] [stdout] test compact_unused_optional_deps_only_snapshot ... ok [INFO] [stdout] test json_health_with_production_coverage_snapshot ... ok [INFO] [stdout] test json_circular_deps_only_snapshot ... ok [INFO] [stdout] test json_re_export_variant_snapshot ... ok [INFO] [stdout] test json_mixed_severity_snapshot ... ok [INFO] [stdout] test json_duplicate_exports_only_snapshot ... ok [INFO] [stdout] test json_type_only_deps_snapshot ... ok [INFO] [stdout] test json_unlisted_deps_only_snapshot ... ok [INFO] [stdout] test json_unused_class_members_only_snapshot ... ok [INFO] [stdout] test json_unresolved_imports_only_snapshot ... ok [INFO] [stdout] test json_unused_exports_only_snapshot ... ok [INFO] [stdout] test json_unused_deps_only_snapshot ... ok [INFO] [stdout] test compact_unused_exports_only_snapshot ... ok [INFO] [stdout] test json_unused_enum_members_only_snapshot ... ok [INFO] [stdout] test json_multiple_exports_same_file_snapshot ... ok [INFO] [stdout] test json_unused_files_only_snapshot ... ok [INFO] [stdout] test json_unused_types_only_snapshot ... ok [INFO] [stdout] test json_unused_dev_deps_only_snapshot ... ok [INFO] [stdout] test json_output_snapshot ... ok [INFO] [stdout] test markdown_circular_deps_only_snapshot ... ok [INFO] [stdout] test json_workspace_dep_snapshot ... ok [INFO] [stdout] test json_unused_optional_deps_only_snapshot ... ok [INFO] [stdout] test markdown_duplicate_exports_only_snapshot ... ok [INFO] [stdout] test markdown_health_with_score_snapshot ... ok [INFO] [stdout] test markdown_health_output_snapshot ... ok [INFO] [stdout] test markdown_duplication_empty_snapshot ... ok [INFO] [stdout] test markdown_duplication_output_snapshot ... ok [INFO] [stdout] test markdown_health_with_production_coverage_snapshot ... ok [INFO] [stdout] test markdown_empty_results_snapshot ... ok [INFO] [stdout] test markdown_health_empty_snapshot ... ok [INFO] [stdout] test markdown_unlisted_deps_only_snapshot ... ok [INFO] [stdout] test markdown_unresolved_imports_only_snapshot ... ok [INFO] [stdout] test markdown_health_with_trend_snapshot ... ok [INFO] [stdout] test markdown_unused_class_members_only_snapshot ... ok [INFO] [stdout] test markdown_health_with_vital_signs_snapshot ... ok [INFO] [stdout] test markdown_output_snapshot ... ok [INFO] [stdout] test markdown_single_unused_file_snapshot ... ok [INFO] [stdout] test markdown_type_only_deps_only_snapshot ... ok [INFO] [stdout] test markdown_re_export_variant_snapshot ... ok [INFO] [stdout] test markdown_unused_deps_only_snapshot ... ok [INFO] [stdout] test markdown_unused_enum_members_only_snapshot ... ok [INFO] [stdout] test markdown_unused_exports_only_snapshot ... ok [INFO] [stdout] test markdown_unused_types_only_snapshot ... ok [INFO] [stdout] test markdown_workspace_dep_snapshot ... ok [INFO] [stdout] test sarif_empty_results_snapshot ... ok [INFO] [stdout] test sarif_health_empty_snapshot ... ok [INFO] [stdout] test sarif_health_output_snapshot ... ok [INFO] [stdout] test sarif_circular_deps_only_snapshot ... ok [INFO] [stdout] test sarif_duplicate_exports_only_snapshot ... ok [INFO] [stdout] test sarif_health_with_production_coverage_snapshot ... ok [INFO] [stdout] test sarif_re_export_variant_snapshot ... ok [INFO] [stdout] test sarif_type_only_deps_snapshot ... ok [INFO] [stdout] test sarif_output_snapshot ... ok [INFO] [stdout] test sarif_multiple_exports_same_file_snapshot ... ok [INFO] [stdout] test sarif_health_with_score_snapshot ... ok [INFO] [stdout] test sarif_unlisted_deps_only_snapshot ... ok [INFO] [stdout] test sarif_unused_class_members_only_snapshot ... ok [INFO] [stdout] test sarif_unused_files_only_snapshot ... ok [INFO] [stdout] test sarif_unused_exports_only_snapshot ... ok [INFO] [stdout] test sarif_unresolved_imports_only_snapshot ... ok [INFO] [stdout] test sarif_unused_optional_deps_only_snapshot ... ok [INFO] [stdout] test sarif_unused_types_only_snapshot ... ok [INFO] [stdout] test sarif_workspace_dep_snapshot ... ok [INFO] [stdout] test sarif_unused_dev_deps_only_snapshot ... ok [INFO] [stdout] test sarif_unused_deps_only_snapshot ... ok [INFO] [stdout] test sarif_unused_enum_members_only_snapshot ... ok [INFO] [stdout] test sarif_mixed_severity_snapshot ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 109 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s [INFO] [stdout] [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/fallow_config-2d77419eb2c38b5e) [INFO] [stdout] [INFO] [stdout] running 483 tests [INFO] [stdout] test config::boundaries::tests::boundary_config_with_only_rules_is_empty ... ok [INFO] [stdout] test config::boundaries::tests::boundary_preset_json_roundtrip ... ok [INFO] [stdout] test config::boundaries::tests::deserialize_preset_feature_sliced_json ... ok [INFO] [stdout] test config::boundaries::tests::deserialize_preset_hexagonal_json ... ok [INFO] [stdout] test config::boundaries::tests::deserialize_preset_json ... ok [INFO] [stdout] test config::boundaries::tests::deserialize_preset_bulletproof_json ... ok [INFO] [stdout] test config::boundaries::tests::boundary_config_with_zones_not_empty ... ok [INFO] [stdout] test config::boundaries::tests::deserialize_json ... ok [INFO] [stdout] test config::boundaries::tests::deserialize_invalid_preset_rejected ... ok [INFO] [stdout] test config::boundaries::tests::empty_allow_blocks_all_except_self ... ok [INFO] [stdout] test config::boundaries::tests::expand_feature_sliced_produces_six_zones ... ok [INFO] [stdout] test config::boundaries::tests::expand_feature_sliced_with_custom_root ... ok [INFO] [stdout] test config::boundaries::tests::expand_bulletproof_produces_four_zones ... ok [INFO] [stdout] test config::boundaries::tests::empty_config ... ok [INFO] [stdout] test config::boundaries::tests::expand_bulletproof_rules_correct ... ok [INFO] [stdout] test config::boundaries::tests::deserialize_toml ... ok [INFO] [stdout] test config::boundaries::tests::deserialize_preset_toml ... ok [INFO] [stdout] test config::boundaries::tests::expand_hexagonal_produces_three_zones ... ok [INFO] [stdout] test config::boundaries::tests::expand_layered_rules_correct ... ok [INFO] [stdout] test config::boundaries::tests::expand_layered_produces_four_zones ... ok [INFO] [stdout] test config::boundaries::tests::expand_uses_custom_source_root ... ok [INFO] [stdout] test config::boundaries::tests::expand_without_preset_is_noop ... ok [INFO] [stdout] test config::boundaries::tests::preset_absent_by_default ... ok [INFO] [stdout] test config::boundaries::tests::preset_makes_config_non_empty ... ok [INFO] [stdout] test config::boundaries::tests::expand_then_validate_succeeds ... ok [INFO] [stdout] test config::boundaries::tests::resolve_skips_invalid_zone_glob ... ok [INFO] [stdout] test config::boundaries::tests::resolved_boundary_config_empty ... ok [INFO] [stdout] test config::boundaries::tests::preset_name_all_variants ... ok [INFO] [stdout] test config::boundaries::tests::preset_name_returns_correct_string ... ok [INFO] [stdout] test config::boundaries::tests::root_field_reserved ... ok [INFO] [stdout] test config::boundaries::tests::restricted_zone_blocks_unlisted ... ok [INFO] [stdout] test config::boundaries::tests::self_import_always_allowed ... ok [INFO] [stdout] test config::boundaries::tests::unrestricted_zone_allows_all ... ok [INFO] [stdout] test config::boundaries::tests::user_rule_replaces_preset_rule ... ok [INFO] [stdout] test config::boundaries::tests::user_zone_replaces_preset_zone ... ok [INFO] [stdout] test config::boundaries::tests::user_zone_adds_to_preset ... ok [INFO] [stdout] test config::boundaries::tests::validate_zone_references_invalid_allow ... ok [INFO] [stdout] test config::boundaries::tests::validate_zone_references_invalid_from ... ok [INFO] [stdout] test config::boundaries::tests::validate_zone_references_valid ... ok [INFO] [stdout] test config::boundaries::tests::zone_not_in_rules_is_unrestricted ... ok [INFO] [stdout] test config::boundaries::tests::validate_zone_references_multiple_errors ... ok [INFO] [stdout] test config::duplicates_config::tests::detection_mode_display ... ok [INFO] [stdout] test config::duplicates_config::tests::detection_mode_default_is_mild ... ok [INFO] [stdout] test config::duplicates_config::tests::detection_mode_from_str_all_variants ... ok [INFO] [stdout] test config::duplicates_config::tests::detection_mode_from_str_case_insensitive ... ok [INFO] [stdout] test config::duplicates_config::tests::detection_mode_invalid_json ... ok [INFO] [stdout] test config::duplicates_config::tests::detection_mode_from_str_unknown ... ok [INFO] [stdout] test config::duplicates_config::tests::detection_mode_json_deserialization ... ok [INFO] [stdout] test config::duplicates_config::tests::duplicates_config_json_all_fields ... ok [INFO] [stdout] test config::duplicates_config::tests::duplicates_config_json_partial_uses_defaults ... ok [INFO] [stdout] test config::duplicates_config::tests::duplicates_config_json_roundtrip ... ok [INFO] [stdout] test config::duplicates_config::tests::duplicates_config_defaults ... ok [INFO] [stdout] test config::duplicates_config::tests::duplicates_config_toml_all_fields ... ok [INFO] [stdout] test config::duplicates_config::tests::duplicates_config_toml_defaults ... ok [INFO] [stdout] test config::duplicates_config::tests::normalization_config_default_all_none ... ok [INFO] [stdout] test config::duplicates_config::tests::normalization_config_empty_json_object ... ok [INFO] [stdout] test config::duplicates_config::tests::normalization_config_json_overrides ... ok [INFO] [stdout] test config::duplicates_config::tests::normalization_none_fields_not_serialized ... ok [INFO] [stdout] test config::duplicates_config::tests::normalization_some_fields_serialized ... ok [INFO] [stdout] test config::duplicates_config::tests::resolve_all_overrides_on_weak ... ok [INFO] [stdout] test config::duplicates_config::tests::resolve_mild_mode_all_false ... ok [INFO] [stdout] test config::duplicates_config::tests::resolve_override_forces_false ... ok [INFO] [stdout] test config::duplicates_config::tests::resolve_override_forces_true ... ok [INFO] [stdout] test config::duplicates_config::tests::resolve_semantic_mode_all_true ... ok [INFO] [stdout] test config::duplicates_config::tests::resolve_strict_mode_all_false ... ok [INFO] [stdout] test config::duplicates_config::tests::resolve_weak_mode_only_strings_true ... ok [INFO] [stdout] test config::duplicates_config::tests::resolved_normalization_equality ... ok [INFO] [stdout] test config::format::tests::output_format_clone_all_variants ... ok [INFO] [stdout] test config::format::tests::output_format_all_variants_constructible ... ok [INFO] [stdout] test config::format::tests::output_format_clone_preserves_variant ... ok [INFO] [stdout] test config::format::tests::output_format_copy ... ok [INFO] [stdout] test config::format::tests::output_format_debug_impl ... ok [INFO] [stdout] test config::format::tests::output_format_default_is_human ... ok [INFO] [stdout] test config::format::tests::output_format_default_matches_human_debug ... ok [INFO] [stdout] test config::format::tests::output_format_variants_are_distinct ... ok [INFO] [stdout] test config::health::tests::health_config_defaults ... ok [INFO] [stdout] test config::health::tests::health_config_json_all_fields ... ok [INFO] [stdout] test config::health::tests::health_config_json_empty_object_uses_all_defaults ... ok [INFO] [stdout] test config::health::tests::health_config_json_only_ignore ... ok [INFO] [stdout] test config::health::tests::health_config_json_only_max_crap ... ok [INFO] [stdout] test config::health::tests::health_config_json_partial_uses_defaults ... ok [INFO] [stdout] test config::health::tests::health_config_json_roundtrip ... ok [INFO] [stdout] test config::health::tests::health_config_large_thresholds ... ok [INFO] [stdout] test config::health::tests::health_config_toml_defaults ... ok [INFO] [stdout] test config::health::tests::health_config_toml_all_fields ... ok [INFO] [stdout] test config::health::tests::health_config_zero_thresholds ... ok [INFO] [stdout] test config::health::tests::ownership_config_default_has_bot_patterns ... ok [INFO] [stdout] test config::health::tests::ownership_config_default_via_health ... ok [INFO] [stdout] test config::health::tests::ownership_config_email_mode_kebab_case ... ok [INFO] [stdout] test config::health::tests::ownership_config_json_overrides_defaults ... ok [INFO] [stdout] test config::parsing::tests::config_format_defaults_to_toml_for_unknown ... ok [INFO] [stdout] test config::parsing::tests::config_format_detection ... ok [INFO] [stdout] test config::parsing::tests::config_names_priority_order ... ok [INFO] [stdout] test config::parsing::tests::config_names_has_three_entries ... ok [INFO] [stdout] test config::parsing::tests::deep_merge_array_overlay_replaces_base ... ok [INFO] [stdout] test config::parsing::tests::deep_merge_boolean_overlay ... ok [INFO] [stdout] test config::parsing::tests::deep_merge_disjoint_objects ... ok [INFO] [stdout] test config::parsing::tests::deep_merge_empty_object_overlay_preserves_base ... ok [INFO] [stdout] test config::parsing::tests::deep_merge_nested_object_merge ... ok [INFO] [stdout] test config::parsing::tests::config_without_rules_defaults_to_error ... ok [INFO] [stdout] test config::parsing::tests::deep_merge_null_overlay_replaces_object ... ok [INFO] [stdout] test config::parsing::tests::deep_merge_number_overlay ... ok [INFO] [stdout] test config::parsing::tests::deep_merge_object_over_scalar_replaces ... ok [INFO] [stdout] test config::parsing::tests::deep_merge_overlay_adds_new_fields ... ok [INFO] [stdout] test config::parsing::tests::deep_merge_scalar_over_object_replaces ... ok [INFO] [stdout] test config::parsing::tests::deep_merge_scalar_overlay_replaces_base ... ok [INFO] [stdout] test config::parsing::tests::extends_chained ... ok [INFO] [stdout] test config::boundaries::tests::resolved_boundary_config_with_zones_not_empty ... ok [INFO] [stdout] test config::parsing::tests::extends_absolute_path_rejected ... ok [INFO] [stdout] test config::parsing::tests::extends_deep_merge_preserves_arrays ... ok [INFO] [stdout] test config::parsing::tests::extends_http_rejected ... ok [INFO] [stdout] test config::parsing::tests::extends_circular_detected ... ok [INFO] [stdout] test config::parsing::tests::extends_missing_file_errors ... ok [INFO] [stdout] test config::parsing::tests::extends_multiple_bases_later_wins ... ok [INFO] [stdout] test config::parsing::tests::extends_non_string_non_array_ignored ... ok [INFO] [stdout] test config::parsing::tests::extends_npm_basic_unscoped ... ok [INFO] [stdout] test config::parsing::tests::extends_npm_chained_with_relative ... ok [INFO] [stdout] test config::parsing::tests::extends_npm_dotdot_package_name_rejected ... ok [INFO] [stdout] test config::parsing::tests::extends_npm_empty_specifier_errors ... ok [INFO] [stdout] test config::parsing::tests::extends_npm_exports_takes_priority_over_main ... ok [INFO] [stdout] test config::parsing::tests::extends_npm_exports_traversal_rejected ... ok [INFO] [stdout] test config::parsing::tests::extends_npm_malformed_package_json_errors ... ok [INFO] [stdout] test config::parsing::tests::extends_npm_missing_package_errors ... ok [INFO] [stdout] test config::parsing::tests::extends_npm_missing_subpath_errors ... ok [INFO] [stdout] test config::parsing::tests::extends_npm_exports_node_condition ... ok [INFO] [stdout] test config::parsing::tests::extends_npm_mixed_with_relative_paths ... ok [INFO] [stdout] test config::boundaries::tests::zone_with_multiple_patterns_matches_any ... ok [INFO] [stdout] test config::boundaries::tests::first_match_wins ... ok [INFO] [stdout] test config::boundaries::tests::expand_then_resolve_classifies ... ok [INFO] [stdout] test config::boundaries::tests::resolve_and_classify ... ok [INFO] [stdout] test config::boundaries::tests::expand_bulletproof_then_resolve_classifies ... ok [INFO] [stdout] test config::parsing::tests::extends_npm_no_config_in_package_errors ... ok [INFO] [stdout] test config::parsing::tests::extends_npm_package_json_main ... ok [INFO] [stdout] test config::parsing::tests::extends_npm_overlay_overrides_base ... ok [INFO] [stdout] test config::parsing::tests::extends_npm_package_json_exports_object ... ok [INFO] [stdout] test config::parsing::tests::extends_npm_package_json_exports_string ... ok [INFO] [stdout] test config::parsing::tests::extends_npm_scoped_package ... ok [INFO] [stdout] test config::parsing::tests::extends_npm_scoped_without_name_rejected ... ok [INFO] [stdout] test config::parsing::tests::extends_npm_subpath_traversal_rejected ... ok [INFO] [stdout] test config::parsing::tests::extends_overlay_overrides_base ... ok [INFO] [stdout] test config::parsing::tests::extends_https_url_unreachable_errors ... ok [INFO] [stdout] test config::parsing::tests::extends_url_circular_case_insensitive ... ok [INFO] [stdout] test config::parsing::tests::extends_toml_base ... ok [INFO] [stdout] test config::parsing::tests::extends_url_circular_detection ... ok [INFO] [stdout] test config::parsing::tests::extends_npm_space_after_colon_trimmed ... ok [INFO] [stdout] test config::parsing::tests::extends_toml_chain ... ok [INFO] [stdout] test config::parsing::tests::extends_url_mixed_with_file_and_npm ... ok [INFO] [stdout] test config::parsing::tests::extends_npm_with_subpath ... ok [INFO] [stdout] test config::parsing::tests::extends_npm_walk_up_directories ... ok [INFO] [stdout] test config::parsing::tests::extract_extends_array ... ok [INFO] [stdout] test config::parsing::tests::fallow_config_deserialize_ignore_dependencies ... ok [INFO] [stdout] test config::parsing::tests::extends_string_sugar ... ok [INFO] [stdout] test config::parsing::tests::extract_extends_none ... ok [INFO] [stdout] test config::parsing::tests::extract_extends_string_sugar ... ok [INFO] [stdout] test config::parsing::tests::fallow_config_denies_unknown_fields ... ok [INFO] [stdout] test config::parsing::tests::fallow_config_deserialize_ignore_exports ... ok [INFO] [stdout] test config::parsing::tests::extends_single_base ... ok [INFO] [stdout] test config::parsing::tests::fallow_config_deserialize_json ... ok [INFO] [stdout] test config::parsing::tests::fallow_config_deserialize_jsonc ... ok [INFO] [stdout] test config::parsing::tests::fallow_config_json_with_schema_field ... ok [INFO] [stdout] test config::parsing::tests::fallow_config_production_defaults_false ... ok [INFO] [stdout] test config::parsing::tests::fallow_config_json_duplicates_all_fields ... ok [INFO] [stdout] test config::parsing::tests::fallow_config_deserialize_production ... ok [INFO] [stdout] test config::parsing::tests::fallow_config_deserialize_minimal ... ok [INFO] [stdout] test config::parsing::tests::find_and_load_prefers_fallowrc_json_over_toml ... ok [INFO] [stdout] test config::parsing::tests::find_and_load_returns_error_for_invalid_config ... ok [INFO] [stdout] test config::parsing::tests::find_and_load_returns_none_when_no_config ... ok [INFO] [stdout] test config::parsing::tests::find_and_load_stops_at_git_dir ... ok [INFO] [stdout] test config::parsing::tests::find_and_load_stops_at_hg_dir ... ok [INFO] [stdout] test config::parsing::tests::fallow_config_resolve_custom_ignores ... ok [INFO] [stdout] test config::parsing::tests::find_and_load_stops_at_git_file_submodule ... ok [INFO] [stdout] test config::parsing::tests::find_and_load_sub_package_config_wins_over_root ... ok [INFO] [stdout] test config::parsing::tests::find_and_load_walks_up_directories ... ok [INFO] [stdout] test config::parsing::tests::find_config_path_none_when_no_config ... ok [INFO] [stdout] test config::parsing::tests::find_and_load_walks_past_package_json_in_monorepo ... ok [INFO] [stdout] test config::parsing::tests::find_and_load_finds_fallow_toml ... ok [INFO] [stdout] test config::parsing::tests::find_config_path_prefers_json_over_toml ... ok [INFO] [stdout] test config::parsing::tests::find_config_path_returns_fallow_toml ... ok [INFO] [stdout] test config::parsing::tests::find_and_load_finds_fallowrc_json ... ok [INFO] [stdout] test config::parsing::tests::find_config_path_returns_dot_fallow_toml ... ok [INFO] [stdout] test config::parsing::tests::fallow_config_resolve_cache_dir ... ok [INFO] [stdout] test config::parsing::tests::fallow_config_json_schema_generation ... ok [INFO] [stdout] test config::parsing::tests::fallow_config_resolve_default_ignores ... ok [INFO] [stdout] test config::parsing::tests::json_config_ignore_dependencies_camel_case ... ok [INFO] [stdout] test config::parsing::tests::json_config_all_fields ... ok [INFO] [stdout] test config::parsing::tests::find_config_path_returns_fallowrc_json ... ok [INFO] [stdout] test config::parsing::tests::load_json_config_file ... ok [INFO] [stdout] test config::parsing::tests::load_jsonc_config_file ... ok [INFO] [stdout] test config::parsing::tests::normalize_url_basic ... ok [INFO] [stdout] test config::parsing::tests::normalize_url_default_https_port ... ok [INFO] [stdout] test config::parsing::tests::find_config_path_walks_past_package_json_in_monorepo ... ok [INFO] [stdout] test config::parsing::tests::normalize_url_strips_query_and_fragment ... ok [INFO] [stdout] test config::parsing::tests::load_toml_config_file ... ok [INFO] [stdout] test config::parsing::tests::normalize_url_root_path ... ok [INFO] [stdout] test config::parsing::tests::normalize_url_preserves_path_case ... ok [INFO] [stdout] test config::parsing::tests::normalize_url_strips_fragment ... ok [INFO] [stdout] test config::parsing::tests::normalize_url_strips_query_string ... ok [INFO] [stdout] test config::parsing::tests::normalize_url_uppercase_scheme_and_host ... ok [INFO] [stdout] test config::parsing::tests::normalize_url_trailing_slash ... ok [INFO] [stdout] test config::parsing::tests::package_json_dependency_names ... ok [INFO] [stdout] test config::parsing::tests::package_json_entry_points_module ... ok [INFO] [stdout] test config::parsing::tests::max_extends_depth_is_reasonable ... ok [INFO] [stdout] test config::parsing::tests::package_json_entry_points_types ... ok [INFO] [stdout] test config::parsing::tests::package_json_entry_points_bin_string ... ok [INFO] [stdout] test config::parsing::tests::package_json_entry_points_bin_object ... ok [INFO] [stdout] test config::parsing::tests::package_json_entry_points_main ... ok [INFO] [stdout] test config::parsing::tests::package_json_entry_points_exports_object ... ok [INFO] [stdout] test config::parsing::tests::package_json_no_dependencies ... ok [INFO] [stdout] test config::parsing::tests::package_json_entry_points_exports_string ... ok [INFO] [stdout] test config::parsing::tests::package_json_optional_deps_empty_when_missing ... ok [INFO] [stdout] test config::parsing::tests::package_json_peer_dependency_names ... ok [INFO] [stdout] test config::parsing::tests::parse_npm_specifier_scoped ... ok [INFO] [stdout] test config::parsing::tests::parse_npm_specifier_unscoped ... ok [INFO] [stdout] test config::parsing::tests::package_json_scripts_field ... ok [INFO] [stdout] test config::parsing::tests::parse_npm_specifier_scoped_with_nested_subpath ... ok [INFO] [stdout] test config::parsing::tests::parse_npm_specifier_scoped_with_subpath ... ok [INFO] [stdout] test config::parsing::tests::parse_npm_specifier_unscoped_with_subpath ... ok [INFO] [stdout] test config::parsing::tests::package_json_optional_dependency_names ... ok [INFO] [stdout] test config::parsing::tests::rules_deserialize_toml_kebab_case ... ok [INFO] [stdout] test config::parsing::tests::sealed_allows_in_directory_extends ... ok [INFO] [stdout] test config::parsing::tests::sealed_default_is_false ... ok [INFO] [stdout] test config::parsing::tests::sealed_false_allows_escaping_extends ... ok [INFO] [stdout] test config::parsing::tests::json_schema_contains_entry_field ... ok [INFO] [stdout] test config::parsing::tests::resolve_production_mode_disables_dev_deps ... ok [INFO] [stdout] test config::resolution::tests::ignore_export_rule_deserialize ... ok [INFO] [stdout] test config::parsing::tests::rules_omitted_default_to_error ... ok [INFO] [stdout] test config::parsing::tests::rules_severity_error_warn_off_from_json ... ok [INFO] [stdout] test config::resolution::tests::ignore_export_rule_specific_exports ... ok [INFO] [stdout] test config::parsing::tests::sealed_rejects_npm_extends ... ok [INFO] [stdout] test config::resolution::tests::overrides_deserialize ... ok [INFO] [stdout] test config::parsing::tests::url_timeout_default ... ok [INFO] [stdout] test config::parsing::tests::sealed_rejects_https_extends ... ok [INFO] [stdout] test config::parsing::tests::sealed_rejects_extends_escaping_directory ... ok [INFO] [stdout] test config::resolution::tests::resolve_custom_ignore_patterns_merged_with_defaults ... ok [INFO] [stdout] test config::resolution::tests::resolve_default_ignores_coverage ... ok [INFO] [stdout] test config::resolution::tests::resolve_default_ignores_dist ... ok [INFO] [stdout] test config::resolution::tests::resolve_default_ignores_git ... ok [INFO] [stdout] test config::resolution::tests::resolve_default_ignores_minified_files ... ok [INFO] [stdout] test config::resolution::tests::resolve_boundary_preset_with_user_override ... ok [INFO] [stdout] test config::resolution::tests::resolve_default_ignores_node_modules ... ok [INFO] [stdout] test config::resolution::tests::resolve_default_ignores_root_build_only ... ok [INFO] [stdout] test config::resolution::tests::resolve_expands_boundary_preset ... ok [INFO] [stdout] test config::resolution::tests::resolve_no_preset_unchanged ... ok [INFO] [stdout] test config::resolution::tests::resolve_non_production_keeps_dev_deps_default ... ok [INFO] [stdout] test config::resolution::tests::resolve_multiple_valid_overrides ... ok [INFO] [stdout] test config::resolution::tests::resolve_override_with_invalid_glob_skipped ... ok [INFO] [stdout] test config::resolution::tests::resolve_override_with_empty_files_skipped ... ok [INFO] [stdout] test config::resolution::tests::resolve_passes_through_entry_patterns ... ok [INFO] [stdout] test config::resolution::tests::resolve_passes_through_no_cache_flag ... ok [INFO] [stdout] test config::resolution::tests::resolve_passes_through_ignore_dependencies ... ok [INFO] [stdout] test config::resolution::tests::resolve_passes_through_quiet_flag ... ok [INFO] [stdout] test config::resolution::tests::resolve_passes_through_thread_count ... ok [INFO] [stdout] test config::resolution::tests::resolve_production_forces_dev_deps_off ... ok [INFO] [stdout] test config::resolution::tests::resolve_production_flag_stored ... ok [INFO] [stdout] test config::resolution::tests::resolve_production_preserves_other_rules ... ok [INFO] [stdout] test config::resolution::tests::resolve_production_forces_optional_deps_off ... ok [INFO] [stdout] test config::resolution::tests::resolve_rules_for_path_later_override_wins ... ok [INFO] [stdout] test config::resolution::tests::resolve_rules_for_path_with_matching_override ... ok [INFO] [stdout] test config::resolution::tests::resolve_sets_cache_dir ... ok [INFO] [stdout] test config::resolution::tests::resolve_source_files_not_ignored_by_default ... ok [INFO] [stdout] test config::resolution::tests::resolve_rules_for_path_no_overrides ... ok [INFO] [stdout] test config::rules::tests::apply_partial_all_fields_set ... ok [INFO] [stdout] test config::rules::tests::apply_partial_all_none_changes_nothing ... ok [INFO] [stdout] test config::rules::tests::apply_partial_only_some_fields ... ok [INFO] [stdout] test config::rules::tests::apply_partial_preserves_type_only_default ... ok [INFO] [stdout] test config::rules::tests::partial_rules_all_fields_json ... ok [INFO] [stdout] test config::rules::tests::partial_rules_none_fields_not_serialized ... ok [INFO] [stdout] test config::rules::tests::partial_rules_some_fields_serialized ... ok [INFO] [stdout] test config::rules::tests::partial_rules_subset_json ... ok [INFO] [stdout] test config::rules::tests::rules_config_defaults_include_optional_deps ... ok [INFO] [stdout] test config::rules::tests::rules_config_json_roundtrip ... ok [INFO] [stdout] test config::rules::tests::rules_default_all_error_except_type_only ... ok [INFO] [stdout] test config::rules::tests::partial_rules_empty_json ... ok [INFO] [stdout] test config::rules::tests::severity_default_is_error ... ok [INFO] [stdout] test config::rules::tests::rules_deserialize_kebab_case ... ok [INFO] [stdout] test config::rules::tests::severity_display ... ok [INFO] [stdout] test config::rules::tests::severity_from_str_case_insensitive ... ok [INFO] [stdout] test config::rules::tests::severity_from_str ... ok [INFO] [stdout] test config::rules::tests::severity_from_str_invalid_returns_error ... ok [INFO] [stdout] test config::rules::tests::severity_json_deserialization ... ok [INFO] [stdout] test config::tests::default_config_duplicates_enabled ... ok [INFO] [stdout] test config::rules::tests::severity_invalid_json_value_rejected ... ok [INFO] [stdout] test config::tests::default_config_health_thresholds ... ok [INFO] [stdout] test config::tests::default_config_rules_are_error ... ok [INFO] [stdout] test config::tests::deserialize_empty_json_object ... ok [INFO] [stdout] test config::tests::default_config_has_empty_collections ... ok [INFO] [stdout] test config::tests::deserialize_json_dynamically_loaded ... ok [INFO] [stdout] test config::tests::deserialize_json_deny_unknown_fields ... ok [INFO] [stdout] test config::tests::deserialize_json_dynamically_loaded_defaults_empty ... ok [INFO] [stdout] test config::tests::deserialize_json_multiple_ignore_export_rules ... ok [INFO] [stdout] test config::tests::deserialize_json_production_mode_true ... ok [INFO] [stdout] test config::tests::deserialize_json_production_mode_default_false ... ok [INFO] [stdout] test config::tests::deserialize_json_public_packages_empty ... ok [INFO] [stdout] test config::tests::deserialize_json_public_packages_camel_case ... ok [INFO] [stdout] test config::tests::deserialize_json_used_class_members_rejects_unconstrained_scoped_rules ... ok [INFO] [stdout] test config::tests::deserialize_json_used_class_members_supports_strings_and_scoped_rules ... ok [INFO] [stdout] test config::tests::deserialize_json_with_all_top_level_fields ... ok [INFO] [stdout] test config::tests::deserialize_json_public_packages_rejects_snake_case ... ok [INFO] [stdout] test config::tests::deserialize_json_with_boundaries ... ok [INFO] [stdout] test config::tests::deserialize_json_with_overrides ... ok [INFO] [stdout] test config::tests::deserialize_toml_deny_unknown_fields ... ok [INFO] [stdout] test config::tests::deserialize_toml_public_packages ... ok [INFO] [stdout] test config::tests::deserialize_toml_used_class_members_supports_scoped_rules ... ok [INFO] [stdout] test config::tests::deserialize_toml_with_ignore_exports ... ok [INFO] [stdout] test config::tests::deserialize_toml_with_inline_framework ... ok [INFO] [stdout] test config::tests::deserialize_toml_with_overrides ... ok [INFO] [stdout] test config::tests::deserialize_toml_with_regression_baseline ... ok [INFO] [stdout] test config::tests::deserialize_toml_with_workspace_config ... ok [INFO] [stdout] test config::tests::extends_field_not_serialized ... ok [INFO] [stdout] test config::tests::json_serialize_roundtrip ... ok [INFO] [stdout] test config::tests::public_packages_serialize_roundtrip ... ok [INFO] [stdout] test config::tests::regression_baseline_all_zeros_by_default ... ok [INFO] [stdout] test config::tests::regression_baseline_not_serialized_when_none ... ok [INFO] [stdout] test config::tests::regression_config_default_is_none_baseline ... ok [INFO] [stdout] test config::tests::regression_config_defaults_to_none ... ok [INFO] [stdout] test config::tests::regression_config_deserialize_json ... ok [INFO] [stdout] test config::tests::regression_config_empty_baseline_deserialize ... ok [INFO] [stdout] test config::tests::regression_config_serialize_roundtrip ... ok [INFO] [stdout] test config::tests::deserialize_toml_minimal ... ok [INFO] [stdout] test config::tests::schema_field_not_serialized ... ok [INFO] [stdout] test config::used_class_members::tests::deserialize_plain_member_name ... ok [INFO] [stdout] test config::used_class_members::tests::deserialize_scoped_rule ... ok [INFO] [stdout] test config::used_class_members::tests::deserialize_scoped_rule_requires_constraint ... ok [INFO] [stdout] test config::used_class_members::tests::scoped_rule_matches_extends_and_implements ... ok [INFO] [stdout] test external_plugin::tests::config_plugin_path_to_single_file ... ok [INFO] [stdout] test external_plugin::tests::config_plugin_path_to_single_json_file ... ok [INFO] [stdout] test external_plugin::tests::config_plugin_paths_take_priority ... ok [INFO] [stdout] test external_plugin::tests::deduplicates_by_name ... ok [INFO] [stdout] test external_plugin::tests::deserialize_full_plugin ... ok [INFO] [stdout] test external_plugin::tests::deserialize_json_plugin ... ok [INFO] [stdout] test external_plugin::tests::deserialize_json_with_schema_field ... ok [INFO] [stdout] test external_plugin::tests::deserialize_jsonc_plugin ... ok [INFO] [stdout] test external_plugin::tests::deserialize_minimal_plugin ... ok [INFO] [stdout] test external_plugin::tests::deserialize_plugin_with_scoped_used_class_members_json ... ok [INFO] [stdout] test external_plugin::tests::deserialize_plugin_with_scoped_used_class_members_toml ... ok [INFO] [stdout] test external_plugin::tests::deserialize_plugin_rejects_unconstrained_scoped_used_class_members ... ok [INFO] [stdout] test external_plugin::tests::deserialize_plugin_with_used_class_members_toml ... ok [INFO] [stdout] test external_plugin::tests::detection_deserialize_all ... ok [INFO] [stdout] test external_plugin::tests::detection_deserialize_any ... ok [INFO] [stdout] test external_plugin::tests::detection_deserialize_dependency ... ok [INFO] [stdout] test external_plugin::tests::detection_deserialize_file_exists ... ok [INFO] [stdout] test external_plugin::tests::detection_empty_all_conditions ... ok [INFO] [stdout] test external_plugin::tests::detection_empty_any_conditions ... ok [INFO] [stdout] test external_plugin::tests::detection_nested_all_with_any ... ok [INFO] [stdout] test external_plugin::tests::detection_toml_dependency ... ok [INFO] [stdout] test external_plugin::tests::detection_toml_file_exists ... ok [INFO] [stdout] test external_plugin::tests::discover_fallow_plugin_files_in_root ... ok [INFO] [stdout] test external_plugin::tests::discover_fallow_plugin_json_files_in_root ... ok [INFO] [stdout] test external_plugin::tests::discover_json_plugins_from_fallow_plugins_dir ... ok [INFO] [stdout] test external_plugin::tests::discover_mixed_formats_in_dir ... ok [INFO] [stdout] test external_plugin::tests::discover_plugins_from_fallow_plugins_dir ... ok [INFO] [stdout] test external_plugin::tests::is_plugin_file_checks_extensions ... ok [INFO] [stdout] test external_plugin::tests::parse_plugin_invalid_json_returns_none ... ok [INFO] [stdout] test external_plugin::tests::parse_plugin_invalid_jsonc_returns_none ... ok [INFO] [stdout] test external_plugin::tests::parse_plugin_invalid_toml_returns_none ... ok [INFO] [stdout] test external_plugin::tests::parse_plugin_json_format ... ok [INFO] [stdout] test external_plugin::tests::parse_plugin_jsonc_format ... ok [INFO] [stdout] test external_plugin::tests::parse_plugin_toml_format ... ok [INFO] [stdout] test external_plugin::tests::plugin_all_fields_json ... ok [INFO] [stdout] test external_plugin::tests::plugin_format_detection ... ok [INFO] [stdout] test external_plugin::tests::plugin_json_schema_generation ... ok [INFO] [stdout] test external_plugin::tests::plugin_with_detection_field ... ok [INFO] [stdout] test external_plugin::tests::plugin_with_special_chars_in_name ... ok [INFO] [stdout] test external_plugin::tests::plugin_without_detection_uses_enablers ... ok [INFO] [stdout] test external_plugin::tests::prefix_enablers ... ok [INFO] [stdout] test external_plugin::tests::rejects_paths_outside_root ... ok [INFO] [stdout] test external_plugin::tests::skips_empty_name ... ok [INFO] [stdout] test external_plugin::tests::skips_invalid_json ... ok [INFO] [stdout] test external_plugin::tests::deserialize_plugin_with_used_class_members_json ... ok [INFO] [stdout] test workspace::package_json::tests::exports_subdirectories_dot_only ... ok [INFO] [stdout] test external_plugin::tests::skips_invalid_toml ... ok [INFO] [stdout] test workspace::package_json::tests::exports_subdirectories_preact_style ... ok [INFO] [stdout] test workspace::package_json::tests::exports_subdirectories_skips_dist_dirs ... ok [INFO] [stdout] test workspace::package_json::tests::extract_exports_ignores_non_relative ... ok [INFO] [stdout] test workspace::package_json::tests::exports_subdirectories_no_exports ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_all_dependency_names ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_bin_field_string ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_bin_object_non_string_values_skipped ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_browser_array_ignored ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_browser_field_object ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_bin_field_object ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_browser_field_string ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_default ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_entry_points_combined ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_exports_array ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_exports_deeply_nested ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_exports_empty_object ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_exports_nested ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_exports_null_value ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_exports_string ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_load_invalid_json ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_load_missing_file ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_load_valid ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_missing_optional_fields ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_optional_deps_in_all_names ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_peer_deps_only ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_production_dependency_names ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_source_field ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_browser_object_non_relative_skipped ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_workspace_patterns_array ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_workspace_patterns_empty_array ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_workspace_patterns_none ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_workspace_patterns_object ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_workspace_patterns_object_missing_packages ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_workspace_patterns_object_with_nohoist ... ok [INFO] [stdout] test workspace::package_json::tests::package_json_workspace_patterns_string_value_ignored ... ok [INFO] [stdout] test workspace::parsers::tests::expand_recursive_glob_prunes_node_modules ... ok [INFO] [stdout] test workspace::parsers::tests::expand_recursive_glob_prunes_deeply_nested_node_modules ... ok [INFO] [stdout] test workspace::parsers::tests::expand_workspace_glob_exact_path ... ok [INFO] [stdout] test workspace::parsers::tests::expand_workspace_glob_excludes_node_modules ... ok [INFO] [stdout] test workspace::parsers::tests::expand_workspace_glob_nested ... ok [INFO] [stdout] test workspace::parsers::tests::expand_workspace_glob_no_matches ... ok [INFO] [stdout] test workspace::parsers::tests::expand_workspace_glob_star ... ok [INFO] [stdout] test workspace::parsers::tests::expand_workspace_glob_skips_dirs_without_pkg ... ok [INFO] [stdout] test workspace::parsers::tests::parse_pnpm_workspace_basic ... ok [INFO] [stdout] test workspace::parsers::tests::parse_pnpm_workspace_double_quotes ... ok [INFO] [stdout] test workspace::parsers::tests::parse_pnpm_workspace_empty ... ok [INFO] [stdout] test workspace::parsers::tests::parse_pnpm_workspace_malformed ... ok [INFO] [stdout] test workspace::parsers::tests::parse_pnpm_workspace_mixed_quotes ... ok [INFO] [stdout] test workspace::parsers::tests::parse_pnpm_workspace_no_packages_key ... ok [INFO] [stdout] test workspace::parsers::tests::expand_workspace_glob_trailing_slash ... ok [INFO] [stdout] test workspace::parsers::tests::parse_pnpm_workspace_no_quotes ... ok [INFO] [stdout] test workspace::parsers::tests::parse_pnpm_workspace_packages_key_empty_list ... ok [INFO] [stdout] test workspace::parsers::tests::parse_pnpm_workspace_with_comments ... ok [INFO] [stdout] test workspace::parsers::tests::parse_pnpm_workspace_stops_at_next_key ... ok [INFO] [stdout] test workspace::parsers::tests::parse_pnpm_workspace_with_negation ... ok [INFO] [stdout] test workspace::parsers::tests::strip_trailing_commas_array ... ok [INFO] [stdout] test workspace::parsers::tests::strip_trailing_commas_array_of_objects ... ok [INFO] [stdout] test workspace::parsers::tests::strip_trailing_commas_basic ... ok [INFO] [stdout] test workspace::parsers::tests::strip_trailing_commas_empty_input ... ok [INFO] [stdout] test workspace::parsers::tests::parse_pnpm_workspace_with_empty_lines_between_entries ... ok [INFO] [stdout] test workspace::parsers::tests::strip_trailing_commas_escaped_quotes ... ok [INFO] [stdout] test workspace::parsers::tests::strip_trailing_commas_nested ... ok [INFO] [stdout] test workspace::parsers::tests::strip_trailing_commas_multiple_levels ... ok [INFO] [stdout] test workspace::parsers::tests::strip_trailing_commas_nested_objects ... ok [INFO] [stdout] test workspace::parsers::tests::strip_trailing_commas_preserves_strings ... ok [INFO] [stdout] test workspace::parsers::tests::strip_trailing_commas_string_with_closing_brackets ... ok [INFO] [stdout] test workspace::parsers::tests::strip_trailing_commas_no_commas ... ok [INFO] [stdout] test workspace::parsers::tests::strip_trailing_commas_with_whitespace ... ok [INFO] [stdout] test workspace::parsers::tests::tsconfig_references_empty_array ... ok [INFO] [stdout] test workspace::parsers::tests::tsconfig_references_from_dir ... ok [INFO] [stdout] test workspace::parsers::tests::tsconfig_references_no_file ... ok [INFO] [stdout] test workspace::parsers::tests::tsconfig_references_no_references_field ... ok [INFO] [stdout] test workspace::parsers::tests::tsconfig_references_malformed_json ... ok [INFO] [stdout] test workspace::parsers::tests::tsconfig_root_dir_dot_value ... ok [INFO] [stdout] test workspace::parsers::tests::tsconfig_root_dir_extracted ... ok [INFO] [stdout] test workspace::parsers::tests::tsconfig_root_dir_lib ... ok [INFO] [stdout] test workspace::parsers::tests::tsconfig_references_skips_nonexistent_dirs ... ok [INFO] [stdout] test workspace::parsers::tests::tsconfig_root_dir_missing_field ... ok [INFO] [stdout] test workspace::parsers::tests::tsconfig_root_dir_no_file ... ok [INFO] [stdout] test workspace::parsers::tests::tsconfig_root_dir_parent_traversal ... ok [INFO] [stdout] test workspace::parsers::tests::tsconfig_root_dir_with_comments ... ok [INFO] [stdout] test workspace::parsers::tests::tsconfig_root_dir_with_trailing_commas ... ok [INFO] [stdout] test workspace::tests::collect_patterns_combines_sources ... ok [INFO] [stdout] test workspace::tests::collect_patterns_empty_when_no_configs ... ok [INFO] [stdout] test workspace::tests::collect_patterns_from_package_json ... ok [INFO] [stdout] test workspace::tests::collect_patterns_from_pnpm_workspace ... ok [INFO] [stdout] test workspace::tests::dir_name_empty_for_root_path ... ok [INFO] [stdout] test workspace::tests::dir_name_extracts_last_component ... ok [INFO] [stdout] test workspace::tests::discover_workspaces_empty_project ... ok [INFO] [stdout] test workspace::tests::discover_workspaces_from_tsconfig_references ... ok [INFO] [stdout] test workspace::tests::discover_workspaces_from_package_json ... ok [INFO] [stdout] test workspace::tests::discover_workspaces_name_fallback_to_dir_name ... ok [INFO] [stdout] test workspace::tests::discover_workspaces_skips_root_as_workspace ... ok [INFO] [stdout] test workspace::tests::mark_internal_deps_deduplicates_by_path ... ok [INFO] [stdout] test workspace::tests::mark_internal_deps_detects_cross_references ... ok [INFO] [stdout] test workspace::tests::discover_workspaces_with_negated_patterns ... ok [INFO] [stdout] test workspace::tests::no_undeclared_when_all_covered ... ok [INFO] [stdout] test workspace::tests::mark_internal_deps_no_cross_references ... ok [INFO] [stdout] test workspace::tests::no_undeclared_when_no_workspace_patterns ... ok [INFO] [stdout] test workspace::tests::tsconfig_references_outside_root_rejected ... ok [INFO] [stdout] test workspace::tests::undeclared_skips_node_modules_and_hidden_dirs ... ok [INFO] [stdout] test workspace::tests::undeclared_workspace_detected ... ok [INFO] [stdout] test workspace::tests::workspace_config_default_patterns ... ok [INFO] [stdout] test workspace::tests::workspace_config_deserialize_empty_patterns ... ok [INFO] [stdout] test workspace::tests::workspace_config_deserialize_json ... ok [INFO] [stdout] test workspace::tests::workspace_info_default_not_internal ... ok [INFO] [stdout] test config::resolution::tests::proptests::non_production_preserves_dev_deps_default ... ok [INFO] [stdout] test config::resolution::tests::proptests::production_forces_dev_deps_off ... ok [INFO] [stdout] test config::resolution::tests::proptests::threads_passed_through ... ok [INFO] [stdout] test config::resolution::tests::proptests::resolved_config_has_default_ignores ... ok [INFO] [stdout] test config::resolution::tests::proptests::custom_ignores_dont_replace_defaults ... ok [INFO] [stdout] test config::resolution::tests::proptests::cache_dir_is_root_fallow ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 483 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.22s [INFO] [stdout] [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/fallow_core-744090116305ae78) [INFO] [stdout] [INFO] [stdout] running 1821 tests [INFO] [stdout] test analyze::feature_flags::tests::flag_use_to_feature_flag_config_object ... ok [INFO] [stdout] test analyze::boundary::tests::allowed_import_no_violation ... ok [INFO] [stdout] test analyze::boundary::tests::unzoned_files_unrestricted ... ok [INFO] [stdout] test analyze::package_json_utils::tests::find_dep_line_block_comment_end_without_dep_on_remainder ... ok [INFO] [stdout] test analyze::package_json_utils::tests::find_dep_line_deeply_nested_scoped_package ... ok [INFO] [stdout] test analyze::package_json_utils::tests::find_dep_line_dep_inside_and_after_block_comment ... ok [INFO] [stdout] test analyze::package_json_utils::tests::find_dep_line_empty_content ... ok [INFO] [stdout] test analyze::package_json_utils::tests::find_dep_line_finds_dependency_key ... ok [INFO] [stdout] test analyze::package_json_utils::tests::find_dep_line_handles_scoped_packages ... ok [INFO] [stdout] test analyze::package_json_utils::tests::find_dep_line_malformed_content ... ok [INFO] [stdout] test analyze::package_json_utils::tests::find_dep_line_minimal_block_comment ... ok [INFO] [stdout] test analyze::package_json_utils::tests::find_dep_line_multiline_block_comment_end_with_dep_on_remainder ... ok [INFO] [stdout] test analyze::package_json_utils::tests::find_dep_line_multiple_dep_sections ... ok [INFO] [stdout] test analyze::feature_flags::tests::flag_use_to_feature_flag_env_var ... ok [INFO] [stdout] test analyze::feature_flags::tests::flag_use_to_feature_flag_sdk_call ... ok [INFO] [stdout] test analyze::package_json_utils::tests::find_dep_line_after_block_comment_end_on_same_line ... ok [INFO] [stdout] test analyze::boundary::tests::no_boundaries_returns_empty ... ok [INFO] [stdout] test analyze::package_json_utils::tests::find_dep_line_returns_1_when_not_found ... ok [INFO] [stdout] test analyze::package_json_utils::tests::find_dep_line_skips_block_comments ... ok [INFO] [stdout] test analyze::package_json_utils::tests::find_dep_line_skips_line_comments ... ok [INFO] [stdout] test analyze::package_json_utils::tests::find_dep_line_skips_multiline_block_comment ... ok [INFO] [stdout] test analyze::package_json_utils::tests::find_dep_line_with_trailing_comma_jsonc ... ok [INFO] [stdout] test analyze::package_json_utils::tests::find_dep_line_value_not_key_is_not_matched ... ok [INFO] [stdout] test analyze::package_json_utils::tests::read_pkg_json_content_valid_path ... ok [INFO] [stdout] test analyze::predicates::file::tests::barrel_all_sources_unreachable_returns_false ... ok [INFO] [stdout] test analyze::boundary::tests::file_level_suppression_skips_file ... ok [INFO] [stdout] test analyze::package_json_utils::tests::read_pkg_json_content_nonexistent_path ... ok [INFO] [stdout] test analyze::predicates::file::tests::barrel_no_re_exports_returns_false ... ok [INFO] [stdout] test analyze::predicates::file::tests::barrel_pure_with_reachable_source_returns_true ... ok [INFO] [stdout] test analyze::boundary::tests::disallowed_import_produces_violation ... ok [INFO] [stdout] test analyze::predicates::file::tests::barrel_out_of_bounds_source_returns_false ... ok [INFO] [stdout] test analyze::predicates::file::tests::barrel_with_local_exports_returns_false ... ok [INFO] [stdout] test analyze::predicates::file::tests::barrel_with_cjs_exports_returns_false ... ok [INFO] [stdout] test analyze::boundary::tests::self_import_always_allowed ... ok [INFO] [stdout] test analyze::predicates::file::tests::config_file_bare_rc_files_do_not_match ... ok [INFO] [stdout] test analyze::predicates::file::tests::config_file_dotfiles_with_rc ... ok [INFO] [stdout] test analyze::predicates::file::tests::config_file_bundler_configs ... ok [INFO] [stdout] test analyze::predicates::file::tests::config_file_dotfiles_without_rc_not_matched ... ok [INFO] [stdout] test analyze::predicates::file::tests::config_file_dotrc_pattern ... ok [INFO] [stdout] test analyze::predicates::file::tests::config_file_env_declarations ... ok [INFO] [stdout] test analyze::predicates::file::tests::config_file_environment_declarations ... ok [INFO] [stdout] test analyze::predicates::file::tests::config_file_framework_configs ... ok [INFO] [stdout] test analyze::predicates::file::tests::config_file_known_patterns ... ok [INFO] [stdout] test analyze::predicates::file::tests::config_file_linting_and_formatting ... ok [INFO] [stdout] test analyze::predicates::file::tests::config_file_nested_patterns_listed ... ok [INFO] [stdout] test analyze::predicates::file::tests::config_file_rc_files_with_extensions ... ok [INFO] [stdout] test analyze::predicates::file::tests::config_file_next_js_specific ... ok [INFO] [stdout] test analyze::predicates::file::tests::config_file_sentry_configs ... ok [INFO] [stdout] test analyze::predicates::file::tests::config_file_unlisted_nested_patterns_do_not_match ... ok [INFO] [stdout] test analyze::predicates::file::tests::config_file_double_dot_prefix_not_matched ... ok [INFO] [stdout] test analyze::predicates::file::tests::config_file_testing_tool_configs ... ok [INFO] [stdout] test analyze::predicates::file::tests::declaration_file_dmts_dcts ... ok [INFO] [stdout] test analyze::predicates::file::tests::config_file_ignores_directory_path ... ok [INFO] [stdout] test analyze::predicates::file::tests::declaration_file_nested_paths ... ok [INFO] [stdout] test analyze::predicates::file::tests::config_file_standard_patterns ... ok [INFO] [stdout] test analyze::predicates::file::tests::not_config_file_similar_names ... ok [INFO] [stdout] test analyze::predicates::file::tests::not_declaration_file ... ok [INFO] [stdout] test analyze::predicates::file::tests::not_config_file ... ok [INFO] [stdout] test analyze::predicates::file::tests::not_config_file_dotenv_files ... ok [INFO] [stdout] test analyze::predicates::file::tests::not_declaration_file_d_ts_in_middle ... ok [INFO] [stdout] test analyze::predicates::file::tests::declaration_file_dts ... ok [INFO] [stdout] test analyze::predicates::import::tests::builtin_module_all_known ... ok [INFO] [stdout] test analyze::predicates::file::tests::not_config_file_regular_source ... ok [INFO] [stdout] test analyze::predicates::file::tests::not_declaration_file_invalid_d_extensions ... ok [INFO] [stdout] test analyze::predicates::import::tests::builtin_module_cloudflare_workers ... ok [INFO] [stdout] test analyze::predicates::import::tests::builtin_module_bun ... ok [INFO] [stdout] test analyze::predicates::import::tests::builtin_module_deno_std ... ok [INFO] [stdout] test analyze::predicates::import::tests::builtin_module_fs ... ok [INFO] [stdout] test analyze::predicates::import::tests::builtin_module_path ... ok [INFO] [stdout] test analyze::predicates::import::tests::builtin_module_subpath_with_node_prefix ... ok [INFO] [stdout] test analyze::predicates::import::tests::builtin_module_with_node_prefix ... ok [INFO] [stdout] test analyze::predicates::import::tests::implicit_dep_next_packages ... ok [INFO] [stdout] test analyze::predicates::import::tests::implicit_dep_react_dom_and_native ... ok [INFO] [stdout] test analyze::predicates::import::tests::implicit_dep_websocket_native_addons ... ok [INFO] [stdout] test analyze::predicates::import::tests::not_builtin_module ... ok [INFO] [stdout] test analyze::predicates::import::tests::builtin_module_sass ... ok [INFO] [stdout] test analyze::predicates::import::tests::not_builtin_module_fake_subpaths ... ok [INFO] [stdout] test analyze::predicates::import::tests::implicit_dep_types_packages ... ok [INFO] [stdout] test analyze::predicates::import::tests::not_builtin_module_sass_like_packages ... ok [INFO] [stdout] test analyze::predicates::import::tests::not_builtin_similar_names ... ok [INFO] [stdout] test analyze::predicates::import::tests::builtin_module_subpath_imports ... ok [INFO] [stdout] test analyze::predicates::import::tests::not_builtin_npm_packages_with_builtin_prefix ... ok [INFO] [stdout] test analyze::predicates::import::tests::not_implicit_dep ... ok [INFO] [stdout] test analyze::predicates::import::tests::not_implicit_dep_similar_names ... ok [INFO] [stdout] test analyze::predicates::import::tests::not_path_alias_bare_at_sign ... ok [INFO] [stdout] test analyze::predicates::import::tests::not_path_alias_bare_packages ... ok [INFO] [stdout] test analyze::predicates::import::tests::not_path_alias_bare_tilde ... ok [INFO] [stdout] test analyze::predicates::import::tests::not_path_alias_lodash ... ok [INFO] [stdout] test analyze::predicates::import::tests::not_path_alias_edge_case_scopes ... ok [INFO] [stdout] test analyze::predicates::import::tests::not_path_alias_lowercase_scoped_packages ... ok [INFO] [stdout] test analyze::predicates::import::tests::not_path_alias_regular_npm_packages ... ok [INFO] [stdout] test analyze::predicates::import::tests::not_path_alias_regular_package ... ok [INFO] [stdout] test analyze::predicates::import::tests::not_path_alias_emotion_react ... ok [INFO] [stdout] test analyze::predicates::import::tests::not_path_alias_lowercase_short_scope ... ok [INFO] [stdout] test analyze::predicates::import::tests::not_path_alias_scoped_npm_package ... ok [INFO] [stdout] test analyze::predicates::import::tests::path_alias_at_slash ... ok [INFO] [stdout] test analyze::predicates::import::tests::not_tooling_dep ... ok [INFO] [stdout] test analyze::predicates::import::tests::path_alias_hash_imports ... ok [INFO] [stdout] test analyze::predicates::import::tests::not_virtual_module ... ok [INFO] [stdout] test analyze::predicates::import::tests::path_alias_at_slash_subpaths ... ok [INFO] [stdout] test analyze::predicates::import::tests::not_path_alias_scoped_npm_packages ... ok [INFO] [stdout] test analyze::predicates::import::tests::not_virtual_module_non_virtual_imports ... ok [INFO] [stdout] test analyze::predicates::import::tests::path_alias_at_slash_prefix ... ok [INFO] [stdout] test analyze::predicates::import::tests::path_alias_hash_imports_map ... ok [INFO] [stdout] test analyze::predicates::import::tests::path_alias_hash_prefix ... ok [INFO] [stdout] test analyze::predicates::import::tests::path_alias_pascal_case_scope ... ok [INFO] [stdout] test analyze::predicates::import::tests::path_alias_pascal_case_scope_additional ... ok [INFO] [stdout] test analyze::predicates::import::tests::path_alias_tilde ... ok [INFO] [stdout] test analyze::predicates::import::tests::path_alias_pascal_case_scopes ... ok [INFO] [stdout] test analyze::predicates::import::tests::tooling_dep_environments_and_cli ... ok [INFO] [stdout] test analyze::predicates::import::tests::path_alias_tilde_imports ... ok [INFO] [stdout] test analyze::predicates::import::tests::tooling_dep_exact_matches ... ok [INFO] [stdout] test analyze::predicates::import::tests::virtual_module_edge_cases ... ok [INFO] [stdout] test analyze::predicates::import::tests::path_alias_tilde_prefix ... ok [INFO] [stdout] test analyze::predicates::import::tests::tooling_dep_plugin_handled_not_blanket ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::angular_guard_methods ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::angular_lifecycle_all_form_methods_exhaustive ... ok [INFO] [stdout] test analyze::predicates::import::tests::tooling_dep_prefixes ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::angular_lifecycle_all_guards_exhaustive ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::angular_form_methods ... ok [INFO] [stdout] test analyze::predicates::import::tests::virtual_module_prefix ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::angular_lifecycle_all_hooks_exhaustive ... ok [INFO] [stdout] test analyze::predicates::import::tests::tooling_dep_testing_frameworks ... ok [INFO] [stdout] test analyze::predicates::import::tests::virtual_module_vite_convention ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::angular_lifecycle_case_sensitivity ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::angular_lifecycle_check_hooks ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::angular_lifecycle_content_hooks ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::angular_lifecycle_core_hooks ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::not_angular_lifecycle_similar_names ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::not_lifecycle_common_class_methods ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::not_react_lifecycle_similar_names ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::react_context_methods ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::react_lifecycle_all_methods_exhaustive ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::react_lifecycle_case_sensitivity ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::react_lifecycle_context_methods ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::react_lifecycle_deprecated_and_unsafe ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::react_lifecycle_error_boundary ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::react_lifecycle_standard_methods ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::react_lifecycle_static_methods ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::react_non_lifecycle_methods ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::react_static_lifecycle_methods ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::react_unsafe_lifecycle_methods ... ok [INFO] [stdout] test analyze::tests::byte_offset_at_newline_boundary ... ok [INFO] [stdout] test analyze::tests::byte_offset_empty_source ... ok [INFO] [stdout] test analyze::tests::byte_offset_multibyte_accented_chars ... ok [INFO] [stdout] test analyze::tests::byte_offset_multibyte_utf8 ... ok [INFO] [stdout] test analyze::tests::byte_offset_multiline_middle_of_line3 ... ok [INFO] [stdout] test analyze::tests::byte_offset_multiline_start_of_line2 ... ok [INFO] [stdout] test analyze::tests::byte_offset_single_line_middle ... ok [INFO] [stdout] test analyze::tests::byte_offset_single_line_start ... ok [INFO] [stdout] test analyze::tests::byte_offset_via_map_fallback ... ok [INFO] [stdout] test analyze::tests::byte_offset_via_map_lookup ... ok [INFO] [stdout] test analyze::tests::compute_offsets_consecutive_newlines ... ok [INFO] [stdout] test analyze::tests::compute_offsets_crlf ... ok [INFO] [stdout] test analyze::tests::compute_offsets_empty ... ok [INFO] [stdout] test analyze::tests::compute_offsets_multiline ... ok [INFO] [stdout] test analyze::tests::compute_offsets_single_line ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::angular_lifecycle_form_methods ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::angular_lifecycle_guard_resolver_methods ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::angular_lifecycle_non_angular_methods ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::not_angular_lifecycle_method ... ok [INFO] [stdout] test analyze::predicates::lifecycle::tests::not_react_lifecycle_method ... ok [INFO] [stdout] test analyze::tests::compute_offsets_trailing_newline ... ok [INFO] [stdout] test analyze::tests::orchestration::find_dead_code_all_rules_off_returns_empty ... ok [INFO] [stdout] test analyze::tests::orchestration::find_dead_code_delegates_to_find_dead_code_with_resolved ... ok [INFO] [stdout] test analyze::tests::orchestration::suppressions_built_from_modules ... ok [INFO] [stdout] test analyze::unused_deps::tests::collect_unused::collect_unused_plugin_tooling_disabled_keeps_dep ... ok [INFO] [stdout] test analyze::unused_deps::tests::collect_unused::collect_unused_plugin_tooling_filter ... ok [INFO] [stdout] test analyze::unused_deps::tests::collect_unused::collect_unused_some_unused_are_flagged ... ok [INFO] [stdout] test analyze::unused_deps::tests::collect_unused::collect_unused_all_used_returns_empty ... ok [INFO] [stdout] test analyze::unused_deps::tests::collect_unused::collect_unused_empty_deps_returns_empty ... ok [INFO] [stdout] test analyze::unused_deps::tests::collect_unused::import_location_not_found_falls_back ... ok [INFO] [stdout] test analyze::unused_deps::tests::collect_unused::collect_unused_implicit_filter_disabled_keeps_react_dom ... ok [INFO] [stdout] test analyze::unused_deps::tests::collect_unused::collect_unused_implicit_filter_skips_react_dom ... ok [INFO] [stdout] test analyze::unused_deps::tests::collect_unused::collect_unused_known_tooling_filter_skips_jest ... ok [INFO] [stdout] test analyze::unused_deps::tests::collect_unused::listed_in_different_workspace_not_matching ... ok [INFO] [stdout] test analyze::unused_deps::tests::collect_unused::import_location_file_exists_but_package_not_found ... ok [INFO] [stdout] test analyze::tests::orchestration::find_dead_code_full_collect_usages_flag ... ok [INFO] [stdout] test analyze::unused_deps::tests::collect_unused::import_location_found ... ok [INFO] [stdout] test analyze::unused_deps::tests::collect_unused::listed_in_root_deps ... ok [INFO] [stdout] test analyze::unused_deps::tests::predicates::builtin_module_cloudflare_workers ... ok [INFO] [stdout] test analyze::unused_deps::tests::predicates::builtin_module_deno_std ... ok [INFO] [stdout] test analyze::unused_deps::tests::predicates::builtin_module_subpaths ... ok [INFO] [stdout] test analyze::unused_deps::tests::collect_unused::not_listed_anywhere ... ok [INFO] [stdout] test analyze::unused_deps::tests::predicates::implicit_dep_react_dom ... ok [INFO] [stdout] test analyze::unused_deps::tests::predicates::implicit_dep_next_packages ... ok [INFO] [stdout] test analyze::unused_deps::tests::collect_unused::listed_in_workspace_deps ... ok [INFO] [stdout] test analyze::unused_deps::tests::predicates::implicit_dep_websocket_addons ... ok [INFO] [stdout] test analyze::unused_deps::tests::predicates::scoped_npm_packages_not_path_aliases ... ok [INFO] [stdout] test analyze::unused_deps::tests::predicates::path_alias_not_reported_as_unlisted ... ok [INFO] [stdout] test analyze::unused_deps::tests::skip_dependency::skip_dep_closure_receives_correct_dep_name ... ok [INFO] [stdout] test analyze::unused_deps::tests::skip_dependency::skip_dep_empty_string_no_match ... ok [INFO] [stdout] test analyze::unused_deps::tests::skip_dependency::skip_dep_returns_false_when_no_guard_matches ... ok [INFO] [stdout] test analyze::unused_deps::tests::skip_dependency::skip_dep_when_in_ignore_list ... ok [INFO] [stdout] test analyze::unused_deps::tests::skip_dependency::skip_dep_when_plugin_referenced ... ok [INFO] [stdout] test analyze::unused_deps::tests::skip_dependency::skip_dep_when_script_used ... ok [INFO] [stdout] test analyze::unused_deps::tests::skip_dependency::skip_dep_when_used_in_workspace ... ok [INFO] [stdout] test analyze::unused_deps::tests::skip_dependency::skip_dep_when_workspace_name ... ok [INFO] [stdout] test analyze::unused_deps::tests::skip_dependency::skip_dep_multiple_guards_match ... ok [INFO] [stdout] test analyze::unused_deps::tests::skip_dependency::skip_dep_no_match_with_similar_names ... ok [INFO] [stdout] test analyze::unused_deps::tests::skip_dependency::skip_dep_when_root_flagged ... ok [INFO] [stdout] test analyze::unused_deps::tests::type_only_deps::type_only_dep_ignores_dev_dependencies ... ok [INFO] [stdout] test analyze::unused_deps::tests::type_only_deps::type_only_dep_detected_when_all_imports_are_type_only ... ok [INFO] [stdout] test analyze::unused_deps::tests::type_only_deps::type_only_dep_not_detected_when_runtime_import_exists ... ok [INFO] [stdout] test analyze::unused_deps::tests::type_only_deps::type_only_dep_skips_ignored_deps ... ok [INFO] [stdout] test analyze::unused_deps::tests::test_only_deps::not_test_only_when_also_imported_from_source ... ok [INFO] [stdout] test analyze::unused_deps::tests::test_only_deps::not_test_only_when_imported_from_app_config ... ok [INFO] [stdout] test analyze::unused_deps::tests::unlisted_deps::at_types_without_bare_package_suppresses_regardless_of_import_style ... ok [INFO] [stdout] test analyze::unused_deps::tests::type_only_deps::type_only_dep_not_detected_when_unused ... ok [INFO] [stdout] test analyze::unused_deps::tests::type_only_deps::type_only_dep_skips_workspace_packages ... ok [INFO] [stdout] test analyze::unused_deps::tests::unlisted_deps::dev_dep_not_reported_as_unlisted ... ok [INFO] [stdout] test analyze::unused_deps::tests::unlisted_deps::ignore_dependencies_suppresses_unlisted ... ok [INFO] [stdout] test analyze::unused_deps::tests::unlisted_deps::listed_dep_not_reported_as_unlisted ... ok [INFO] [stdout] test analyze::unused_deps::tests::unlisted_deps::no_at_types_still_flags_unlisted ... ok [INFO] [stdout] test analyze::unused_deps::tests::test_only_deps::test_only_dep_from_root_test_file ... ok [INFO] [stdout] test analyze::unused_deps::tests::test_only_deps::test_only_dep_from_root_config_file ... ok [INFO] [stdout] test analyze::unused_deps::tests::unlisted_deps::builtin_modules_not_reported_as_unlisted ... ok [INFO] [stdout] test analyze::unused_deps::tests::unlisted_deps::plugin_tooling_deps_not_reported_as_unlisted ... ok [INFO] [stdout] test analyze::unused_deps::tests::unlisted_deps::plugin_virtual_prefixes_not_reported_as_unlisted ... ok [INFO] [stdout] test analyze::unused_deps::tests::unlisted_deps::bun_builtins_not_reported_as_unlisted ... ok [INFO] [stdout] test analyze::unused_deps::tests::unlisted_deps::type_only_import_with_at_types_package_not_unlisted ... ok [INFO] [stdout] test analyze::unused_deps::tests::test_only_deps::test_only_dep_from_workspace_config_file ... ok [INFO] [stdout] test analyze::unused_deps::tests::unlisted_deps::optional_dep_not_reported_as_unlisted ... ok [INFO] [stdout] test analyze::unused_deps::tests::unlisted_deps::value_import_with_at_types_package_not_unlisted ... ok [INFO] [stdout] test analyze::unused_deps::tests::test_only_deps::test_only_dep_from_workspace_jest_config ... ok [INFO] [stdout] test analyze::unused_deps::tests::unlisted_deps::unlisted_dep_detected_when_not_in_package_json ... ok [INFO] [stdout] test analyze::unused_deps::tests::unlisted_deps::virtual_modules_not_reported_as_unlisted ... ok [INFO] [stdout] test analyze::unused_deps::tests::unlisted_deps::workspace_package_names_not_reported_as_unlisted ... ok [INFO] [stdout] test analyze::unused_deps::tests::unresolved_imports::no_resolved_modules_produces_no_unresolved ... ok [INFO] [stdout] test analyze::unused_deps::tests::unresolved_imports::resolved_import_not_reported_as_unresolved ... ok [INFO] [stdout] test analyze::unused_deps::tests::unlisted_deps::scoped_type_only_import_with_at_types_package_not_unlisted ... ok [INFO] [stdout] test analyze::unused_deps::tests::unlisted_deps::unlisted_dep_detected_across_multiple_files ... ok [INFO] [stdout] test analyze::unused_deps::tests::unresolved_imports::unresolved_import_file_level_suppression ... ok [INFO] [stdout] test analyze::unused_deps::tests::unresolved_imports::unresolved_import_suppressed_by_generated_import_pattern ... ok [INFO] [stdout] test analyze::unused_deps::tests::unresolved_imports::unresolved_import_detected ... ok [INFO] [stdout] test analyze::unused_deps::tests::unresolved_imports::unresolved_import_suppressed_by_inline_comment ... ok [INFO] [stdout] test analyze::unused_deps::tests::unused_deps::ignore_dependencies_config_filters_deps ... ok [INFO] [stdout] test analyze::unused_deps::tests::unresolved_imports::unresolved_import_not_suppressed_by_wrong_kind ... ok [INFO] [stdout] test analyze::unused_deps::tests::unresolved_imports::unresolved_virtual_module_not_reported ... ok [INFO] [stdout] test analyze::unused_deps::tests::unresolved_imports::unresolved_import_with_virtual_prefix_not_reported ... ok [INFO] [stdout] test analyze::unused_deps::tests::unlisted_deps::peer_dep_not_reported_as_unlisted ... ok [INFO] [stdout] test analyze::unused_deps::tests::unused_deps::all_deps_used_produces_no_unused ... ok [INFO] [stdout] test analyze::unused_deps::tests::unused_deps::known_tooling_dev_deps_not_flagged_as_unused ... ok [INFO] [stdout] test analyze::unused_deps::tests::unused_deps::multiple_unresolved_imports_collected ... ok [INFO] [stdout] test analyze::unused_deps::tests::unused_deps::no_deps_produces_no_unused ... ok [INFO] [stdout] test analyze::unused_deps::tests::unused_deps::plugin_tooling_deps_not_flagged ... ok [INFO] [stdout] test analyze::unused_deps::tests::unused_deps::no_imports_flags_all_non_implicit_deps ... ok [INFO] [stdout] test analyze::unused_deps::tests::unused_deps::plugin_tooling_dev_deps_not_flagged ... ok [INFO] [stdout] test analyze::unused_deps::tests::unused_deps::optional_dep_in_peer_deps_also_counts ... ok [INFO] [stdout] test analyze::unused_deps::tests::unused_deps::path_alias_imports_not_reported_as_unlisted ... ok [INFO] [stdout] test analyze::unused_deps::tests::unused_deps::plugin_referenced_deps_not_flagged ... ok [INFO] [stdout] test analyze::unused_deps::tests::unused_deps::script_used_packages_not_flagged ... ok [INFO] [stdout] test analyze::unused_deps::tests::unused_deps::scoped_package_subpath_import_recognized_as_used ... ok [INFO] [stdout] test analyze::unused_deps::tests::unused_deps::unused_dep_flagged_when_never_imported ... ok [INFO] [stdout] test analyze::unused_deps::tests::unused_deps::unused_dep_location_is_correct ... ok [INFO] [stdout] test analyze::unused_deps::tests::unused_deps::unused_dev_dep_non_tooling_is_flagged ... ok [INFO] [stdout] test analyze::unused_deps::tests::unused_deps::unlisted_dep_has_import_sites ... ok [INFO] [stdout] test analyze::unused_exports::tests::collect_usages_multiple_exports_same_module ... ok [INFO] [stdout] test analyze::unused_exports::tests::collect_usages_counts_references ... ok [INFO] [stdout] test analyze::unused_exports::tests::collect_usages_empty_graph ... ok [INFO] [stdout] test analyze::unused_exports::tests::collect_usages_skips_synthetic_exports ... ok [INFO] [stdout] test analyze::unused_exports::tests::collect_usages_zero_references_still_reported ... ok [INFO] [stdout] test analyze::unused_deps::tests::unused_deps::unused_optional_dep_flagged_when_never_imported ... ok [INFO] [stdout] test analyze::unused_exports::tests::collect_usages_skips_unreachable_modules ... ok [INFO] [stdout] test analyze::unused_exports::tests::duplicate_exports_detects_same_name_in_two_modules ... ok [INFO] [stdout] test analyze::unused_exports::tests::duplicate_exports_different_names_not_duplicated ... ok [INFO] [stdout] test analyze::unused_exports::tests::duplicate_exports_no_duplicates_single_module ... ok [INFO] [stdout] test analyze::unused_exports::tests::duplicate_exports_same_namespace_still_flagged ... ok [INFO] [stdout] test analyze::unused_exports::tests::duplicate_exports_direct_import_still_flagged ... ok [INFO] [stdout] test analyze::unused_exports::tests::duplicate_exports_empty_graph ... ok [INFO] [stdout] test analyze::unused_exports::tests::duplicate_exports_skips_default_exports ... ok [INFO] [stdout] test analyze::unused_exports::tests::duplicate_exports_filters_re_export_chains ... ok [INFO] [stdout] test analyze::unused_exports::tests::duplicate_exports_skips_entry_points ... ok [INFO] [stdout] test analyze::unused_exports::tests::duplicate_exports_skips_synthetic_re_export_entries ... ok [INFO] [stdout] test analyze::unused_exports::tests::duplicate_exports_skips_unreachable_modules ... ok [INFO] [stdout] test analyze::unused_exports::tests::duplicate_exports_three_modules_same_name ... ok [INFO] [stdout] test analyze::unused_exports::tests::duplicate_exports_unrelated_leaf_files_not_flagged ... ok [INFO] [stdout] test analyze::unused_exports::tests::duplicate_exports_value_type_cross_file_not_flagged ... ok [INFO] [stdout] test analyze::unused_exports::tests::duplicate_exports_value_type_merging_not_flagged ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_does_not_skip_cjs_module_with_named_exports ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_checks_unreachable_module_with_mixed_references ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_detects_unreferenced_export ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_empty_graph ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_empty_ignore_config ... ok [INFO] [stdout] test analyze::unused_deps::tests::unused_deps::implicit_deps_not_flagged_as_unused ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_ignore_wildcard_matches_all ... ok [INFO] [stdout] test analyze::unused_deps::tests::unused_deps::workspace_dep_used_within_workspace_not_flagged ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_include_entry_exports_flag ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_both_config_and_plugin_ignore ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_invalid_plugin_glob_skipped ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_ignore_specific_name_only ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_ignore_rule_wrong_file_no_effect ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_ignore_multiple_patterns ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_marks_re_export_semantically ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_no_plugin_result ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_plugin_no_used_exports ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_reports_reachable_non_entry_non_cjs_non_svelte ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_skips_alpha_visibility ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_separates_types_from_values ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_plugin_used_exports_suppresses ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_skips_entry_point ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_skips_beta_visibility ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_skips_cjs_only_module ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_skips_public_export ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_skips_export_referenced_by_reachable ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_skips_referenced_export ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_skips_svelte_files ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_skips_internal_visibility ... ok [INFO] [stdout] test analyze::unused_files::tests::find_unused_files_empty_graph ... ok [INFO] [stdout] test analyze::unused_files::tests::find_unused_files_skips_config_files ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_skips_unreachable_module ... ok [INFO] [stdout] test analyze::unused_files::tests::find_unused_files_entry_point_never_flagged ... ok [INFO] [stdout] test analyze::unused_files::tests::find_unused_files_skips_declaration_files ... ok [INFO] [stdout] test analyze::unused_files::tests::find_unused_files_skips_nonexistent_files ... ok [INFO] [stdout] test analyze::unused_files::tests::has_reachable_importer_empty_reverse_deps ... ok [INFO] [stdout] test analyze::unused_files::tests::has_reachable_importer_out_of_bounds_file_id ... ok [INFO] [stdout] test analyze::unused_files::tests::has_reachable_export_reference_detects_reachable_references ... ok [INFO] [stdout] test analyze::unused_files::tests::has_reachable_export_reference_ignores_unreachable_references ... ok [INFO] [stdout] test analyze::unused_files::tests::has_reachable_importer_with_unreachable_importer ... ok [INFO] [stdout] test analyze::unused_files::tests::find_unused_files_skips_suppressed_files ... ok [INFO] [stdout] test analyze::unused_members::tests::angular_lifecycle_method_not_flagged ... ok [INFO] [stdout] test analyze::unused_members::tests::accessed_enum_member_not_flagged ... ok [INFO] [stdout] test analyze::unused_members::tests::class_member_kind_routed_to_class_results ... ok [INFO] [stdout] test analyze::unused_members::tests::decorated_class_member_not_flagged ... ok [INFO] [stdout] test analyze::unused_members::tests::default_import_maps_to_default_export ... ok [INFO] [stdout] test analyze::unused_members::tests::entry_point_module_skips_member_analysis ... ok [INFO] [stdout] test analyze::unused_members::tests::enum_member_kind_routed_to_enum_results ... ok [INFO] [stdout] test analyze::unused_members::tests::export_with_no_members_skipped ... ok [INFO] [stdout] test analyze::unused_members::tests::instance_member_access_not_flagged ... ok [INFO] [stdout] test analyze::unused_members::tests::interface_member_usage_propagates_to_implementers ... ok [INFO] [stdout] test analyze::unused_members::tests::local_name_mapped_to_imported_name ... ok [INFO] [stdout] test analyze::unused_members::tests::mixed_enum_and_class_in_same_module ... ok [INFO] [stdout] test analyze::unused_members::tests::react_lifecycle_method_not_flagged ... ok [INFO] [stdout] test analyze::unused_members::tests::same_named_exports_do_not_share_member_usage ... ok [INFO] [stdout] test analyze::unused_members::tests::same_named_interfaces_do_not_share_member_usage ... ok [INFO] [stdout] test analyze::unused_members::tests::scoped_allowlist_matches_extends_only ... ok [INFO] [stdout] test analyze::unused_members::tests::scoped_allowlist_matches_implements_only ... ok [INFO] [stdout] test analyze::unused_members::tests::suppressed_class_member_not_flagged ... ok [INFO] [stdout] test analyze::unused_members::tests::suppressed_enum_member_not_flagged ... ok [INFO] [stdout] test analyze::unused_members::tests::this_access_does_not_skip_enum_members ... ok [INFO] [stdout] test analyze::unused_members::tests::this_field_chained_access_not_flagged ... ok [INFO] [stdout] test analyze::unused_members::tests::this_member_access_not_flagged ... ok [INFO] [stdout] test analyze::unused_members::tests::unreachable_module_skips_member_analysis ... ok [INFO] [stdout] test analyze::unused_members::tests::unreferenced_export_skips_member_analysis ... ok [INFO] [stdout] test analyze::unused_members::tests::unused_enum_member_detected ... ok [INFO] [stdout] test analyze::unused_members::tests::unused_members_empty_graph ... ok [INFO] [stdout] test analyze::unused_members::tests::user_class_member_allowlist_does_not_affect_enums ... ok [INFO] [stdout] test analyze::unused_members::tests::user_class_member_allowlist_not_flagged ... ok [INFO] [stdout] test analyze::unused_members::tests::whole_object_use_skips_all_members ... ok [INFO] [stdout] test analyze::unused_members::tests::whole_object_use_via_aliased_import ... ok [INFO] [stdout] test churn::tests::intern_author_assigns_sequential_indices ... ok [INFO] [stdout] test churn::tests::intern_author_returns_existing_index ... ok [INFO] [stdout] test churn::tests::iso_date_invalid ... ok [INFO] [stdout] test churn::tests::iso_date_letters_in_day ... ok [INFO] [stdout] test churn::tests::iso_date_letters_in_month ... ok [INFO] [stdout] test churn::tests::iso_date_too_short ... ok [INFO] [stdout] test churn::tests::iso_date_valid ... ok [INFO] [stdout] test churn::tests::iso_date_with_time_rejected ... ok [INFO] [stdout] test churn::tests::iso_date_wrong_separator_positions ... ok [INFO] [stdout] test churn::tests::numstat_binary_skipped ... ok [INFO] [stdout] test churn::tests::numstat_empty_string ... ok [INFO] [stdout] test churn::tests::numstat_large_numbers ... ok [INFO] [stdout] test churn::tests::numstat_missing_path ... ok [INFO] [stdout] test churn::tests::numstat_normal ... ok [INFO] [stdout] test churn::tests::numstat_only_added_is_binary ... ok [INFO] [stdout] test churn::tests::numstat_only_deleted_is_binary ... ok [INFO] [stdout] test churn::tests::numstat_path_with_spaces ... ok [INFO] [stdout] test churn::tests::numstat_single_field ... ok [INFO] [stdout] test churn::tests::numstat_zero_lines ... ok [INFO] [stdout] test churn::tests::parse_git_log_aggregates_per_author ... ok [INFO] [stdout] test churn::tests::parse_git_log_empty_output ... ok [INFO] [stdout] test churn::tests::parse_git_log_extracts_author_email ... ok [INFO] [stdout] test churn::tests::parse_git_log_legacy_bare_timestamp_still_parses ... ok [INFO] [stdout] test churn::tests::parse_git_log_multiple_commits_same_file ... ok [INFO] [stdout] test churn::tests::parse_git_log_numstat_before_timestamp_uses_now ... ok [INFO] [stdout] test churn::tests::parse_git_log_path_stored_as_absolute ... ok [INFO] [stdout] test churn::tests::parse_git_log_single_commit ... ok [INFO] [stdout] test churn::tests::parse_git_log_skips_binary_files ... ok [INFO] [stdout] test churn::tests::parse_git_log_trend_is_computed_per_file ... ok [INFO] [stdout] test churn::tests::parse_git_log_weighted_commits_are_positive ... ok [INFO] [stdout] test churn::tests::parse_git_log_weighted_commits_rounded ... ok [INFO] [stdout] test churn::tests::parse_git_log_weighted_decay_for_old_commits ... ok [INFO] [stdout] test churn::tests::parse_git_log_whitespace_lines_ignored ... ok [INFO] [stdout] test churn::tests::parse_since_day_singular ... ok [INFO] [stdout] test churn::tests::parse_since_days ... ok [INFO] [stdout] test churn::tests::parse_since_days_long ... ok [INFO] [stdout] test churn::tests::parse_since_iso_date ... ok [INFO] [stdout] test churn::tests::parse_since_month_singular ... ok [INFO] [stdout] test churn::tests::parse_since_months_long ... ok [INFO] [stdout] test churn::tests::parse_since_months_short ... ok [INFO] [stdout] test churn::tests::parse_since_no_number_rejected ... ok [INFO] [stdout] test churn::tests::parse_since_no_unit_rejected ... ok [INFO] [stdout] test churn::tests::parse_since_overflow_number_rejected ... ok [INFO] [stdout] test churn::tests::parse_since_unknown_unit_rejected ... ok [INFO] [stdout] test churn::tests::parse_since_week_singular ... ok [INFO] [stdout] test churn::tests::parse_since_weeks ... ok [INFO] [stdout] test churn::tests::parse_since_weeks_long ... ok [INFO] [stdout] test churn::tests::parse_since_year_long ... ok [INFO] [stdout] test churn::tests::parse_since_year_singular ... ok [INFO] [stdout] test churn::tests::parse_since_years_plural ... ok [INFO] [stdout] test churn::tests::parse_since_zero_days_rejected ... ok [INFO] [stdout] test churn::tests::parse_since_zero_rejected ... ok [INFO] [stdout] test churn::tests::parse_since_zero_weeks_rejected ... ok [INFO] [stdout] test churn::tests::parse_since_zero_years_rejected ... ok [INFO] [stdout] test churn::tests::split_number_unit_no_digits ... ok [INFO] [stdout] test churn::tests::split_number_unit_no_unit ... ok [INFO] [stdout] test churn::tests::split_number_unit_single_digit ... ok [INFO] [stdout] test churn::tests::split_number_unit_valid ... ok [INFO] [stdout] test churn::tests::trend_accelerating ... ok [INFO] [stdout] test churn::tests::trend_boundary_0_67x_ratio ... ok [INFO] [stdout] test churn::tests::trend_boundary_1_5x_ratio ... ok [INFO] [stdout] test churn::tests::trend_cooling ... ok [INFO] [stdout] test churn::tests::trend_display ... ok [INFO] [stdout] test churn::tests::trend_empty_is_stable ... ok [INFO] [stdout] test churn::tests::trend_just_above_1_5x ... ok [INFO] [stdout] test churn::tests::trend_same_timestamp_is_stable ... ok [INFO] [stdout] test churn::tests::trend_serde_serialization ... ok [INFO] [stdout] test churn::tests::trend_single_commit_is_stable ... ok [INFO] [stdout] test churn::tests::trend_stable_even_distribution ... ok [INFO] [stdout] test churn::tests::trend_two_timestamps_different ... ok [INFO] [stdout] test cross_reference::tests::affected_group_indices ... ok [INFO] [stdout] test cross_reference::tests::clone_in_different_file_than_unused_export ... ok [INFO] [stdout] test cross_reference::tests::clone_instance_outside_export_line_range ... ok [INFO] [stdout] test cross_reference::tests::detects_clone_in_unused_file ... ok [INFO] [stdout] test cross_reference::tests::detects_clone_overlapping_unused_export ... ok [INFO] [stdout] test cross_reference::tests::detects_clone_overlapping_unused_type ... ok [INFO] [stdout] test cross_reference::tests::empty_inputs_produce_no_findings ... ok [INFO] [stdout] test cross_reference::tests::empty_result_methods ... ok [INFO] [stdout] test cross_reference::tests::multiple_groups_with_findings ... ok [INFO] [stdout] test cross_reference::tests::no_findings_when_no_overlap ... ok [INFO] [stdout] test cross_reference::tests::unused_file_takes_priority_over_export ... ok [INFO] [stdout] test discover::entry_points::tests::compile_glob_set_empty_input ... ok [INFO] [stdout] test churn::tests::parse_git_log_intern_dedupes_authors ... ok [INFO] [stdout] test discover::entry_points::tests::compile_glob_set_valid_patterns ... ok [INFO] [stdout] test churn::tests::parse_git_log_multiple_files ... ok [INFO] [stdout] test discover::entry_points::tests::compile_glob_set_keeps_star_within_a_single_path_segment ... ok [INFO] [stdout] test discover::entry_points::tests::default_fallback_tests::finds_root_index_js_as_fallback ... ok [INFO] [stdout] test discover::entry_points::tests::default_fallback_tests::finds_src_index_ts_as_fallback ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_reports_non_framework_exports_in_entry_point_with_plugin_rules ... ok [INFO] [stdout] test discover::entry_points::tests::default_fallback_tests::workspace_filter_restricts_scope ... ok [INFO] [stdout] test discover::entry_points::tests::default_fallback_tests::returns_empty_when_no_index_file ... ok [INFO] [stdout] test discover::entry_points::tests::output_to_source_tests::ignores_non_output_directories ... ok [INFO] [stdout] test discover::entry_points::tests::output_to_source_tests::maps_dist_to_src_with_ts_extension ... ok [INFO] [stdout] test discover::entry_points::tests::output_to_source_tests::maps_nested_output_path_preserving_prefix ... ok [INFO] [stdout] test discover::entry_points::tests::output_to_source_tests::returns_none_when_no_source_file_exists ... ok [INFO] [stdout] test discover::entry_points::tests::non_source_extensions_not_in_list ... ok [INFO] [stdout] test analyze::unused_exports::tests::duplicate_exports_suppressed_file_wide ... ok [INFO] [stdout] test analyze::unused_deps::tests::unused_deps::workspace_package_names_not_flagged ... ok [INFO] [stdout] test discover::entry_points::tests::resolve_entry_path_tests::maps_dist_output_to_src ... ok [INFO] [stdout] test analyze::unused_exports::tests::unused_exports_invalid_ignore_glob_skipped ... ok [INFO] [stdout] test discover::entry_points::tests::resolve_entry_path_tests::preserves_entry_point_source ... ok [INFO] [stdout] test discover::entry_points::tests::resolve_entry_path_tests::rejects_parent_dir_escape_for_exact_file ... ok [INFO] [stdout] test discover::entry_points::tests::resolve_entry_path_tests::resolves_existing_file ... ok [INFO] [stdout] test discover::entry_points::tests::resolve_entry_path_tests::resolves_with_extension_fallback ... ok [INFO] [stdout] test discover::entry_points::tests::resolve_entry_path_tests::returns_none_for_nonexistent_file ... ok [INFO] [stdout] test discover::entry_points::tests::source_index_fallback_tests::detects_dist_entry_in_output_dir ... ok [INFO] [stdout] test discover::entry_points::tests::resolve_entry_path_tests::rejects_parent_dir_escape_via_extension_fallback ... ok [INFO] [stdout] test discover::entry_points::tests::source_index_fallback_tests::falls_back_to_root_index_when_no_src ... ok [INFO] [stdout] test discover::entry_points::tests::source_index_fallback_tests::finds_src_index_tsx_when_ts_missing ... ok [INFO] [stdout] test discover::entry_points::tests::source_index_fallback_tests::falls_back_to_src_main ... ok [INFO] [stdout] test discover::entry_points::tests::source_index_fallback_tests::finds_src_index_ts ... ok [INFO] [stdout] test discover::entry_points::tests::source_index_fallback_tests::prefers_src_index_over_root_index ... ok [INFO] [stdout] test discover::entry_points::tests::source_index_fallback_tests::rejects_non_output_entry_paths ... ok [INFO] [stdout] test discover::entry_points::tests::source_index_fallback_tests::rejects_substring_match_for_output_dir ... ok [INFO] [stdout] test discover::entry_points::tests::source_index_fallback_tests::returns_none_when_nothing_matches ... ok [INFO] [stdout] test discover::entry_points::tests::wildcard_entry_tests::expands_wildcard_css_entries ... ok [INFO] [stdout] test discover::entry_points::tests::resolve_entry_path_tests::maps_build_output_to_src ... ok [INFO] [stdout] test discover::entry_points::tests::source_index_fallback_tests::resolve_entry_path_uses_direct_src_mirror_when_available ... ok [INFO] [stdout] test discover::entry_points::tests::wildcard_entry_tests::wildcard_does_not_match_nonexistent_files ... ok [INFO] [stdout] test discover::infrastructure::tests::dockerfile_cmd_exec_form ... ok [INFO] [stdout] test discover::infrastructure::tests::dockerfile_cmd_shell_form ... ok [INFO] [stdout] test discover::infrastructure::tests::dockerfile_case_insensitive ... ok [INFO] [stdout] test discover::infrastructure::tests::dockerfile_detection ... ok [INFO] [stdout] test discover::infrastructure::tests::dockerfile_entrypoint_exec_form ... ok [INFO] [stdout] test discover::infrastructure::tests::dockerfile_multiline_run ... ok [INFO] [stdout] test discover::entry_points::tests::wildcard_entry_tests::wildcard_only_matches_specified_extension ... ok [INFO] [stdout] test discover::infrastructure::tests::dockerfile_run_node ... ok [INFO] [stdout] test discover::infrastructure::tests::dockerfile_no_file_refs ... ok [INFO] [stdout] test discover::infrastructure::tests::dockerfile_run_tsx_runner ... ok [INFO] [stdout] test discover::infrastructure::tests::dockerfile_skips_comments_and_other_instructions ... ok [INFO] [stdout] test discover::infrastructure::tests::exec_form_basic ... ok [INFO] [stdout] test discover::infrastructure::tests::exec_form_empty ... ok [INFO] [stdout] test discover::infrastructure::tests::exec_form_single_quotes ... ok [INFO] [stdout] test discover::infrastructure::tests::exec_form_with_commas_in_args ... ok [INFO] [stdout] test discover::infrastructure::tests::exec_form_with_flags ... ok [INFO] [stdout] test discover::infrastructure::tests::flag_value_file_refs_alias ... ok [INFO] [stdout] test discover::infrastructure::tests::flag_value_file_refs_esbuild_outfile ... ok [INFO] [stdout] test discover::infrastructure::tests::flag_value_file_refs_flag_without_file ... ok [INFO] [stdout] test discover::infrastructure::tests::flag_value_file_refs_no_flags ... ok [INFO] [stdout] test discover::infrastructure::tests::fly_toml_arbitrary_process_name ... ok [INFO] [stdout] test discover::infrastructure::tests::fly_toml_cmd ... ok [INFO] [stdout] test discover::infrastructure::tests::fly_toml_comments_and_sections ... ok [INFO] [stdout] test discover::infrastructure::tests::fly_toml_exec_form_array ... ok [INFO] [stdout] test discover::infrastructure::tests::fly_toml_ignores_non_process_keys ... ok [INFO] [stdout] test discover::infrastructure::tests::fly_toml_process_commands ... ok [INFO] [stdout] test discover::infrastructure::tests::fly_toml_release_command ... ok [INFO] [stdout] test discover::infrastructure::tests::fly_toml_section_switching ... ok [INFO] [stdout] test discover::infrastructure::tests::integration::deduplicates_entry_points ... ok [INFO] [stdout] test discover::infrastructure::tests::integration::discovers_dockerfile_cmd_entry_point ... ok [INFO] [stdout] test discover::infrastructure::tests::integration::discovers_procfile_entry_points ... ok [INFO] [stdout] test discover::infrastructure::tests::exec_form_single_element ... ok [INFO] [stdout] test discover::infrastructure::tests::integration::no_infrastructure_files_returns_empty ... ok [INFO] [stdout] test discover::infrastructure::tests::integration::discovers_variant_dockerfile_names ... ok [INFO] [stdout] test discover::infrastructure::tests::procfile_empty ... ok [INFO] [stdout] test discover::infrastructure::tests::dockerfile_run_esbuild ... ok [INFO] [stdout] test discover::infrastructure::tests::procfile_basic ... ok [INFO] [stdout] test discover::infrastructure::tests::strip_instruction_case_insensitive ... ok [INFO] [stdout] test discover::infrastructure::tests::strip_instruction_cmd ... ok [INFO] [stdout] test discover::infrastructure::tests::strip_instruction_entrypoint ... ok [INFO] [stdout] test discover::infrastructure::tests::strip_instruction_non_matching ... ok [INFO] [stdout] test discover::infrastructure::tests::strip_instruction_run ... ok [INFO] [stdout] test discover::infrastructure::tests::procfile_with_comments ... ok [INFO] [stdout] test discover::parse_scripts::tests::file_path_with_extension ... ok [INFO] [stdout] test discover::parse_scripts::tests::file_path_with_slash ... ok [INFO] [stdout] test discover::parse_scripts::tests::not_file_path ... ok [INFO] [stdout] test discover::parse_scripts::tests::not_script_file_bare_name ... ok [INFO] [stdout] test discover::entry_points::tests::plugin_entry_point_sets_preserve_runtime_test_and_support_roles ... ok [INFO] [stdout] test discover::parse_scripts::tests::script_bare_file_path ... ok [INFO] [stdout] test discover::entry_points::tests::plugin_entry_point_rules_respect_exclusions ... ok [INFO] [stdout] test discover::parse_scripts::tests::script_file_with_path ... ok [INFO] [stdout] test discover::parse_scripts::tests::script_no_file_ref ... ok [INFO] [stdout] test discover::parse_scripts::tests::script_chained_commands ... ok [INFO] [stdout] test discover::entry_points::tests::source_index_fallback_tests::resolve_entry_path_falls_back_to_src_index_for_dist_entry ... ok [INFO] [stdout] test discover::parse_scripts::tests::script_npx_prefix ... ok [INFO] [stdout] test discover::parse_scripts::tests::script_ts_node_runner ... ok [INFO] [stdout] test discover::parse_scripts::tests::script_tsx_runner ... ok [INFO] [stdout] test discover::parse_scripts::tests::script_with_flags ... ok [INFO] [stdout] test discover::parse_scripts::tests::script_node_runner ... ok [INFO] [stdout] test discover::tests::allowed_hidden_dirs_count ... ok [INFO] [stdout] test discover::tests::allowed_hidden_dirs_no_duplicates ... ok [INFO] [stdout] test discover::parse_scripts::tests::script_semicolon_separator ... ok [INFO] [stdout] test discover::tests::allowed_hidden_dirs_all_start_with_dot ... ok [INFO] [stdout] test discover::tests::file_id_re_exported ... ok [INFO] [stdout] test discover::tests::allowed_hidden_dirs_no_trailing_slash ... ok [INFO] [stdout] test discover::tests::source_extensions_re_exported ... ok [INFO] [stdout] test discover::walk::tests::allowed_hidden_dirs ... ok [INFO] [stdout] test discover::walk::tests::disallowed_hidden_dirs ... ok [INFO] [stdout] test discover::walk::tests::disallowed_hidden_dirs_idea ... ok [INFO] [stdout] test discover::tests::compile_glob_set_re_exported ... ok [INFO] [stdout] test discover::entry_points::tests::glob_patterns_never_panic_on_compile ... ok [INFO] [stdout] test discover::walk::tests::discover_files_integration::discovers_source_files_with_valid_extensions ... ok [INFO] [stdout] test discover::walk::tests::discover_files_integration::default_ignore_patterns_exclude_node_modules_and_dist ... ok [INFO] [stdout] test discover::walk::tests::discover_files_integration::custom_ignore_patterns_exclude_matching_files ... ok [INFO] [stdout] test discover::walk::tests::discover_files_integration::default_ignore_patterns_exclude_root_build ... ok [INFO] [stdout] test discover::walk::tests::discover_files_integration::empty_directory_returns_no_files ... ok [INFO] [stdout] test discover::walk::tests::discover_files_integration::excludes_root_build_directory ... ok [INFO] [stdout] test discover::walk::tests::discover_files_integration::excludes_disallowed_hidden_directories ... ok [INFO] [stdout] test discover::walk::tests::discover_files_integration::file_ids_are_sequential_after_sorting ... ok [INFO] [stdout] test discover::walk::tests::discover_files_integration::excludes_non_source_extensions ... ok [INFO] [stdout] test discover::walk::tests::discover_files_integration::non_production_mode_includes_test_files ... ok [INFO] [stdout] test discover::walk::tests::discover_files_integration::includes_allowed_hidden_directories ... ok [INFO] [stdout] test discover::walk::tests::non_hidden_dirs_not_in_allowlist ... ok [INFO] [stdout] test discover::parse_scripts::tests::proptests::looks_like_file_path_no_panic ... ok [INFO] [stdout] test discover::walk::tests::production_excludes_story_files ... ok [INFO] [stdout] test discover::walk::tests::discover_files_integration::includes_nested_build_directory ... ok [INFO] [stdout] test discover::walk::tests::production_excludes_config_files_at_root_only ... ok [INFO] [stdout] test discover::walk::tests::discover_files_integration::hidden_files_not_discovered_as_source ... ok [INFO] [stdout] test discover::walk::tests::source_extensions_exclude_image_and_data_formats ... ok [INFO] [stdout] test discover::walk::tests::source_extensions_exclude_non_source ... ok [INFO] [stdout] test discover::walk::tests::production_excludes_test_files ... ok [INFO] [stdout] test discover::walk::tests::source_extensions_include_html ... ok [INFO] [stdout] test discover::walk::tests::source_extensions_include_javascript ... ok [INFO] [stdout] test discover::walk::tests::source_extensions_include_mdx ... ok [INFO] [stdout] test discover::walk::tests::source_extensions_include_styles ... ok [INFO] [stdout] test discover::walk::tests::source_extensions_include_sfc_formats ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::build_clone_group_deduplicates_same_offset ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::build_clone_group_returns_none_below_min_lines ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::build_clone_group_returns_none_for_single_instance ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::build_clone_group_skip_local_filters_same_dir ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::build_clone_group_skip_local_keeps_cross_dir ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::build_clone_group_valid_group_construction ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::build_line_tables_empty_file ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::build_line_tables_multiple_files ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::build_line_tables_multiple_lines ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::build_line_tables_single_line_no_newline ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::build_line_tables_trailing_newline ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::insert_adjacent_merges ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::insert_fully_contained_no_change ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::insert_maintains_sorted_order ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::insert_multiple_merges_extend_only_previous ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::insert_non_overlapping ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::insert_overlapping_extends_end ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::is_covered_adjacent_intervals_not_merged ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::is_covered_at_interval_start ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::is_covered_before_any_interval ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::is_covered_different_slots_independent ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::is_covered_empty_index_returns_false ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::is_covered_exact_boundary ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::is_covered_gap_between_intervals ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::is_covered_single_interval_contained ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::is_covered_single_interval_not_contained ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::remove_line_subsets_different_files_not_subset ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::remove_line_subsets_empty_input ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::remove_line_subsets_nested_clone_removed ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::remove_line_subsets_no_subsets_all_survive ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::remove_line_subsets_partial_overlap_survives ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::remove_line_subsets_single_group_survives ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::remove_token_subsets_empty_input ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::remove_token_subsets_no_subsets_both_survive ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::remove_token_subsets_partial_overlap_survives ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::remove_token_subsets_single_group_survives ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::remove_token_subsets_strict_subset_removed ... ok [INFO] [stdout] test duplicates::detect::filtering::tests::remove_token_subsets_subset_in_one_file_but_not_other ... ok [INFO] [stdout] test duplicates::detect::suffix_array::tests::all_identical_elements ... ok [INFO] [stdout] test duplicates::detect::suffix_array::tests::all_same_with_trailing_sentinel ... ok [INFO] [stdout] test duplicates::detect::suffix_array::tests::already_sorted_input ... ok [INFO] [stdout] test duplicates::detect::suffix_array::tests::alternating_sentinels_and_tokens ... ok [INFO] [stdout] test duplicates::detect::suffix_array::tests::empty_input ... ok [INFO] [stdout] test discover::walk::tests::source_extensions_include_typescript ... ok [INFO] [stdout] test duplicates::detect::suffix_array::tests::input_with_negative_sentinels ... ok [INFO] [stdout] test duplicates::detect::suffix_array::tests::large_identical_stress ... ok [INFO] [stdout] test duplicates::detect::suffix_array::tests::mixed_input_banana_like ... ok [INFO] [stdout] test duplicates::detect::suffix_array::tests::multiple_sentinels_decreasing ... ok [INFO] [stdout] test duplicates::detect::suffix_array::tests::realistic_concatenated_files ... ok [INFO] [stdout] test duplicates::detect::suffix_array::tests::repeated_pattern ... ok [INFO] [stdout] test duplicates::detect::suffix_array::tests::large_input_stress ... ok [INFO] [stdout] test duplicates::detect::suffix_array::tests::reverse_sorted_input ... ok [INFO] [stdout] test duplicates::detect::suffix_array::tests::single_element ... ok [INFO] [stdout] test duplicates::detect::suffix_array::tests::suffix_array_is_inverse_of_rank ... ok [INFO] [stdout] test duplicates::detect::suffix_array::tests::two_elements_already_sorted ... ok [INFO] [stdout] test duplicates::detect::suffix_array::tests::two_elements_reverse_sorted ... ok [INFO] [stdout] test duplicates::detect::tests::all_files_empty_tokens_returns_empty_report ... ok [INFO] [stdout] test duplicates::detect::tests::byte_offset_beyond_source ... ok [INFO] [stdout] test duplicates::detect::tests::byte_offset_to_line_col_basic ... ok [INFO] [stdout] test duplicates::detect::tests::byte_offset_to_line_col_fast_at_newlines ... ok [INFO] [stdout] test duplicates::detect::tests::byte_offset_to_line_col_fast_beyond_source ... ok [INFO] [stdout] test duplicates::detect::tests::byte_offset_to_line_col_fast_empty_source ... ok [INFO] [stdout] test duplicates::detect::tests::byte_offset_to_line_col_fast_matches_simple ... ok [INFO] [stdout] test duplicates::detect::tests::byte_offset_to_line_col_inside_multibyte ... ok [INFO] [stdout] test duplicates::detect::tests::byte_offset_to_line_col_multibyte_chars ... ok [INFO] [stdout] test duplicates::detect::tests::concat_empty_file_in_middle ... ok [INFO] [stdout] test discover::walk::tests::production_patterns_are_valid_globs ... ok [INFO] [stdout] test duplicates::detect::tests::concat_empty_files_list ... ok [INFO] [stdout] test duplicates::detect::tests::concat_file_of_maps_correctly ... ok [INFO] [stdout] test duplicates::detect::tests::concat_file_offsets_are_correct ... ok [INFO] [stdout] test duplicates::detect::tests::concat_sentinels_are_unique ... ok [INFO] [stdout] test duplicates::detect::tests::concat_single_file_no_sentinel ... ok [INFO] [stdout] test duplicates::detect::tests::concat_three_files_unique_sentinels ... ok [INFO] [stdout] test duplicates::detect::tests::concat_two_files_one_sentinel ... ok [INFO] [stdout] test duplicates::detect::tests::detector_stats_are_consistent ... ok [INFO] [stdout] test duplicates::detect::tests::detector_groups_sorted_by_token_count_desc ... ok [INFO] [stdout] test duplicates::detect::tests::detects_exact_duplicate_across_files ... ok [INFO] [stdout] test duplicates::detect::tests::empty_input_edge_case ... ok [INFO] [stdout] test duplicates::detect::tests::empty_input_produces_empty_report ... ok [INFO] [stdout] test duplicates::detect::tests::extraction_at_least_two_instances ... ok [INFO] [stdout] test duplicates::detect::tests::extraction_below_min_tokens_no_groups ... ok [INFO] [stdout] test duplicates::detect::tests::extraction_empty_sa ... ok [INFO] [stdout] test duplicates::detect::suffix_array::tests::single_sentinel_only ... ok [INFO] [stdout] test duplicates::detect::tests::extraction_produces_valid_offsets ... ok [INFO] [stdout] test duplicates::detect::tests::extraction_removes_overlapping_same_file ... ok [INFO] [stdout] test duplicates::detect::tests::extraction_single_suffix_no_groups ... ok [INFO] [stdout] test duplicates::detect::tests::extraction_skips_sentinel_positions ... ok [INFO] [stdout] test duplicates::detect::tests::large_min_tokens_no_clones ... ok [INFO] [stdout] test duplicates::detect::tests::lcp_all_identical ... ok [INFO] [stdout] test duplicates::detect::tests::lcp_construction_basic ... ok [INFO] [stdout] test duplicates::detect::tests::lcp_empty_input ... ok [INFO] [stdout] test duplicates::detect::tests::lcp_multiple_sentinels_between_files ... ok [INFO] [stdout] test duplicates::detect::tests::lcp_no_common_prefixes ... ok [INFO] [stdout] test duplicates::detect::tests::lcp_sentinel_at_start ... ok [INFO] [stdout] test duplicates::detect::tests::lcp_sentinel_prevents_cross_file_extension ... ok [INFO] [stdout] test duplicates::detect::tests::lcp_stops_at_sentinels ... ok [INFO] [stdout] test duplicates::detect::tests::many_files_with_shared_prefix ... ok [INFO] [stdout] test duplicates::detect::tests::min_lines_allows_long_enough_clones ... ok [INFO] [stdout] test duplicates::detect::tests::min_lines_filters_short_clones ... ok [INFO] [stdout] test duplicates::detect::tests::min_tokens_zero_returns_empty ... ok [INFO] [stdout] test duplicates::detect::tests::mixed_empty_and_nonempty_files ... ok [INFO] [stdout] test duplicates::detect::tests::no_detection_below_min_tokens ... ok [INFO] [stdout] test duplicates::detect::tests::no_self_overlap ... ok [INFO] [stdout] test duplicates::detect::tests::overlapping_clones_largest_wins ... ok [INFO] [stdout] test duplicates::detect::tests::partial_overlap_between_two_files ... ok [INFO] [stdout] test duplicates::detect::tests::pipeline_no_false_positives_with_different_files ... ok [INFO] [stdout] test duplicates::detect::tests::pipeline_rank_concat_sa_lcp_roundtrip ... ok [INFO] [stdout] test duplicates::detect::tests::lcp_single_element ... ok [INFO] [stdout] test duplicates::detect::tests::proptests::lcp_values_bounded_by_text_length ... ok [INFO] [stdout] test discover::walk::tests::discover_files_integration::production_mode_excludes_test_files ... ok [INFO] [stdout] test duplicates::detect::tests::proptests::suffix_array_empty_input ... ok [INFO] [stdout] test discover::parse_scripts::tests::proptests::looks_like_script_file_no_panic ... ok [INFO] [stdout] test duplicates::detect::tests::rank_reduce_distinct_hashes_get_distinct_ranks ... ok [INFO] [stdout] test duplicates::detect::tests::rank_reduce_empty_files ... ok [INFO] [stdout] test duplicates::detect::tests::rank_reduce_preserves_equality ... ok [INFO] [stdout] test duplicates::detect::tests::rank_reduce_single_empty_file ... ok [INFO] [stdout] test duplicates::detect::tests::rank_reduction_maps_correctly ... ok [INFO] [stdout] test duplicates::detect::tests::rank_reduce_all_same_hash ... ok [INFO] [stdout] test duplicates::detect::tests::report_clone_families_and_mirrored_directories_empty ... ok [INFO] [stdout] test duplicates::detect::tests::sa_all_identical ... ok [INFO] [stdout] test duplicates::detect::tests::sa_already_sorted ... ok [INFO] [stdout] test duplicates::detect::tests::sa_construction_basic ... ok [INFO] [stdout] test duplicates::detect::tests::sa_empty_input ... ok [INFO] [stdout] test duplicates::detect::tests::sa_is_valid_permutation ... ok [INFO] [stdout] test duplicates::detect::tests::sa_multiple_sentinels ... ok [INFO] [stdout] test duplicates::detect::tests::sa_ordering_invariant ... ok [INFO] [stdout] test duplicates::detect::tests::proptests::lcp_values_same_length_as_sa ... ok [INFO] [stdout] test duplicates::detect::tests::sa_reverse_sorted ... ok [INFO] [stdout] test duplicates::detect::tests::sa_two_elements_reversed ... ok [INFO] [stdout] test duplicates::detect::tests::sa_two_elements_sorted ... ok [INFO] [stdout] test duplicates::detect::tests::sa_with_negative_sentinels ... ok [INFO] [stdout] test duplicates::detect::tests::single_empty_token_file_returns_empty_report ... ok [INFO] [stdout] test duplicates::detect::tests::sa_single_element ... ok [INFO] [stdout] test duplicates::detect::tests::single_file_no_clones ... ok [INFO] [stdout] test duplicates::detect::tests::single_file_internal_duplication ... ok [INFO] [stdout] test duplicates::detect::tests::skip_local_filters_same_directory ... ok [INFO] [stdout] test duplicates::detect::tests::skip_local_keeps_cross_directory ... ok [INFO] [stdout] test duplicates::detect::tests::stats_computation ... ok [INFO] [stdout] test duplicates::detect::tests::stats_duplicated_tokens_capped ... ok [INFO] [stdout] test duplicates::detect::tests::skip_local_with_root_level_files ... ok [INFO] [stdout] test duplicates::detect::tests::stats_empty_groups ... ok [INFO] [stdout] test duplicates::detect::tests::stats_duplication_percentage_within_bounds ... ok [INFO] [stdout] test duplicates::detect::tests::stats_multiple_groups_same_file ... ok [INFO] [stdout] test duplicates::detect::tests::stats_zero_total_lines ... ok [INFO] [stdout] test duplicates::detect::tests::three_empty_files_early_return ... ok [INFO] [stdout] test duplicates::detect::tests::three_file_grouping ... ok [INFO] [stdout] test duplicates::detect::tests::unique_ranks_computation_single_file ... ok [INFO] [stdout] test duplicates::families::tests::absolute_paths_get_relativized_in_location_hint ... ok [INFO] [stdout] test duplicates::families::tests::cross_directory_files_get_shared_directory_hint ... ok [INFO] [stdout] test duplicates::families::tests::empty_groups_produce_no_families ... ok [INFO] [stdout] test duplicates::families::tests::estimated_savings_for_extract_function ... ok [INFO] [stdout] test duplicates::families::tests::estimated_savings_for_extract_module ... ok [INFO] [stdout] test duplicates::families::tests::families_sorted_by_total_lines_descending ... ok [INFO] [stdout] test duplicates::families::tests::groups_sharing_same_files_form_one_family ... ok [INFO] [stdout] test duplicates::families::tests::groups_with_different_files_form_separate_families ... ok [INFO] [stdout] test duplicates::families::tests::large_family_gets_extract_module_suggestion ... ok [INFO] [stdout] test duplicates::families::tests::multiple_small_groups_each_get_function_suggestion ... ok [INFO] [stdout] test duplicates::families::tests::same_directory_files_get_specific_location_hint ... ok [INFO] [stdout] test duplicates::families::tests::single_group_produces_one_family ... ok [INFO] [stdout] test duplicates::families::tests::single_instance_group_zero_savings ... ok [INFO] [stdout] test duplicates::families::tests::small_family_gets_extract_function_suggestion ... ok [INFO] [stdout] test duplicates::families::tests::total_duplicated_tokens_is_sum ... ok [INFO] [stdout] test duplicates::normalize::tests::different_token_kinds_produce_distinct_hashes ... ok [INFO] [stdout] test duplicates::normalize::tests::empty_input_produces_empty_output ... ok [INFO] [stdout] test duplicates::normalize::tests::mild_mode_equivalent_to_strict ... ok [INFO] [stdout] test duplicates::detect::tests::stats_single_instance_no_duplicated_tokens ... ok [INFO] [stdout] test duplicates::normalize::tests::null_template_regexp_have_distinct_hashes ... ok [INFO] [stdout] test duplicates::normalize::tests::operators_have_distinct_hashes ... ok [INFO] [stdout] test duplicates::normalize::tests::null_literal_has_stable_hash ... ok [INFO] [stdout] test duplicates::detect::tests::skip_local_false_keeps_same_directory ... ok [INFO] [stdout] test duplicates::normalize::tests::preserves_original_indices ... ok [INFO] [stdout] test duplicates::detect::tests::proptests::clone_groups_have_at_least_two_instances ... ok [INFO] [stdout] test duplicates::detect::tests::proptests::suffix_array_is_permutation ... ok [INFO] [stdout] test duplicates::normalize::tests::punctuation_has_distinct_hashes ... ok [INFO] [stdout] test duplicates::normalize::tests::regexp_literal_has_stable_hash ... ok [INFO] [stdout] test duplicates::normalize::tests::resolved_normalization_from_mode_defaults ... ok [INFO] [stdout] test duplicates::detect::tests::proptests::clones_respect_min_tokens ... ok [INFO] [stdout] test duplicates::normalize::tests::resolved_normalization_overrides_mode_defaults ... ok [INFO] [stdout] test duplicates::normalize::tests::resolved_strict_with_ignore_identifiers_override ... ok [INFO] [stdout] test duplicates::normalize::tests::resolved_strict_with_ignore_numbers_override ... ok [INFO] [stdout] test duplicates::normalize::tests::resolved_strict_with_ignore_strings_override ... ok [INFO] [stdout] test duplicates::normalize::tests::semantic_mode_blinds_identifiers ... ok [INFO] [stdout] test duplicates::normalize::tests::semantic_mode_blinds_numeric_literals ... ok [INFO] [stdout] test duplicates::normalize::tests::semantic_mode_blinds_string_literals ... ok [INFO] [stdout] test duplicates::normalize::tests::semantic_mode_preserves_booleans ... ok [INFO] [stdout] test duplicates::normalize::tests::semantic_mode_preserves_keywords ... ok [INFO] [stdout] test duplicates::normalize::tests::strict_mode_preserves_identifiers ... ok [INFO] [stdout] test duplicates::normalize::tests::template_literal_has_stable_hash ... ok [INFO] [stdout] test duplicates::normalize::tests::weak_mode_blinds_strings_only ... ok [INFO] [stdout] test duplicates::tests::build_ignore_set_empty ... ok [INFO] [stdout] test duplicates::tests::build_ignore_set_valid_patterns ... ok [INFO] [stdout] test duplicates::tests::file_wide_suppression_excludes_file ... ok [INFO] [stdout] test duplicates::tests::find_duplicates_empty_files ... ok [INFO] [stdout] test duplicates::tests::find_duplicates_with_real_files ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::file_tokens_line_count_matches_source ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::file_tokens_line_count_minimum_is_one ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::js_file_with_jsx_retries_as_jsx ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::tokenize_arrow_function ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::tokenize_astro_adjusts_span_offsets ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::tokenize_astro_extracts_frontmatter ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::tokenize_astro_without_frontmatter_returns_empty ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::tokenize_boolean_literal ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::tokenize_class ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::tokenize_css_returns_empty ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::tokenize_empty_file ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::tokenize_function_declaration ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::tokenize_if_else ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::tokenize_jsx_element ... ok [INFO] [stdout] test duplicates::normalize::tests::resolved_semantic_with_preserve_identifiers_override ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::tokenize_mdx_without_statements_returns_empty ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::tokenize_mdx_extracts_imports_and_exports ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::tokenize_no_extension_uses_default_source_type ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::tokenize_null_literal ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::tokenize_scss_returns_empty ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::tokenize_string_literal ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::tokenize_ts_enum ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::tokenize_ts_interface ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::tokenize_ts_type_alias ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::tokenize_variable_declaration ... ok [INFO] [stdout] test duplicates::normalize::tests::proptests::normalization_is_idempotent ... ok [INFO] [stdout] test discover::parse_scripts::tests::proptests::extract_script_file_refs_no_panic ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_array_destructuring ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_async_generator_function ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_block_statement_produces_braces ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_chained_method_calls_uses_point_spans ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_class_with_getter_setter ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_class_with_static_members ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_class_without_name_and_no_extends ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_comma_separated_expressions ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_computed_property_key ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_deeply_nested_structure ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_expression_statement_appends_semicolon ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_function_without_name ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_iife_pattern ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_large_realistic_function ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_multiple_declarators_in_single_declaration ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_nested_destructuring ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_nested_ternary ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_object_destructuring ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_object_spread ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_object_with_nested_member_access ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_only_comments ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_optional_chaining_call ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_optional_chaining_member_access ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_rest_parameter ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_single_semicolons ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_using_declaration_maps_to_const ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_variable_declarator_with_no_initializer ... ok [INFO] [stdout] test duplicates::tokenize::tests::edge_cases::tokenize_whitespace_only_file ... ok [INFO] [stdout] test duplicates::tokenize::tests::es_modules::tokenize_dynamic_import ... ok [INFO] [stdout] test duplicates::tokenize::tests::es_modules::tokenize_export_all_declaration ... ok [INFO] [stdout] test duplicates::tokenize::tests::es_modules::tokenize_export_default_declaration ... ok [INFO] [stdout] test duplicates::tokenize::tests::es_modules::tokenize_export_named_specifiers ... ok [INFO] [stdout] test duplicates::tokenize::tests::es_modules::tokenize_export_named_with_from ... ok [INFO] [stdout] test duplicates::tokenize::tests::es_modules::tokenize_import_declaration ... ok [INFO] [stdout] test duplicates::tokenize::tests::es_modules::tokenize_import_default_and_named ... ok [INFO] [stdout] test duplicates::tokenize::tests::es_modules::tokenize_import_namespace ... ok [INFO] [stdout] test duplicates::tokenize::tests::es_modules::tokenize_import_with_as_alias ... ok [INFO] [stdout] test duplicates::tokenize::tests::expressions::tokenize_array_expression ... ok [INFO] [stdout] test duplicates::tokenize::tests::expressions::tokenize_arrow_function_params_produce_commas ... ok [INFO] [stdout] test duplicates::tokenize::tests::expressions::tokenize_async_arrow_function ... ok [INFO] [stdout] test duplicates::tokenize::tests::expressions::tokenize_await_expression ... ok [INFO] [stdout] test duplicates::tokenize::tests::expressions::tokenize_call_expression_with_arguments ... ok [INFO] [stdout] test duplicates::tokenize::tests::expressions::tokenize_computed_member_expression ... ok [INFO] [stdout] test duplicates::tokenize::tests::expressions::tokenize_conditional_ternary_expression ... ok [INFO] [stdout] test duplicates::tokenize::tests::expressions::tokenize_function_params_produce_commas ... ok [INFO] [stdout] test duplicates::tokenize::tests::expressions::tokenize_new_expression ... ok [INFO] [stdout] test duplicates::tokenize::tests::expressions::tokenize_new_expression_with_arguments ... ok [INFO] [stdout] test duplicates::tokenize::tests::expressions::tokenize_object_expression ... ok [INFO] [stdout] test duplicates::tokenize::tests::expressions::tokenize_regex_in_condition ... ok [INFO] [stdout] test duplicates::tokenize::tests::expressions::tokenize_regex_literal ... ok [INFO] [stdout] test duplicates::tokenize::tests::expressions::tokenize_regex_with_flags ... ok [INFO] [stdout] test duplicates::tokenize::tests::expressions::tokenize_sequence_expression ... ok [INFO] [stdout] test duplicates::tokenize::tests::expressions::tokenize_spread_element ... ok [INFO] [stdout] test duplicates::tokenize::tests::expressions::tokenize_static_member_expression ... ok [INFO] [stdout] test duplicates::tokenize::tests::expressions::tokenize_super_expression ... ok [INFO] [stdout] test duplicates::tokenize::tests::expressions::tokenize_tagged_template_literal ... ok [INFO] [stdout] test duplicates::tokenize::tests::expressions::tokenize_template_literal ... ok [INFO] [stdout] test duplicates::tokenize::tests::expressions::tokenize_template_literal_with_multiple_expressions ... ok [INFO] [stdout] test duplicates::tokenize::tests::expressions::tokenize_this_expression ... ok [INFO] [stdout] test duplicates::tokenize::tests::expressions::tokenize_yield_expression ... ok [INFO] [stdout] test duplicates::tokenize::tests::ignore_imports::skip_imports_disabled_preserves_imports ... ok [INFO] [stdout] test duplicates::tokenize::tests::ignore_imports::skip_imports_does_not_filter_dynamic_import ... ok [INFO] [stdout] test duplicates::tokenize::tests::ignore_imports::skip_imports_does_not_filter_require ... ok [INFO] [stdout] test duplicates::tokenize::tests::ignore_imports::skip_imports_preserves_export_all ... ok [INFO] [stdout] test duplicates::tokenize::tests::ignore_imports::skip_imports_preserves_export_declaration ... ok [INFO] [stdout] test duplicates::tokenize::tests::ignore_imports::skip_imports_preserves_export_default ... ok [INFO] [stdout] test duplicates::tokenize::tests::ignore_imports::skip_imports_preserves_reexport ... ok [INFO] [stdout] test duplicates::tokenize::tests::ignore_imports::skip_imports_preserves_runtime_code ... ok [INFO] [stdout] test duplicates::tokenize::tests::ignore_imports::skip_imports_reduces_token_count ... ok [INFO] [stdout] test duplicates::tokenize::tests::ignore_imports::skip_imports_removes_default_import ... ok [INFO] [stdout] test duplicates::tokenize::tests::ignore_imports::skip_imports_removes_namespace_import ... ok [INFO] [stdout] test duplicates::tokenize::tests::ignore_imports::skip_imports_removes_side_effect_import ... ok [INFO] [stdout] test duplicates::tokenize::tests::ignore_imports::skip_imports_removes_sorted_import_block ... ok [INFO] [stdout] test duplicates::tokenize::tests::ignore_imports::skip_imports_removes_type_import ... ok [INFO] [stdout] test duplicates::tokenize::tests::ignore_imports::skip_imports_removes_value_import ... ok [INFO] [stdout] test duplicates::tokenize::tests::ignore_imports::skip_imports_with_cross_language ... ok [INFO] [stdout] test duplicates::tokenize::tests::jsx::tokenize_jsx_expression_container ... ok [INFO] [stdout] test duplicates::tokenize::tests::jsx::tokenize_jsx_fragment ... ok [INFO] [stdout] test duplicates::tokenize::tests::jsx::tokenize_jsx_self_closing_element ... ok [INFO] [stdout] test duplicates::tokenize::tests::jsx::tokenize_jsx_spread_attribute ... ok [INFO] [stdout] test duplicates::tokenize::tests::operators::tokenize_all_binary_operators ... ok [INFO] [stdout] test duplicates::tokenize::tests::operators::tokenize_assignment_operators ... ok [INFO] [stdout] test duplicates::tokenize::tests::operators::tokenize_logical_operators ... ok [INFO] [stdout] test duplicates::tokenize::tests::operators::tokenize_prefix_and_postfix_update ... ok [INFO] [stdout] test duplicates::tokenize::tests::operators::tokenize_typeof_void_delete_as_keywords ... ok [INFO] [stdout] test duplicates::tokenize::tests::operators::tokenize_unary_operators ... ok [INFO] [stdout] test discover::entry_points::tests::compile_glob_set_no_panic ... ok [INFO] [stdout] test duplicates::normalize::tests::proptests::original_indices_are_sequential ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::tokenize_vue_sfc_extracts_script_block ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::tokenize_vue_sfc_adjusts_span_offsets ... ok [INFO] [stdout] test duplicates::tokenize::tests::basic_tokenization::tokenize_svelte_sfc_extracts_script_block ... ok [INFO] [stdout] test duplicates::tokenize::tests::statements::tokenize_do_while_statement ... ok [INFO] [stdout] test duplicates::tokenize::tests::statements::tokenize_for_in_has_parens ... ok [INFO] [stdout] test duplicates::tokenize::tests::statements::tokenize_for_in_statement ... ok [INFO] [stdout] test duplicates::tokenize::tests::statements::tokenize_for_of_has_parens ... ok [INFO] [stdout] test duplicates::tokenize::tests::statements::tokenize_for_of_statement ... ok [INFO] [stdout] test duplicates::tokenize::tests::statements::tokenize_for_statement_empty_clauses ... ok [INFO] [stdout] test duplicates::tokenize::tests::statements::tokenize_for_statement_with_all_clauses ... ok [INFO] [stdout] test duplicates::tokenize::tests::statements::tokenize_labeled_statement ... ok [INFO] [stdout] test duplicates::tokenize::tests::statements::tokenize_switch_case_default ... ok [INFO] [stdout] test duplicates::tokenize::tests::statements::tokenize_continue_statement ... ok [INFO] [stdout] test duplicates::tokenize::tests::statements::tokenize_throw_statement ... ok [INFO] [stdout] test duplicates::tokenize::tests::statements::tokenize_try_catch_finally ... ok [INFO] [stdout] test duplicates::tokenize::tests::statements::tokenize_switch_with_open_close_parens ... ok [INFO] [stdout] test duplicates::tokenize::tests::statements::tokenize_while_has_parens_around_condition ... ok [INFO] [stdout] test duplicates::tokenize::tests::statements::tokenize_while_statement ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::exact_token_sequence_for_let_string_assignment ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::exact_token_sequence_for_return_statement ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::exact_token_sequence_for_simple_const_assignment ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::strip_types_arrow_function_matches_js ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::strip_types_class_with_generics ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::strip_types_mixed_import_keeps_only_value_import ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::strip_types_non_null_assertion_matches_js ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::token_spans_are_monotonically_non_decreasing ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::token_spans_are_within_source_bounds ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::tokenize_assignment_expression_ordering ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::tokenize_binary_expression_preserves_left_op_right_order ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::tokenize_call_expression_parens_use_point_spans ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::tokenize_conditional_expression_ordering ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::tokenize_deeply_nested_call_chain_ordering ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::tokenize_deeply_nested_if_else_chain ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::tokenize_empty_function_body ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::tokenize_export_named_value_declaration ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::tokenize_if_without_else ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::tokenize_jsx_self_closing_element ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::tokenize_logical_expression_order ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::tokenize_multiple_expression_statements_all_have_semicolons ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::tokenize_nested_binary_expressions_maintain_order ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::tokenize_nested_function_calls ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::tokenize_object_with_nested_member_access ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::tokenize_postfix_decrement_order ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::tokenize_same_source_produces_identical_tokens ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::tokenize_var_declaration ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_types::file_tokens_clone ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_types::file_tokens_direct_construction ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_types::file_tokens_empty_construction ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_types::point_span_at_large_offset ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_types::point_span_at_zero ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_ordering::tokenize_empty_arrow_function_body ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_types::point_span_near_u32_max ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_types::source_token_clone ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_types::source_token_construction_and_field_access ... ok [INFO] [stdout] test duplicates::tokenize::tests::token_types::token_kind_equality_and_hash ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::cross_language_preserves_non_declare_namespace ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::strip_types_arrow_function_matches_js ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::strip_types_class_with_generics ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::strip_types_mixed_import_keeps_only_value_import ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::strip_types_non_null_assertion_matches_js ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::strip_types_preserves_enums ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::strip_types_preserves_runtime_code ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::strip_types_preserves_value_imports ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::strip_types_removes_as_const ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::strip_types_removes_as_expression ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::strip_types_removes_complex_generics ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::strip_types_removes_conditional_type ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::strip_types_removes_declare_module ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::strip_types_removes_export_type ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::strip_types_removes_export_type_but_keeps_export_value ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::strip_types_removes_generic_type_arguments ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::strip_types_removes_generic_type_parameters ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::strip_types_removes_import_type ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::strip_types_removes_interface_declarations ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::strip_types_removes_parameter_type_annotations ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::strip_types_removes_return_type_annotations ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::strip_types_removes_satisfies_expression ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::strip_types_removes_ts_type_annotation_colon ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::strip_types_removes_type_alias_declarations ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::strip_types_ts_and_js_produce_identical_token_kinds ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::tokenize_cross_language_produces_correct_metadata ... ok [INFO] [stdout] test duplicates::tokenize::tests::typescript::tokenize_ts_as_const ... ok [INFO] [stdout] test duplicates::tokenize::tests::type_stripping::tokenize_vue_sfc_with_cross_language_stripping ... ok [INFO] [stdout] test duplicates::tokenize::tests::typescript::tokenize_ts_conditional_type_without_strip ... ok [INFO] [stdout] test duplicates::tokenize::tests::typescript::tokenize_ts_enum_body_has_braces ... ok [INFO] [stdout] test duplicates::tokenize::tests::typescript::tokenize_ts_enum_with_initializers ... ok [INFO] [stdout] test duplicates::tokenize::tests::typescript::tokenize_ts_generic_type_parameters ... ok [INFO] [stdout] test duplicates::tokenize::tests::typescript::tokenize_ts_interface_body_has_braces ... ok [INFO] [stdout] test duplicates::tokenize::tests::typescript::tokenize_ts_module_declaration_not_stripped_when_not_declare ... ok [INFO] [stdout] test duplicates::tokenize::tests::typescript::tokenize_ts_as_expression ... ok [INFO] [stdout] test duplicates::tokenize::tests::typescript::tokenize_ts_non_null_assertion ... ok [INFO] [stdout] test duplicates::tokenize::tests::typescript::tokenize_ts_property_signatures_in_interface ... ok [INFO] [stdout] test duplicates::tokenize::tests::typescript::tokenize_ts_satisfies_expression ... ok [INFO] [stdout] test duplicates::tokenize::tests::typescript::tokenize_ts_type_keywords ... ok [INFO] [stdout] test duplicates::types::tests::config_deserialize_cross_language ... ok [INFO] [stdout] test duplicates::types::tests::config_deserialize_defaults ... ok [INFO] [stdout] test duplicates::types::tests::config_deserialize_json_normalization ... ok [INFO] [stdout] test duplicates::types::tests::config_deserialize_normalization_overrides ... ok [INFO] [stdout] test duplicates::types::tests::config_deserialize_toml ... ok [INFO] [stdout] test duplicates::types::tests::default_config_values ... ok [INFO] [stdout] test duplicates::types::tests::detection_mode_default_is_mild ... ok [INFO] [stdout] test duplicates::types::tests::detection_mode_display ... ok [INFO] [stdout] test duplicates::types::tests::detection_mode_from_str ... ok [INFO] [stdout] test errors::tests::accessors_none_when_unset ... ok [INFO] [stdout] test errors::tests::accessors_return_expected_values ... ok [INFO] [stdout] test errors::tests::builder_methods_chain ... ok [INFO] [stdout] test errors::tests::context_appears_before_help ... ok [INFO] [stdout] test errors::tests::fallow_error_display_config ... ok [INFO] [stdout] test errors::tests::fallow_error_display_file_read ... ok [INFO] [stdout] test errors::tests::fallow_error_display_parse ... ok [INFO] [stdout] test errors::tests::fallow_error_display_resolve ... ok [INFO] [stdout] test errors::tests::file_read_default_help_mentions_exists ... ok [INFO] [stdout] test errors::tests::file_read_error_has_source ... ok [INFO] [stdout] test errors::tests::non_io_errors_have_no_source ... ok [INFO] [stdout] test errors::tests::parse_default_help_mentions_ignore ... ok [INFO] [stdout] test errors::tests::parse_single_error_no_count ... ok [INFO] [stdout] test errors::tests::parse_zero_errors_no_count ... ok [INFO] [stdout] test errors::tests::resolve_default_help_mentions_installed ... ok [INFO] [stdout] test errors::tests::with_code_overrides_default_code ... ok [INFO] [stdout] test errors::tests::with_context_appends_context_line ... ok [INFO] [stdout] test errors::tests::with_help_appends_help_line ... ok [INFO] [stdout] test plugins::angular::tests::resolve_config_extracts_main ... ok [INFO] [stdout] test plugins::angular::tests::resolve_config_extracts_scripts ... ok [INFO] [stdout] test errors::tests::error_without_code_shows_plain_prefix ... ok [INFO] [stdout] test plugins::angular::tests::resolve_config_extracts_styles ... ok [INFO] [stdout] test plugins::angular::tests::resolve_config_extracts_styles_object_form ... ok [INFO] [stdout] test plugins::angular::tests::resolve_config_multiple_projects ... ok [INFO] [stdout] test plugins::angular::tests::resolve_config_polyfills_skips_packages ... ok [INFO] [stdout] test plugins::angular::tests::resolve_config_scss_include_paths_skips_missing_dirs ... ok [INFO] [stdout] test plugins::astro::tests::used_exports_cover_current_astro_conventions ... ok [INFO] [stdout] test plugins::angular::tests::resolve_config_extracts_scss_include_paths ... ok [INFO] [stdout] test plugins::astro::tests::virtual_module_prefixes_includes_astro_builtins ... ok [INFO] [stdout] test plugins::babel::tests::plugin_already_full ... ok [INFO] [stdout] test plugins::babel::tests::plugin_babel_scoped_short ... ok [INFO] [stdout] test plugins::babel::tests::preset_already_full ... ok [INFO] [stdout] test plugins::babel::tests::plugin_short_name ... ok [INFO] [stdout] test plugins::babel::tests::preset_babel_scoped_short ... ok [INFO] [stdout] test plugins::babel::tests::preset_module_prefix ... ok [INFO] [stdout] test plugins::babel::tests::preset_short_name ... ok [INFO] [stdout] test plugins::babel::tests::resolve_config_extends ... ok [INFO] [stdout] test plugins::babel::tests::resolve_config_presets_and_plugins ... ok [INFO] [stdout] test plugins::babel::tests::resolve_config_json_babelrc ... ok [INFO] [stdout] test plugins::config_parser::tests::array_nested_empty_when_no_array ... ok [INFO] [stdout] test plugins::config_parser::tests::array_with_object_input_form_extracted ... ok [INFO] [stdout] test plugins::config_parser::tests::extract_addons_array ... ok [INFO] [stdout] test plugins::config_parser::tests::extract_aliases_from_array_form ... ok [INFO] [stdout] test plugins::config_parser::tests::extract_aliases_from_object_with_array_values ... ok [INFO] [stdout] test plugins::config_parser::tests::extract_aliases_from_object_with_file_url_to_path ... ok [INFO] [stdout] test plugins::config_parser::tests::extract_array_object_strings_mixed_forms ... ok [INFO] [stdout] test plugins::config_parser::tests::extract_config_from_default_export_async_function_declaration ... ok [INFO] [stdout] test plugins::config_parser::tests::extract_config_from_default_export_function_declaration ... ok [INFO] [stdout] test plugins::config_parser::tests::array_nested_extraction ... ok [INFO] [stdout] test plugins::config_parser::tests::extract_config_plugin_option_string_from_json ... ok [INFO] [stdout] test plugins::config_parser::tests::extract_config_from_exported_arrow_function_identifier ... ok [INFO] [stdout] test plugins::config_parser::tests::extract_config_plugin_option_string_from_top_level_plugins ... ok [INFO] [stdout] test plugins::config_parser::tests::extract_config_plugin_option_string_from_ts_config ... ok [INFO] [stdout] test plugins::config_parser::tests::extract_default_export_object_property ... ok [INFO] [stdout] test plugins::config_parser::tests::extract_config_plugin_option_string_returns_none_when_plugin_missing ... ok [INFO] [stdout] test plugins::config_parser::tests::extract_define_config_arrow_function ... ok [INFO] [stdout] test plugins::config_parser::tests::extract_imports_basic ... ok [INFO] [stdout] test plugins::config_parser::tests::extract_define_config_property ... ok [INFO] [stdout] test plugins::config_parser::tests::extract_imports_mixed_specifiers ... ok [INFO] [stdout] test plugins::config_parser::tests::extract_imports_no_imports ... ok [INFO] [stdout] test plugins::config_parser::tests::extract_imports_side_effect_import ... ok [INFO] [stdout] test plugins::config_parser::tests::extract_module_exports_property ... ok [INFO] [stdout] test plugins::config_parser::tests::extract_nested_string_array ... ok [INFO] [stdout] test plugins::config_parser::tests::handle_empty_config ... ok [INFO] [stdout] test plugins::config_parser::tests::json_file_parsed_correctly ... ok [INFO] [stdout] test plugins::config_parser::tests::json_wrapped_in_parens_nested_array ... ok [INFO] [stdout] test plugins::config_parser::tests::json_wrapped_in_parens_object_keys ... ok [INFO] [stdout] test plugins::config_parser::tests::json_wrapped_in_parens_string ... ok [INFO] [stdout] test plugins::config_parser::tests::jsonc_file_parsed_correctly ... ok [INFO] [stdout] test plugins::config_parser::tests::module_exports_nested_string ... ok [INFO] [stdout] test plugins::config_parser::tests::nested_navigation_through_non_object ... ok [INFO] [stdout] test plugins::config_parser::tests::nested_shallow_strings_missing_inner ... ok [INFO] [stdout] test plugins::config_parser::tests::nested_shallow_strings_missing_outer ... ok [INFO] [stdout] test plugins::config_parser::tests::nested_shallow_strings_tuple_format ... ok [INFO] [stdout] test plugins::config_parser::tests::nested_shallow_strings_vitest_reporters ... ok [INFO] [stdout] test plugins::config_parser::tests::nested_string_empty_path ... ok [INFO] [stdout] test plugins::config_parser::tests::nested_string_array_empty_path ... ok [INFO] [stdout] test plugins::config_parser::tests::normalize_config_path_relative_to_root ... ok [INFO] [stdout] test plugins::config_parser::tests::no_config_object_returns_empty ... ok [INFO] [stdout] test plugins::config_parser::tests::object_keys_empty_object ... ok [INFO] [stdout] test plugins::config_parser::tests::object_keys_empty_path ... ok [INFO] [stdout] test plugins::config_parser::tests::object_keys_nested_path ... ok [INFO] [stdout] test plugins::config_parser::tests::object_keys_non_object_returns_empty ... ok [INFO] [stdout] test plugins::config_parser::tests::object_keys_postcss_plugins ... ok [INFO] [stdout] test plugins::config_parser::tests::object_nested_extraction ... ok [INFO] [stdout] test plugins::config_parser::tests::property_strings_missing_key_returns_empty ... ok [INFO] [stdout] test plugins::config_parser::tests::object_nested_strings_extraction ... ok [INFO] [stdout] test plugins::config_parser::tests::property_strings_nested_objects ... ok [INFO] [stdout] test plugins::config_parser::tests::property_with_string_key ... ok [INFO] [stdout] test plugins::config_parser::tests::require_strings_array ... ok [INFO] [stdout] test plugins::config_parser::tests::require_strings_direct_call ... ok [INFO] [stdout] test plugins::config_parser::tests::require_strings_no_matching_key ... ok [INFO] [stdout] test plugins::config_parser::tests::require_strings_empty_array ... ok [INFO] [stdout] test plugins::config_parser::tests::require_strings_no_require_calls ... ok [INFO] [stdout] test plugins::config_parser::tests::require_strings_with_tuples ... ok [INFO] [stdout] test plugins::config_parser::tests::shallow_strings_missing_key ... ok [INFO] [stdout] test plugins::config_parser::tests::shallow_strings_single_string ... ok [INFO] [stdout] test plugins::config_parser::tests::shallow_strings_tuple_array ... ok [INFO] [stdout] test plugins::config_parser::tests::string_or_array_array ... ok [INFO] [stdout] test plugins::config_parser::tests::string_or_array_missing_path ... ok [INFO] [stdout] test plugins::config_parser::tests::string_or_array_nested_path ... ok [INFO] [stdout] test plugins::config_parser::tests::string_or_array_non_string_values ... ok [INFO] [stdout] test plugins::config_parser::tests::string_or_array_object_values ... ok [INFO] [stdout] test plugins::config_parser::tests::string_or_array_single_string ... ok [INFO] [stdout] test plugins::config_parser::tests::string_or_array_template_literal ... ok [INFO] [stdout] test plugins::config_parser::tests::template_literal_in_config_string ... ok [INFO] [stdout] test plugins::config_parser::tests::template_literal_in_string_or_array ... ok [INFO] [stdout] test plugins::config_parser::tests::ts_as_direct_export ... ok [INFO] [stdout] test plugins::config_parser::tests::ts_satisfies_direct_export ... ok [INFO] [stdout] test plugins::config_parser::tests::variable_reference_untyped ... ok [INFO] [stdout] test plugins::config_parser::tests::variable_reference_with_define_config ... ok [INFO] [stdout] test plugins::config_parser::tests::variable_reference_with_type_annotation ... ok [INFO] [stdout] test plugins::convex::tests::always_used_protects_auth_config ... ok [INFO] [stdout] test plugins::convex::tests::always_used_protects_generated_files ... ok [INFO] [stdout] test plugins::convex::tests::always_used_protects_http_router ... ok [INFO] [stdout] test plugins::convex::tests::always_used_protects_schema ... ok [INFO] [stdout] test plugins::convex::tests::enabled_with_convex_dep ... ok [INFO] [stdout] test plugins::convex::tests::entry_patterns_cover_convex_directory ... ok [INFO] [stdout] test plugins::convex::tests::not_enabled_without_convex_dep ... ok [INFO] [stdout] test plugins::docusaurus::tests::resolve_config_does_not_assume_sidebar_file_for_classic_docs ... ok [INFO] [stdout] test plugins::docusaurus::tests::resolve_config_limits_dynamic_rules_to_enabled_content_plugins ... ok [INFO] [stdout] test plugins::convex::tests::tooling_dependencies_include_convex ... ok [INFO] [stdout] test plugins::docusaurus::tests::resolve_config_normalizes_default_plugin_instance_ids ... ok [INFO] [stdout] test plugins::docusaurus::tests::resolve_config_respects_disabled_classic_sections ... ok [INFO] [stdout] test plugins::drizzle::tests::resolve_config_custom_out_dir ... ok [INFO] [stdout] test plugins::drizzle::tests::resolve_config_default_out_dir_not_duplicated ... ok [INFO] [stdout] test plugins::drizzle::tests::resolve_config_extracts_schema_array ... ok [INFO] [stdout] test plugins::docusaurus::tests::resolve_config_supports_async_config_creators_and_custom_roots ... ok [INFO] [stdout] test duplicates::tokenize::tests::proptests::inner::line_count_at_least_one ... ok [INFO] [stdout] test plugins::drizzle::tests::resolve_config_extracts_schema_string ... ok [INFO] [stdout] test plugins::drizzle::tests::resolve_config_module_exports ... ok [INFO] [stdout] test plugins::drizzle::tests::schema_path_directory ... ok [INFO] [stdout] test plugins::drizzle::tests::schema_path_file ... ok [INFO] [stdout] test plugins::drizzle::tests::schema_path_glob ... ok [INFO] [stdout] test plugins::drizzle::tests::schema_path_index_file_adds_directory ... ok [INFO] [stdout] test plugins::drizzle::tests::schema_path_no_prefix ... ok [INFO] [stdout] test plugins::eslint::tests::extends_already_full_config_name ... ok [INFO] [stdout] test plugins::eslint::tests::extends_builtin ... ok [INFO] [stdout] test plugins::eslint::tests::extends_plugin_rule ... ok [INFO] [stdout] test plugins::eslint::tests::extends_plugin_scoped ... ok [INFO] [stdout] test plugins::eslint::tests::extends_scoped_package ... ok [INFO] [stdout] test plugins::eslint::tests::extends_short_name ... ok [INFO] [stdout] test plugins::eslint::tests::plugin_already_full_name ... ok [INFO] [stdout] test plugins::eslint::tests::plugin_scoped_short_name ... ok [INFO] [stdout] test plugins::eslint::tests::plugin_scoped_with_subpath ... ok [INFO] [stdout] test plugins::eslint::tests::plugin_short_name ... ok [INFO] [stdout] test plugins::eslint::tests::read_package_entry_exports_field ... ok [INFO] [stdout] test plugins::eslint::tests::resolve_config_flat_config_imports ... ok [INFO] [stdout] test plugins::eslint::tests::resolve_config_json_eslintrc ... ok [INFO] [stdout] test plugins::drizzle::tests::resolve_config_extracts_schema_directory ... ok [INFO] [stdout] test plugins::drizzle::tests::resolve_config_extracts_schema_glob ... ok [INFO] [stdout] test plugins::eslint::tests::resolve_config_resolver_json ... ok [INFO] [stdout] test plugins::eslint::tests::resolve_config_resolver_flat_config ... ok [INFO] [stdout] test plugins::eslint::tests::resolve_config_legacy_eslintrc ... ok [INFO] [stdout] test plugins::eslint::tests::resolve_config_resolver_object_keys ... ok [INFO] [stdout] test plugins::eslint::tests::resolve_config_resolver_string ... ok [INFO] [stdout] test plugins::eslint::tests::resolver_already_full_name ... ok [INFO] [stdout] test plugins::eslint::tests::resolver_node_builtin ... ok [INFO] [stdout] test plugins::eslint::tests::resolver_short_name ... ok [INFO] [stdout] test plugins::eslint::tests::resolver_webpack_builtin ... ok [INFO] [stdout] test plugins::eslint::tests::shared_config_following_discovers_peer_deps ... ok [INFO] [stdout] test plugins::eslint::tests::shared_config_missing_node_modules_graceful ... ok [INFO] [stdout] test plugins::expo_router::tests::resolve_config_prefers_src_app_even_when_root_app_exists ... ok [INFO] [stdout] test plugins::expo_router::tests::resolve_config_uses_custom_route_root ... ok [INFO] [stdout] test plugins::expo_router::tests::route_rules_exclude_special_files_from_generic_exports ... ok [INFO] [stdout] test plugins::gatsby::tests::resolve_config_empty_no_plugins_property ... ok [INFO] [stdout] test plugins::gatsby::tests::resolve_config_empty_object ... ok [INFO] [stdout] test plugins::gatsby::tests::resolve_config_imports ... ok [INFO] [stdout] test plugins::gatsby::tests::resolve_config_mixed_string_and_object_plugins ... ok [INFO] [stdout] test plugins::gatsby::tests::resolve_config_no_config_object ... ok [INFO] [stdout] test plugins::gatsby::tests::resolve_config_object_plugin_with_string_literal_keys ... ok [INFO] [stdout] test plugins::gatsby::tests::resolve_config_object_plugins ... ok [INFO] [stdout] test plugins::gatsby::tests::resolve_config_plugin_object_non_resolve_properties_ignored ... ok [INFO] [stdout] test plugins::gatsby::tests::resolve_config_plugins_not_array ... ok [INFO] [stdout] test plugins::gatsby::tests::resolve_config_require_plugins ... ok [INFO] [stdout] test plugins::gatsby::tests::resolve_config_scoped_package_extraction ... ok [INFO] [stdout] test plugins::gatsby::tests::resolve_config_ts_with_typed_variable ... ok [INFO] [stdout] test plugins::gatsby::tests::resolve_config_string_plugins ... ok [INFO] [stdout] test plugins::gatsby::tests::trait_accessors ... ok [INFO] [stdout] test plugins::gatsby::tests::used_exports_covers_pages_and_templates ... ok [INFO] [stdout] test plugins::hardhat::tests::resolve_config_extracts_plugin_imports ... ok [INFO] [stdout] test plugins::hardhat::tests::resolve_config_empty ... ok [INFO] [stdout] test plugins::hardhat::tests::resolve_config_extracts_require_calls ... ok [INFO] [stdout] test plugins::hardhat::tests::resolve_config_mixed_imports_and_requires ... ok [INFO] [stdout] test plugins::jest::tests::resolve_config_json ... ok [INFO] [stdout] test plugins::jest::tests::resolve_config_json_transform_object_values ... ok [INFO] [stdout] test plugins::jest::tests::resolve_config_global_setup_teardown ... ok [INFO] [stdout] test plugins::jest::tests::resolve_config_preset ... ok [INFO] [stdout] test plugins::jest::tests::resolve_config_resolver_relative_not_added ... ok [INFO] [stdout] test plugins::jest::tests::resolve_config_resolver ... ok [INFO] [stdout] test plugins::jest::tests::resolve_config_snapshot_serializers ... ok [INFO] [stdout] test plugins::jest::tests::resolve_config_test_regex_replaces_defaults ... ok [INFO] [stdout] test plugins::jest::tests::resolve_config_test_runner_builtin ... ok [INFO] [stdout] test plugins::jest::tests::resolve_config_watch_plugins ... ok [INFO] [stdout] test plugins::jest::tests::test_regex_spec_pattern ... ok [INFO] [stdout] test plugins::jest::tests::test_regex_test_or_spec ... ok [INFO] [stdout] test plugins::jest::tests::test_regex_tsx_extension ... ok [INFO] [stdout] test plugins::jest::tests::test_regex_with_directory_prefix ... ok [INFO] [stdout] test plugins::jest::tests::test_regex_without_directory_prefix ... ok [INFO] [stdout] test plugins::nextjs::tests::always_used_includes_mdx_component_provider ... ok [INFO] [stdout] test plugins::nextjs::tests::config_patterns_match_next_config ... ok [INFO] [stdout] test plugins::nextjs::tests::enabler_is_next ... ok [INFO] [stdout] test plugins::nextjs::tests::entry_patterns_include_app_router_and_pages ... ok [INFO] [stdout] test plugins::nextjs::tests::entry_patterns_include_src_variants ... ok [INFO] [stdout] test plugins::nextjs::tests::is_enabled_with_next_dep ... ok [INFO] [stdout] test plugins::nextjs::tests::is_not_enabled_without_next ... ok [INFO] [stdout] test plugins::nextjs::tests::resolve_config_empty_source ... ok [INFO] [stdout] test plugins::nextjs::tests::resolve_config_extracts_import_deps ... ok [INFO] [stdout] test plugins::nextjs::tests::resolve_config_no_page_extensions ... ok [INFO] [stdout] test plugins::nextjs::tests::resolve_config_page_extensions ... ok [INFO] [stdout] test plugins::nextjs::tests::resolve_config_page_extensions_includes_src_variants ... ok [INFO] [stdout] test plugins::nextjs::tests::resolve_config_transpile_packages_are_referenced_dependencies ... ok [INFO] [stdout] test plugins::nextjs::tests::tooling_dependencies_include_server_client_only ... ok [INFO] [stdout] test plugins::nextjs::tests::used_exports_include_segment_config_and_special_files ... ok [INFO] [stdout] test plugins::nextjs::tests::used_exports_includes_route_http_methods ... ok [INFO] [stdout] test plugins::nuxt::tests::enabler_is_nuxt ... ok [INFO] [stdout] test plugins::nuxt::tests::entry_patterns_include_app_dir_variants ... ok [INFO] [stdout] test plugins::nuxt::tests::entry_patterns_include_nuxt_conventions ... ok [INFO] [stdout] test plugins::nuxt::tests::entry_patterns_keep_nested_plugin_index_only ... ok [INFO] [stdout] test plugins::nuxt::tests::imports_dirs_glob_can_scan_nested_files ... ok [INFO] [stdout] test plugins::nuxt::tests::is_enabled_with_nuxt_dep ... ok [INFO] [stdout] test plugins::nuxt::tests::is_enabled_with_nuxt_kit_dep ... ok [INFO] [stdout] test plugins::nuxt::tests::is_not_enabled_without_nuxt ... ok [INFO] [stdout] test plugins::nuxt::tests::module_authoring_detects_locale_and_types_dirs ... ok [INFO] [stdout] test plugins::nuxt::tests::module_authoring_no_runtime_dir_is_noop ... ok [INFO] [stdout] test plugins::nuxt::tests::module_authoring_extracts_import_deps ... ok [INFO] [stdout] test plugins::nuxt::tests::nuxt_config_not_treated_as_module ... ok [INFO] [stdout] test plugins::nuxt::tests::module_authoring_resolve_config_adds_runtime_patterns ... ok [INFO] [stdout] test plugins::nuxt::tests::resolve_config_components_dirs_supports_nested_object_entries ... ok [INFO] [stdout] test plugins::nuxt::tests::resolve_config_css_double_tilde_always_root ... ok [INFO] [stdout] test plugins::jest::tests::resolve_config_custom_runner ... ok [INFO] [stdout] test plugins::nuxt::tests::path_aliases_include_nuxt_at_variants ... ok [INFO] [stdout] test plugins::nuxt::tests::resolve_config_css_relative_path ... ok [INFO] [stdout] test plugins::nuxt::tests::resolve_config_css_npm_package ... ok [INFO] [stdout] test plugins::nuxt::tests::resolve_config_css_relative_with_nested_config ... ok [INFO] [stdout] test plugins::nuxt::tests::resolve_config_css_tilde_with_srcdir_app ... ok [INFO] [stdout] test plugins::nuxt::tests::resolve_config_empty_source ... ok [INFO] [stdout] test plugins::nuxt::tests::resolve_config_extends_as_deps ... ok [INFO] [stdout] test plugins::nuxt::tests::resolve_config_css_tilde_resolves_to_root ... ok [INFO] [stdout] test plugins::nuxt::tests::resolve_config_modules_as_deps ... ok [INFO] [stdout] test plugins::nuxt::tests::resolve_config_extracts_custom_aliases_and_dirs ... ok [INFO] [stdout] test plugins::nuxt::tests::resolve_config_import_sources_as_deps ... ok [INFO] [stdout] test plugins::nuxt::tests::resolve_config_postcss_plugins_as_deps ... ok [INFO] [stdout] test plugins::nuxt::tests::resolve_config_src_dir_overrides_default_app_aliases ... ok [INFO] [stdout] test plugins::nuxt::tests::resolve_config_src_dir_adds_custom_source_roots ... ok [INFO] [stdout] test plugins::nuxt::tests::used_exports_cover_runtime_default_exports ... ok [INFO] [stdout] test plugins::nuxt::tests::used_exports_for_server_api ... ok [INFO] [stdout] test plugins::nuxt::tests::virtual_module_prefixes_includes_hash ... ok [INFO] [stdout] test plugins::nx::tests::expand_nx_tokens_empty_project_root ... ok [INFO] [stdout] test plugins::nuxt::tests::resolve_config_plugins_supports_string_and_object_entries ... ok [INFO] [stdout] test plugins::nx::tests::expand_nx_tokens_project_root_replaced ... ok [INFO] [stdout] test plugins::nx::tests::expand_nx_tokens_no_braces_unchanged ... ok [INFO] [stdout] test plugins::nx::tests::expand_nx_tokens_workspace_root_replaced ... ok [INFO] [stdout] test plugins::nx::tests::resolve_config_empty_targets ... ok [INFO] [stdout] test plugins::nx::tests::resolve_config_expands_project_root_in_styles ... ok [INFO] [stdout] test plugins::nx::tests::resolve_config_expands_project_root_in_main ... ok [INFO] [stdout] test plugins::nx::tests::resolve_config_expands_project_root_in_tsconfig ... ok [INFO] [stdout] test duplicates::tokenize::tests::proptests::inner::all_spans_within_source_bounds ... ok [INFO] [stdout] test plugins::nx::tests::resolve_config_expands_workspace_root_token ... ok [INFO] [stdout] test plugins::nx::tests::resolve_config_expands_project_root_token_in_subproject ... ok [INFO] [stdout] test plugins::nx::tests::resolve_config_expands_project_root_token ... ok [INFO] [stdout] test plugins::nx::tests::resolve_config_extracts_executor ... ok [INFO] [stdout] test plugins::nx::tests::resolve_config_extracts_browser_as_entry ... ok [INFO] [stdout] test plugins::nx::tests::resolve_config_extracts_main ... ok [INFO] [stdout] test plugins::nx::tests::resolve_config_extracts_scripts_as_entry ... ok [INFO] [stdout] test plugins::nx::tests::resolve_config_extracts_scss_include_paths ... ok [INFO] [stdout] test plugins::nx::tests::resolve_config_extracts_styles_as_entry ... ok [INFO] [stdout] test plugins::nx::tests::resolve_config_extracts_styles_object_form ... ok [INFO] [stdout] test plugins::playwright::tests::fixture_patterns_are_set ... ok [INFO] [stdout] test plugins::playwright::tests::resolve_config_both_setup_and_teardown ... ok [INFO] [stdout] test plugins::playwright::tests::resolve_config_empty ... ok [INFO] [stdout] test plugins::playwright::tests::resolve_config_global_setup ... ok [INFO] [stdout] test plugins::nx::tests::resolve_config_extracts_tsconfig ... ok [INFO] [stdout] test plugins::playwright::tests::resolve_config_global_teardown ... ok [INFO] [stdout] test plugins::playwright::tests::resolve_config_imports ... ok [INFO] [stdout] test plugins::playwright::tests::resolve_config_setup_strips_dot_slash ... ok [INFO] [stdout] test plugins::playwright::tests::resolve_config_setup_without_dot_slash ... ok [INFO] [stdout] test plugins::pnpm::tests::always_used_includes_lockfile ... ok [INFO] [stdout] test plugins::pnpm::tests::always_used_includes_npmrc ... ok [INFO] [stdout] test plugins::pnpm::tests::always_used_includes_pnpmfile_variants ... ok [INFO] [stdout] test plugins::pnpm::tests::always_used_includes_workspace_yaml ... ok [INFO] [stdout] test plugins::pnpm::tests::is_enabled_when_pnpm_lock_yaml_exists ... ok [INFO] [stdout] test plugins::pnpm::tests::is_enabled_with_pnpm_dep ... ok [INFO] [stdout] test plugins::pnpm::tests::is_enabled_when_pnpm_workspace_yaml_exists ... ok [INFO] [stdout] test plugins::pnpm::tests::is_not_enabled_for_nonexistent_root ... ok [INFO] [stdout] test plugins::pnpm::tests::is_not_enabled_in_empty_directory ... ok [INFO] [stdout] test plugins::pnpm::tests::is_not_enabled_with_empty_deps ... ok [INFO] [stdout] test plugins::pnpm::tests::is_not_enabled_without_pnpm_dep ... ok [INFO] [stdout] test plugins::pnpm::tests::tooling_dependencies_include_pnpm ... ok [INFO] [stdout] test plugins::postcss::tests::resolve_config_object_and_require ... ok [INFO] [stdout] test plugins::postcss::tests::resolve_config_string_array_plugins ... ok [INFO] [stdout] test plugins::prettier::tests::resolve_config_empty ... ok [INFO] [stdout] test plugins::prettier::tests::resolve_config_json_plugins ... ok [INFO] [stdout] test plugins::prettier::tests::resolve_config_js_plugins ... ok [INFO] [stdout] test plugins::qwik::tests::entry_patterns_cover_all_route_conventions ... ok [INFO] [stdout] test plugins::qwik::tests::used_exports_cover_reset_layouts ... ok [INFO] [stdout] test plugins::qwik::tests::used_exports_cover_route_handlers ... ok [INFO] [stdout] test plugins::qwik::tests::enablers_cover_both_package_scopes ... ok [INFO] [stdout] test plugins::react_router::tests::resolve_config_honors_custom_app_directory ... ok [INFO] [stdout] test plugins::react_router::tests::resolve_config_reads_custom_route_file_from_disk ... ok [INFO] [stdout] test plugins::react_router::tests::resolve_config_discovers_route_modules_and_flat_routes ... ok [INFO] [stdout] test plugins::react_router::tests::used_exports_cover_root_and_route_config ... ok [INFO] [stdout] test plugins::registry::tests::active_plugin_contributes_always_used_files ... ok [INFO] [stdout] test plugins::qwik::tests::used_exports_cover_layouts ... ok [INFO] [stdout] test plugins::registry::tests::active_plugin_contributes_entry_patterns ... ok [INFO] [stdout] test plugins::registry::tests::active_plugin_contributes_config_patterns ... ok [INFO] [stdout] test plugins::registry::tests::aggregated_result_default_is_empty ... ok [INFO] [stdout] test plugins::registry::tests::active_plugin_contributes_used_exports ... ok [INFO] [stdout] test plugins::registry::tests::all_builtin_plugins_activated_by_their_enablers ... ok [INFO] [stdout] test plugins::registry::tests::active_plugin_contributes_tooling_deps ... ok [INFO] [stdout] test plugins::registry::tests::check_plugin_detection_all_empty_conditions ... ok [INFO] [stdout] test plugins::registry::tests::check_plugin_detection_all_with_all_matching ... ok [INFO] [stdout] test plugins::registry::tests::check_plugin_detection_all_with_partial_match ... ok [INFO] [stdout] test plugins::registry::tests::check_plugin_detection_any_empty_conditions ... ok [INFO] [stdout] test plugins::registry::tests::check_plugin_detection_any_with_no_matches ... ok [INFO] [stdout] test plugins::registry::tests::check_plugin_detection_any_with_single_match ... ok [INFO] [stdout] test plugins::registry::tests::check_plugin_detection_dependency_matches ... ok [INFO] [stdout] test plugins::registry::tests::check_plugin_detection_dependency_no_match ... ok [INFO] [stdout] test plugins::registry::tests::check_plugin_detection_file_exists_discovered_files ... ok [INFO] [stdout] test plugins::registry::tests::check_plugin_detection_file_exists_glob_pattern_in_discovered ... ok [INFO] [stdout] test plugins::registry::tests::check_plugin_detection_file_exists_no_discovered_match ... ok [INFO] [stdout] test plugins::registry::tests::check_plugin_detection_file_exists_wildcard_in_discovered ... ok [INFO] [stdout] test plugins::registry::tests::check_plugin_detection_nested_all_inside_any ... ok [INFO] [stdout] test plugins::registry::tests::create_builtin_plugins_all_have_non_empty_names ... ok [INFO] [stdout] test plugins::registry::tests::create_builtin_plugins_all_have_unique_names ... ok [INFO] [stdout] test plugins::registry::tests::create_builtin_plugins_contains_critical_plugins ... ok [INFO] [stdout] test plugins::registry::tests::create_builtin_plugins_returns_non_empty ... ok [INFO] [stdout] test plugins::registry::tests::css_plugins_have_correct_enablers ... ok [INFO] [stdout] test plugins::registry::tests::database_plugins_have_correct_enablers ... ok [INFO] [stdout] test plugins::registry::tests::default_registry_has_all_builtin_plugins ... ok [INFO] [stdout] test plugins::registry::tests::deployment_plugins_have_correct_enablers ... ok [INFO] [stdout] test plugins::registry::tests::dev_deps_also_trigger_plugins ... ok [INFO] [stdout] test duplicates::tokenize::tests::proptests::inner::tokenize_never_panics ... ok [INFO] [stdout] test duplicates::tokenize::tests::proptests::inner::tokenize_is_deterministic ... ok [INFO] [stdout] test plugins::registry::tests::discover_config_files_expands_root_brace_patterns ... ok [INFO] [stdout] test plugins::registry::tests::check_has_config_file_returns_false_for_plugin_without_config_patterns ... ok [INFO] [stdout] test plugins::registry::tests::docusaurus_contributes_virtual_module_prefixes ... ok [INFO] [stdout] test plugins::registry::tests::check_has_config_file_returns_true_when_file_matches ... ok [INFO] [stdout] test plugins::registry::tests::expo_router_detected_when_dependency_present ... ok [INFO] [stdout] test plugins::registry::tests::external_plugin_config_patterns_added_to_always_used ... ok [INFO] [stdout] test plugins::registry::tests::external_plugin_detected_by_enablers ... ok [INFO] [stdout] test plugins::registry::tests::external_plugin_detection_all_combinator_fails_partial ... ok [INFO] [stdout] test plugins::registry::tests::external_plugin_detection_all_combinator_succeeds ... ok [INFO] [stdout] test plugins::registry::tests::external_plugin_detection_all_dep_and_file_missing_file ... ok [INFO] [stdout] test plugins::registry::tests::external_plugin_detection_all_with_file_and_dep ... ok [INFO] [stdout] test plugins::registry::tests::external_plugin_detection_any_combinator ... ok [INFO] [stdout] test plugins::registry::tests::external_plugin_detection_dependency ... ok [INFO] [stdout] test plugins::registry::tests::external_plugin_detection_file_exists_against_discovered ... ok [INFO] [stdout] test plugins::registry::tests::external_plugin_detection_file_exists_no_match ... ok [INFO] [stdout] test plugins::registry::tests::external_plugin_detection_overrides_enablers ... ok [INFO] [stdout] test plugins::registry::tests::external_plugin_detection_overrides_enablers_positive ... ok [INFO] [stdout] test plugins::registry::tests::external_plugin_multiple_used_exports ... ok [INFO] [stdout] test plugins::registry::tests::external_plugin_nested_any_inside_all ... ok [INFO] [stdout] test plugins::registry::tests::external_plugin_not_detected_when_dep_missing ... ok [INFO] [stdout] test plugins::registry::tests::external_plugin_prefix_enabler ... ok [INFO] [stdout] test plugins::registry::tests::external_plugin_used_exports_aggregated ... ok [INFO] [stdout] test plugins::registry::tests::external_plugin_without_enablers_or_detection_stays_inactive ... ok [INFO] [stdout] test plugins::registry::tests::eslint_activates_by_config_file_existence ... ok [INFO] [stdout] test plugins::registry::tests::full_stack_project_activates_expected_plugins ... ok [INFO] [stdout] test plugins::registry::tests::inactive_plugin_does_not_contribute_entry_patterns ... ok [INFO] [stdout] test plugins::registry::tests::git_hooks_plugins_have_correct_enablers ... ok [INFO] [stdout] test plugins::registry::tests::multiple_external_plugins_independently_activated ... ok [INFO] [stdout] test plugins::registry::tests::monorepo_plugins_have_correct_enablers ... ok [INFO] [stdout] test plugins::registry::tests::nextjs_detected_when_next_in_deps ... ok [INFO] [stdout] test plugins::registry::tests::nextjs_not_detected_without_next ... ok [INFO] [stdout] test plugins::registry::tests::no_builtin_plugin_activated_by_random_dep ... ok [INFO] [stdout] test plugins::registry::tests::no_plugins_for_empty_deps ... ok [INFO] [stdout] test plugins::registry::tests::multiple_plugins_detected_simultaneously ... ok [INFO] [stdout] test plugins::registry::tests::check_has_config_file_returns_false_when_no_match ... ok [INFO] [stdout] test plugins::registry::tests::optional_deps_trigger_plugins ... ok [INFO] [stdout] test plugins::registry::tests::nuxt_contributes_virtual_module_prefixes ... ok [INFO] [stdout] test plugins::registry::tests::plugin_result_not_empty_when_any_field_set ... ok [INFO] [stdout] test plugins::registry::tests::plugin_result_is_empty_for_default ... ok [INFO] [stdout] test plugins::registry::tests::peer_deps_trigger_plugins ... ok [INFO] [stdout] test plugins::registry::tests::prefix_enabler_does_not_match_without_slash ... ok [INFO] [stdout] test plugins::registry::tests::prefix_enabler_matches_scoped_packages ... ok [INFO] [stdout] test plugins::registry::tests::process_config_result_accumulates_across_multiple_calls ... ok [INFO] [stdout] test plugins::registry::tests::process_config_result_empty_result_is_noop ... ok [INFO] [stdout] test plugins::registry::tests::process_config_result_merges_all_fields ... ok [INFO] [stdout] test plugins::registry::tests::process_config_result_path_aliases_override_existing_prefixes ... ok [INFO] [stdout] test plugins::registry::tests::process_config_result_preserves_scoped_used_class_member_rules ... ok [INFO] [stdout] test plugins::registry::tests::process_config_result_replace_entry_patterns_noop_when_empty ... ok [INFO] [stdout] test plugins::registry::tests::process_config_result_replace_entry_patterns_removes_static_defaults ... ok [INFO] [stdout] test plugins::registry::tests::process_config_result_replace_used_export_rules_noop_when_empty ... ok [INFO] [stdout] test plugins::registry::tests::process_config_result_replace_used_export_rules_removes_static_defaults ... ok [INFO] [stdout] test plugins::registry::tests::process_external_plugins_detection_dependency ... ok [INFO] [stdout] test plugins::registry::tests::process_external_plugins_detection_not_matched ... ok [INFO] [stdout] test plugins::registry::tests::process_external_plugins_empty_list ... ok [INFO] [stdout] test plugins::registry::tests::process_external_plugins_prefix_enabler_matches_scoped ... ok [INFO] [stdout] test plugins::registry::tests::process_external_plugins_prefix_enabler_requires_slash ... ok [INFO] [stdout] test plugins::registry::tests::process_static_patterns_accumulates_across_plugins ... ok [INFO] [stdout] test plugins::registry::tests::process_static_patterns_always_used_tagged_with_plugin_name ... ok [INFO] [stdout] test plugins::registry::tests::process_static_patterns_entry_patterns_tagged_with_plugin_name ... ok [INFO] [stdout] test plugins::registry::tests::process_static_patterns_populates_all_fields ... ok [INFO] [stdout] test plugins::registry::tests::process_static_patterns_with_minimal_plugin ... ok [INFO] [stdout] test plugins::registry::tests::registry_discovers_tsconfig_app_path_aliases ... ok [INFO] [stdout] test plugins::registry::tests::run_discovers_json_config_on_disk_fallback ... ok [INFO] [stdout] test plugins::registry::tests::run_with_config_file_in_discovered_files ... ok [INFO] [stdout] test plugins::registry::tests::run_with_jest_config_extracts_setup_and_transform ... ok [INFO] [stdout] test plugins::registry::tests::run_with_storybook_config_extracts_addons ... ok [INFO] [stdout] test plugins::registry::tests::discover_config_files_skips_resolved_plugins ... ok [INFO] [stdout] test plugins::registry::tests::discover_config_files_finds_in_subdirectory ... ok [INFO] [stdout] test duplicates::normalize::tests::proptests::normalization_is_deterministic ... ok [INFO] [stdout] test plugins::registry::tests::sveltekit_contributes_path_aliases ... ok [INFO] [stdout] test plugins::registry::tests::tanstack_router_detected_for_solid_start ... ok [INFO] [stdout] test plugins::registry::tests::transpiler_plugins_have_correct_enablers ... ok [INFO] [stdout] test plugins::registry::tests::vitest_activates_by_config_file_existence ... ok [INFO] [stdout] test plugins::remix::tests::used_exports_cover_root_client_data_and_layout ... ok [INFO] [stdout] test plugins::rolldown::tests::resolve_config_empty ... ok [INFO] [stdout] test plugins::rolldown::tests::resolve_config_external ... ok [INFO] [stdout] test plugins::rolldown::tests::resolve_config_imports ... ok [INFO] [stdout] test plugins::rolldown::tests::resolve_config_input_array ... ok [INFO] [stdout] test plugins::rolldown::tests::resolve_config_input_object ... ok [INFO] [stdout] test plugins::rolldown::tests::resolve_config_input_string ... ok [INFO] [stdout] test plugins::rolldown::tests::resolve_config_no_input ... ok [INFO] [stdout] test plugins::rollup::tests::resolve_config_empty ... ok [INFO] [stdout] test plugins::rollup::tests::resolve_config_external ... ok [INFO] [stdout] test plugins::rollup::tests::resolve_config_imports ... ok [INFO] [stdout] test plugins::rollup::tests::resolve_config_input_array ... ok [INFO] [stdout] test plugins::rollup::tests::resolve_config_input_object ... ok [INFO] [stdout] test plugins::rollup::tests::resolve_config_input_string ... ok [INFO] [stdout] test plugins::rollup::tests::resolve_config_no_input ... ok [INFO] [stdout] test plugins::rsbuild::tests::resolve_config_define_config ... ok [INFO] [stdout] test plugins::rsbuild::tests::resolve_config_entry_object ... ok [INFO] [stdout] test plugins::rsbuild::tests::resolve_config_entry_string ... ok [INFO] [stdout] test plugins::rsbuild::tests::resolve_config_imports ... ok [INFO] [stdout] test plugins::rspack::tests::resolve_config_entry_string ... ok [INFO] [stdout] test plugins::rspack::tests::resolve_config_imports ... ok [INFO] [stdout] test plugins::rspack::tests::resolve_config_loaders ... ok [INFO] [stdout] test plugins::semantic_release::tests::resolve_config_empty ... ok [INFO] [stdout] test plugins::semantic_release::tests::resolve_config_imports ... ok [INFO] [stdout] test plugins::semantic_release::tests::resolve_config_no_plugins ... ok [INFO] [stdout] test plugins::semantic_release::tests::resolve_config_plugins_shallow_strings ... ok [INFO] [stdout] test plugins::semantic_release::tests::resolve_config_plugins_with_options_skipped ... ok [INFO] [stdout] test plugins::semantic_release::tests::resolve_config_scoped_plugin_name ... ok [INFO] [stdout] test plugins::storybook::tests::resolve_config_addons_object_form ... ok [INFO] [stdout] test plugins::storybook::tests::resolve_config_addons_string_form ... ok [INFO] [stdout] test plugins::storybook::tests::resolve_config_core_builder ... ok [INFO] [stdout] test plugins::storybook::tests::resolve_config_react_docgen ... ok [INFO] [stdout] test plugins::storybook::tests::resolve_config_react_docgen_false_ignored ... ok [INFO] [stdout] test plugins::storybook::tests::resolve_config_typed_const_variable_reference ... ok [INFO] [stdout] test plugins::registry::tests::discover_config_files_returns_empty_for_nonexistent_root ... ok [INFO] [stdout] test plugins::sveltekit::tests::resolve_config_adapter_import ... ok [INFO] [stdout] test plugins::sveltekit::tests::generated_import_patterns_includes_types ... ok [INFO] [stdout] test plugins::sveltekit::tests::resolve_config_extracts_aliases ... ok [INFO] [stdout] test plugins::sveltekit::tests::resolve_config_preprocess_import ... ok [INFO] [stdout] test plugins::sveltekit::tests::used_exports_include_param_matchers ... ok [INFO] [stdout] test plugins::sveltekit::tests::virtual_module_prefixes_includes_sveltekit_builtins ... ok [INFO] [stdout] test plugins::tailwind::tests::resolve_config_content_globs ... ok [INFO] [stdout] test plugins::tailwind::tests::resolve_config_combined ... ok [INFO] [stdout] test plugins::tailwind::tests::resolve_config_empty ... ok [INFO] [stdout] test plugins::tailwind::tests::resolve_config_imports ... ok [INFO] [stdout] test plugins::tailwind::tests::resolve_config_plugins_string_array ... ok [INFO] [stdout] test plugins::tailwind::tests::resolve_config_plugins_require ... ok [INFO] [stdout] test plugins::tailwind::tests::resolve_config_presets ... ok [INFO] [stdout] test plugins::tailwind::tests::resolve_config_scoped_package_in_plugins ... ok [INFO] [stdout] test plugins::tanstack_router::tests::resolve_config_uses_custom_routes_directory ... ok [INFO] [stdout] test plugins::tanstack_router::tests::resolve_config_keeps_default_supporting_entries_with_custom_route_dir ... ok [INFO] [stdout] test plugins::tanstack_router::tests::route_rules_honor_route_file_prefix ... ok [INFO] [stdout] test plugins::tanstack_router::tests::route_rules_preserve_segment_ignore_regexes ... ok [INFO] [stdout] test plugins::tanstack_router::tests::used_exports_cover_lazy_routes_without_inheriting_non_lazy_exports ... ok [INFO] [stdout] test plugins::tests::all_builtin_plugin_names_are_unique ... ok [INFO] [stdout] test plugins::tests::all_builtin_plugins_have_enablers ... ok [INFO] [stdout] test plugins::tests::babel_has_package_json_config_key ... ok [INFO] [stdout] test plugins::tests::builtin_plugin_count_is_expected ... ok [INFO] [stdout] test plugins::tests::bundler_plugins_enablers ... ok [INFO] [stdout] test plugins::tests::default_always_used_is_empty ... ok [INFO] [stdout] test plugins::tests::default_config_patterns_is_empty ... ok [INFO] [stdout] test plugins::tests::default_enablers_is_empty ... ok [INFO] [stdout] test plugins::tests::default_entry_patterns_is_empty ... ok [INFO] [stdout] test plugins::tests::default_fixture_glob_patterns_is_empty ... ok [INFO] [stdout] test plugins::tests::default_is_enabled_returns_false_when_no_enablers ... ok [INFO] [stdout] test plugins::tests::default_package_json_config_key_is_none ... ok [INFO] [stdout] test plugins::tests::default_path_aliases_is_empty ... ok [INFO] [stdout] test plugins::tests::default_resolve_config_returns_empty ... ok [INFO] [stdout] test plugins::tests::default_tooling_dependencies_is_empty ... ok [INFO] [stdout] test plugins::tests::default_used_exports_is_empty ... ok [INFO] [stdout] test plugins::tests::default_virtual_module_prefixes_is_empty ... ok [INFO] [stdout] test plugins::tests::entry_point_role_defaults_are_centralized ... ok [INFO] [stdout] test plugins::tests::eslint_has_package_json_config_key ... ok [INFO] [stdout] test plugins::tests::framework_plugins_enablers ... ok [INFO] [stdout] test plugins::tests::framework_plugins_have_entry_patterns ... ok [INFO] [stdout] test plugins::tests::is_enabled_with_deps_empty_deps ... ok [INFO] [stdout] test plugins::tests::is_enabled_with_deps_exact_and_prefix_both_work ... ok [INFO] [stdout] test plugins::tests::is_enabled_with_deps_exact_match ... ok [INFO] [stdout] test plugins::tests::is_enabled_with_deps_multiple_enablers ... ok [INFO] [stdout] test plugins::tests::is_enabled_with_deps_multiple_enablers_remix ... ok [INFO] [stdout] test plugins::tests::is_enabled_with_deps_no_match ... ok [INFO] [stdout] test plugins::tests::is_enabled_with_deps_prefix_match ... ok [INFO] [stdout] test plugins::tests::is_enabled_with_deps_prefix_no_match_without_slash ... ok [INFO] [stdout] test plugins::tests::jest_has_package_json_config_key ... ok [INFO] [stdout] test plugins::tests::macro_generated_plugin_basic_properties ... ok [INFO] [stdout] test plugins::tests::macro_generated_plugin_imports_only_resolve_config ... ok [INFO] [stdout] test plugins::tests::macro_generated_plugin_with_used_exports ... ok [INFO] [stdout] test plugins::tests::nextjs_has_used_exports_for_pages ... ok [INFO] [stdout] test plugins::tests::nuxt_has_hash_virtual_prefix ... ok [INFO] [stdout] test plugins::tests::nuxt_has_tilde_path_alias ... ok [INFO] [stdout] test plugins::tests::plugin_default_methods_return_empty ... ok [INFO] [stdout] test plugins::tests::plugin_resolve_config_default_returns_empty ... ok [INFO] [stdout] test plugins::tests::plugin_result_is_empty_when_default ... ok [INFO] [stdout] test plugins::tests::plugin_result_not_empty_with_always_used_files ... ok [INFO] [stdout] test plugins::tests::plugin_result_not_empty_with_entry_patterns ... ok [INFO] [stdout] test plugins::tests::plugin_result_not_empty_with_fixture_patterns ... ok [INFO] [stdout] test plugins::tests::plugin_result_not_empty_with_referenced_deps ... ok [INFO] [stdout] test plugins::tests::plugin_result_not_empty_with_setup_files ... ok [INFO] [stdout] test plugins::tests::plugin_tooling_deps_include_enabler_package ... ok [INFO] [stdout] test plugins::tests::plugins_with_config_patterns_have_always_used ... ok [INFO] [stdout] test plugins::tests::plugins_with_entry_patterns_have_explicit_role_intent ... ok [INFO] [stdout] test plugins::tests::plugins_with_resolve_config_have_config_patterns ... ok [INFO] [stdout] test plugins::tests::prettier_has_package_json_config_key ... ok [INFO] [stdout] test plugins::tests::remix_has_used_exports_for_routes ... ok [INFO] [stdout] test plugins::tests::sveltekit_has_dollar_virtual_prefixes ... ok [INFO] [stdout] test plugins::tests::sveltekit_has_lib_path_alias ... ok [INFO] [stdout] test plugins::tests::sveltekit_has_used_exports_for_routes ... ok [INFO] [stdout] test plugins::tests::test_plugins_have_test_entry_patterns ... ok [INFO] [stdout] test plugins::tests::testing_plugins_enablers ... ok [INFO] [stdout] test plugins::tooling::tests::babel_not_blanket_matched ... ok [INFO] [stdout] test plugins::tooling::tests::biomejs_prefix_matches ... ok [INFO] [stdout] test plugins::tooling::tests::changesets_prefix_matches ... ok [INFO] [stdout] test plugins::tooling::tests::common_runtime_deps_not_tooling ... ok [INFO] [stdout] test plugins::tooling::tests::electron_forge_prefix_matches ... ok [INFO] [stdout] test plugins::tooling::tests::electron_prefix_matches ... ok [INFO] [stdout] test plugins::tooling::tests::empty_string_not_tooling ... ok [INFO] [stdout] test plugins::tooling::tests::eslint_not_blanket_matched ... ok [INFO] [stdout] test plugins::tooling::tests::exact_electron_matches ... ok [INFO] [stdout] test plugins::tooling::tests::exact_esbuild_matches ... ok [INFO] [stdout] test plugins::tooling::tests::exact_jest_matches ... ok [INFO] [stdout] test plugins::tooling::tests::exact_madge_matches ... ok [INFO] [stdout] test plugins::tooling::tests::exact_manypkg_cli_matches ... ok [INFO] [stdout] test plugins::tooling::tests::exact_nx_matches ... ok [INFO] [stdout] test plugins::tooling::tests::exact_oxc_transform_matches ... ok [INFO] [stdout] test plugins::tooling::tests::exact_patch_package_matches ... ok [INFO] [stdout] test plugins::tooling::tests::exact_prettier_matches ... ok [INFO] [stdout] test plugins::tooling::tests::exact_puppeteer_matches ... ok [INFO] [stdout] test plugins::tooling::tests::exact_rolldown_matches ... ok [INFO] [stdout] test plugins::tooling::tests::exact_sharp_matches ... ok [INFO] [stdout] test plugins::tooling::tests::exact_swc_variants_match ... ok [INFO] [stdout] test plugins::tooling::tests::exact_tsconfig_packages_match ... ok [INFO] [stdout] test plugins::tooling::tests::exact_tsup_matches ... ok [INFO] [stdout] test plugins::tooling::tests::exact_turbo_matches ... ok [INFO] [stdout] test plugins::tooling::tests::exact_tap_matches ... ok [INFO] [stdout] test plugins::tooling::tests::exact_tw_animate_css_matches ... ok [INFO] [stdout] test plugins::tooling::tests::exact_typescript_native_preview_matches ... ok [INFO] [stdout] test plugins::tooling::tests::exact_vite_matches ... ok [INFO] [stdout] test plugins::tooling::tests::exact_vitejs_plugins_match ... ok [INFO] [stdout] test plugins::tooling::tests::exact_typescript_matches ... ok [INFO] [stdout] test plugins::tooling::tests::exact_vitest_matches ... ok [INFO] [stdout] test plugins::tooling::tests::exact_vue_tsc_matches ... ok [INFO] [stdout] test plugins::tooling::tests::formatjs_prefix_matches ... ok [INFO] [stdout] test plugins::tooling::tests::graphql_codegen_prefix_matches ... ok [INFO] [stdout] test plugins::tooling::tests::lerna_lite_prefix_matches ... ok [INFO] [stdout] test plugins::tooling::tests::jest_prefix_matches ... ok [INFO] [stdout] test plugins::tooling::tests::near_miss_not_tooling ... ok [INFO] [stdout] test plugins::tooling::tests::oxlint_prefix_matches ... ok [INFO] [stdout] test plugins::tooling::tests::playwright_prefix_matches ... ok [INFO] [stdout] test plugins::tooling::tests::postcss_not_blanket_matched ... ok [INFO] [stdout] test plugins::tooling::tests::prettier_plugins_are_tooling ... ok [INFO] [stdout] test plugins::tooling::tests::react_native_community_prefix_matches ... ok [INFO] [stdout] test plugins::tooling::tests::react_native_prefix_matches ... ok [INFO] [stdout] test plugins::tooling::tests::release_it_prefix_matches ... ok [INFO] [stdout] test plugins::tooling::tests::rollup_not_blanket_matched ... ok [INFO] [stdout] test plugins::tooling::tests::runtime_deps_with_similar_names_not_tooling ... ok [INFO] [stdout] test plugins::tooling::tests::sass_variants_are_tooling ... ok [INFO] [stdout] test plugins::tooling::tests::semantic_release_prefix_matches ... ok [INFO] [stdout] test plugins::tooling::tests::storybook_not_blanket_matched ... ok [INFO] [stdout] test plugins::tooling::tests::tapjs_prefix_matches ... ok [INFO] [stdout] test plugins::tooling::tests::testing_library_prefix_matches ... ok [INFO] [stdout] test plugins::tooling::tests::tooling_exact_set_is_deterministic ... ok [INFO] [stdout] test plugins::tooling::tests::secretlint_prefix_matches ... ok [INFO] [stdout] test plugins::tooling::tests::types_prefix_does_not_match_similar_names ... ok [INFO] [stdout] test plugins::tooling::tests::types_prefix_matches_scoped ... ok [INFO] [stdout] test plugins::tsdown::tests::resolve_config_define_config ... ok [INFO] [stdout] test plugins::registry::tests::run_workspace_fast_detects_active_plugins ... ok [INFO] [stdout] test plugins::tooling::tests::vitest_prefix_matches ... ok [INFO] [stdout] test plugins::tsdown::tests::resolve_config_empty ... ok [INFO] [stdout] test plugins::tsdown::tests::resolve_config_entry_array ... ok [INFO] [stdout] test plugins::tsdown::tests::resolve_config_entry_single ... ok [INFO] [stdout] test plugins::tsdown::tests::resolve_config_imports ... ok [INFO] [stdout] test plugins::tsdown::tests::resolve_config_no_entry ... ok [INFO] [stdout] test plugins::tsup::tests::resolve_config_define_config ... ok [INFO] [stdout] test plugins::tsup::tests::resolve_config_empty ... ok [INFO] [stdout] test plugins::tsup::tests::resolve_config_entry_array ... ok [INFO] [stdout] test plugins::tsup::tests::resolve_config_entry_single ... ok [INFO] [stdout] test plugins::tsup::tests::resolve_config_imports ... ok [INFO] [stdout] test plugins::tsup::tests::resolve_config_no_entry ... ok [INFO] [stdout] test plugins::typescript::tests::resolve_config_extends_array ... ok [INFO] [stdout] test plugins::typescript::tests::resolve_config_compiler_options_types ... ok [INFO] [stdout] test plugins::typescript::tests::resolve_config_extends_relative_path ... ok [INFO] [stdout] test plugins::typescript::tests::resolve_config_compiler_options_plugins ... ok [INFO] [stdout] test plugins::typescript::tests::resolve_config_extends_package ... ok [INFO] [stdout] test plugins::typescript::tests::resolve_config_extracts_path_aliases_from_paths ... ok [INFO] [stdout] test plugins::typescript::tests::resolve_config_jsx_import_source ... ok [INFO] [stdout] test plugins::typescript::tests::resolve_config_references_accept_direct_tsconfig_files ... ok [INFO] [stdout] test plugins::unocss::tests::resolve_config_empty ... ok [INFO] [stdout] test plugins::typescript::tests::resolve_config_with_comments_and_trailing_commas ... ok [INFO] [stdout] test plugins::typescript::tests::resolve_config_references ... ok [INFO] [stdout] test plugins::unocss::tests::resolve_config_extracts_preset_imports ... ok [INFO] [stdout] test plugins::unocss::tests::resolve_config_extracts_transformer_imports ... ok [INFO] [stdout] test plugins::vite::tests::resolve_config_optimize_deps_exclude ... ok [INFO] [stdout] test plugins::vitepress::tests::supports_docs_scaffold_layout_and_theme_entry_exports ... ok [INFO] [stdout] test plugins::vite::tests::resolve_config_extracts_aliases ... ok [INFO] [stdout] test plugins::vitest::tests::browser_provider_playwright ... ok [INFO] [stdout] test plugins::vitest::tests::browser_provider_preview_builtin ... ok [INFO] [stdout] test plugins::vite::tests::resolve_config_ssr_external ... ok [INFO] [stdout] test plugins::vitest::tests::coverage_provider_builtin_filtered ... ok [INFO] [stdout] test plugins::vitest::tests::custom_environment ... ok [INFO] [stdout] test plugins::vitest::tests::coverage_provider_istanbul_builtin ... ok [INFO] [stdout] test plugins::vitest::tests::project_level_include_does_not_replace_defaults ... ok [INFO] [stdout] test plugins::vitest::tests::reporters_builtin_filtered ... ok [INFO] [stdout] test plugins::vitest::tests::no_test_include_keeps_defaults ... ok [INFO] [stdout] test plugins::vitest::tests::coverage_provider_custom ... ok [INFO] [stdout] test plugins::vitest::tests::reporters_missing_does_not_error ... ok [INFO] [stdout] test plugins::vitest::tests::reporters_scoped_package ... ok [INFO] [stdout] test plugins::vitest::tests::reporters_string_array ... ok [INFO] [stdout] test plugins::vitest::tests::reporters_tuple_format ... ok [INFO] [stdout] test plugins::vitest::tests::test_include_sets_replace_entry_patterns ... ok [INFO] [stdout] test plugins::vitest::tests::typecheck_checker_tsc_builtin ... ok [INFO] [stdout] test plugins::vitest::tests::typecheck_checker_vue_tsc ... ok [INFO] [stdout] test plugins::webpack::tests::resolve_config_externals ... ok [INFO] [stdout] test plugins::webpack::tests::resolve_config_one_of_loaders ... ok [INFO] [stdout] test results::tests::empty_results_no_issues ... ok [INFO] [stdout] test results::tests::results_total_counts_all_types ... ok [INFO] [stdout] test results::tests::results_with_unused_export ... ok [INFO] [stdout] test results::tests::results_with_unused_file ... ok [INFO] [stdout] test scripts::ci::tests::builtin_commands_not_extracted ... ok [INFO] [stdout] test scripts::ci::tests::comments_and_empty_lines_skipped ... ok [INFO] [stdout] test scripts::ci::tests::github_actions_inline_run ... ok [INFO] [stdout] test scripts::ci::tests::github_actions_multiline_run ... ok [INFO] [stdout] test scripts::ci::tests::github_actions_npx_extracted ... ok [INFO] [stdout] test scripts::ci::tests::gitlab_ci_script_items ... ok [INFO] [stdout] test scripts::ci::tests::is_yaml_mapping_basic ... ok [INFO] [stdout] test plugins::webpack::tests::resolve_config_entry_string ... ok [INFO] [stdout] test scripts::ci::tests::multiple_binaries_extracted ... ok [INFO] [stdout] test scripts::ci::tests::npx_package_extracted ... ok [INFO] [stdout] test scripts::ci::tests::strip_yaml_key_basic ... ok [INFO] [stdout] test scripts::ci::tests::yaml_mappings_filtered ... ok [INFO] [stdout] test plugins::registry::tests::precompile_config_matchers_covers_plugins_with_configs ... ok [INFO] [stdout] test scripts::resolve::tests::bin_map_attw_scenario ... ok [INFO] [stdout] test scripts::resolve::tests::bin_map_missing_node_modules ... ok [INFO] [stdout] test scripts::resolve::tests::bin_map_does_not_override_static_table ... ok [INFO] [stdout] test plugins::webpack::tests::resolve_config_loaders ... ok [INFO] [stdout] test scripts::resolve::tests::bin_map_resolves_divergent_binary ... ok [INFO] [stdout] test scripts::resolve::tests::bin_map_scoped_package_string_bin ... ok [INFO] [stdout] test scripts::resolve::tests::bin_map_object_form ... ok [INFO] [stdout] test scripts::resolve::tests::bin_map_string_form_scoped ... ok [INFO] [stdout] test scripts::resolve::tests::bin_map_string_form_unscoped ... ok [INFO] [stdout] test scripts::resolve::tests::bin_path_deeply_nested ... ok [INFO] [stdout] test scripts::resolve::tests::bin_path_no_parent_dots ... ok [INFO] [stdout] test scripts::resolve::tests::bin_path_only_dots ... ok [INFO] [stdout] test scripts::resolve::tests::bin_path_scoped_package ... ok [INFO] [stdout] test scripts::resolve::tests::bin_path_scoped_with_multiple_parents ... ok [INFO] [stdout] test scripts::resolve::tests::bin_path_simple_package ... ok [INFO] [stdout] test scripts::resolve::tests::eslint_identity_without_symlink ... ok [INFO] [stdout] test scripts::resolve::tests::bin_map_no_bin_field ... ok [INFO] [stdout] test scripts::resolve::tests::jest_identity_without_symlink ... ok [INFO] [stdout] test scripts::resolve::tests::oxlint_maps_to_oxlint ... ok [INFO] [stdout] test scripts::resolve::tests::nuxi_maps_to_nuxt ... ok [INFO] [stdout] test scripts::resolve::tests::run_p2_maps_to_npm_run_all2 ... ok [INFO] [stdout] test scripts::resolve::tests::run_p_maps_to_npm_run_all ... ok [INFO] [stdout] test scripts::resolve::tests::run_s2_maps_to_npm_run_all2 ... ok [INFO] [stdout] test scripts::resolve::tests::tsserver_maps_to_typescript ... ok [INFO] [stdout] test scripts::resolve::tests::unknown_binary_returns_identity ... ok [INFO] [stdout] test scripts::shell::tests::advance_bare_npm_returns_none ... ok [INFO] [stdout] test scripts::shell::tests::advance_bare_yarn_returns_none ... ok [INFO] [stdout] test scripts::shell::tests::advance_bun_exec ... ok [INFO] [stdout] test scripts::shell::tests::advance_bun_run_returns_none ... ok [INFO] [stdout] test scripts::shell::tests::advance_bunx_simple ... ok [INFO] [stdout] test scripts::shell::tests::advance_no_package_manager ... ok [INFO] [stdout] test scripts::shell::tests::advance_npm_run_returns_none ... ok [INFO] [stdout] test scripts::shell::tests::advance_npm_run_script_returns_none ... ok [INFO] [stdout] test scripts::shell::tests::advance_npx_simple ... ok [INFO] [stdout] test scripts::shell::tests::advance_npx_with_flags ... ok [INFO] [stdout] test scripts::shell::tests::advance_npx_with_only_flags ... ok [INFO] [stdout] test scripts::shell::tests::advance_pnpm_dlx ... ok [INFO] [stdout] test scripts::shell::tests::advance_pnpm_exec ... ok [INFO] [stdout] test scripts::shell::tests::advance_pnpx_simple ... ok [INFO] [stdout] test scripts::shell::tests::advance_yarn_bare_returns_none ... ok [INFO] [stdout] test scripts::shell::tests::advance_yarn_exec ... ok [INFO] [stdout] test scripts::shell::tests::operator_len_ampersand_at_end_of_slice ... ok [INFO] [stdout] test scripts::shell::tests::operator_len_double_ampersand ... ok [INFO] [stdout] test scripts::shell::tests::operator_len_double_pipe ... ok [INFO] [stdout] test scripts::resolve::tests::sb_maps_to_storybook ... ok [INFO] [stdout] test scripts::shell::tests::operator_len_non_operator ... ok [INFO] [stdout] test scripts::shell::tests::operator_len_pipe_at_end_of_slice ... ok [INFO] [stdout] test scripts::shell::tests::operator_len_semicolon ... ok [INFO] [stdout] test scripts::shell::tests::operator_len_semicolon_at_end ... ok [INFO] [stdout] test scripts::shell::tests::operator_len_single_ampersand ... ok [INFO] [stdout] test scripts::shell::tests::operator_len_single_pipe ... ok [INFO] [stdout] test scripts::shell::tests::skip_wrappers_cross_env_only ... ok [INFO] [stdout] test scripts::shell::tests::skip_wrappers_cross_env_prefix ... ok [INFO] [stdout] test scripts::shell::tests::skip_wrappers_dotenv_with_separator ... ok [INFO] [stdout] test scripts::shell::tests::skip_wrappers_env_prefix ... ok [INFO] [stdout] test scripts::shell::tests::skip_wrappers_env_var_only ... ok [INFO] [stdout] test scripts::shell::tests::skip_wrappers_no_wrappers ... ok [INFO] [stdout] test scripts::shell::tests::skip_wrappers_multiple_env_vars_then_binary ... ok [INFO] [stdout] test scripts::shell::tests::skip_wrappers_starting_at_nonzero_index ... ok [INFO] [stdout] test scripts::shell::tests::split_double_quoted_operators_preserved ... ok [INFO] [stdout] test scripts::shell::tests::split_empty_input ... ok [INFO] [stdout] test scripts::shell::tests::split_mixed_operators ... ok [INFO] [stdout] test scripts::shell::tests::split_nested_double_in_single_quotes ... ok [INFO] [stdout] test scripts::shell::tests::split_nested_single_in_double_quotes ... ok [INFO] [stdout] test scripts::shell::tests::split_no_operators ... ok [INFO] [stdout] test scripts::shell::tests::split_only_operators ... ok [INFO] [stdout] test scripts::shell::tests::split_single_quoted_operators_preserved ... ok [INFO] [stdout] test scripts::shell::tests::split_trailing_operator ... ok [INFO] [stdout] test scripts::tests::analyze_cross_env_with_config ... ok [INFO] [stdout] test scripts::tests::analyze_extracts_binaries ... ok [INFO] [stdout] test scripts::tests::analyze_extracts_config_files ... ok [INFO] [stdout] test scripts::tests::analyze_extracts_entry_files ... ok [INFO] [stdout] test scripts::tests::analyze_scripts_empty_scripts ... ok [INFO] [stdout] test scripts::tests::background_operator_splits_commands ... ok [INFO] [stdout] test scripts::tests::background_with_env_vars ... ok [INFO] [stdout] test scripts::tests::bare_yarn_skipped ... ok [INFO] [stdout] test scripts::tests::analyze_complex_script ... ok [INFO] [stdout] test scripts::tests::bin_path_regular_package ... ok [INFO] [stdout] test scripts::tests::bin_path_scoped_package ... ok [INFO] [stdout] test scripts::tests::binary_with_args ... ok [INFO] [stdout] test scripts::tests::biome_maps_to_biomejs ... ok [INFO] [stdout] test scripts::tests::builtin_commands_not_tracked ... ok [INFO] [stdout] test scripts::tests::bun_exec_extracts_binary ... ok [INFO] [stdout] test scripts::tests::bun_treated_as_package_manager ... ok [INFO] [stdout] test scripts::tests::chained_commands ... ok [INFO] [stdout] test scripts::tests::concurrently_unquoted_npm_prefix ... ok [INFO] [stdout] test scripts::tests::concurrently_with_flags_before_args ... ok [INFO] [stdout] test scripts::tests::concurrently_with_npm_prefix ... ok [INFO] [stdout] test scripts::tests::config_short_flag ... ok [INFO] [stdout] test scripts::tests::config_space ... ok [INFO] [stdout] test scripts::tests::cross_env_prefix ... ok [INFO] [stdout] test scripts::tests::dotenv_prefix ... ok [INFO] [stdout] test scripts::tests::double_ampersand_still_works ... ok [INFO] [stdout] test scripts::tests::env_assignment_empty_value ... ok [INFO] [stdout] test scripts::tests::env_assignment_equals_at_start_is_not_assignment ... ok [INFO] [stdout] test scripts::tests::env_assignment_invalid ... ok [INFO] [stdout] test scripts::tests::env_assignment_valid ... ok [INFO] [stdout] test scripts::tests::env_var_assignment_prefix ... ok [INFO] [stdout] test scripts::tests::extract_config_arg_empty_equals_returns_none ... ok [INFO] [stdout] test scripts::tests::extract_config_arg_next_is_flag_returns_none ... ok [INFO] [stdout] test scripts::tests::extract_config_arg_no_match ... ok [INFO] [stdout] test scripts::tests::extract_config_arg_short_with_equals ... ok [INFO] [stdout] test scripts::tests::extract_config_arg_short_with_next_token ... ok [INFO] [stdout] test scripts::tests::extract_config_arg_with_equals ... ok [INFO] [stdout] test scripts::tests::extract_config_arg_with_next_token ... ok [INFO] [stdout] test scripts::tests::filter_keeps_production_scripts ... ok [INFO] [stdout] test scripts::tests::looks_like_file_path_bare_word_not_file ... ok [INFO] [stdout] test scripts::tests::looks_like_file_path_url_not_file ... ok [INFO] [stdout] test scripts::tests::looks_like_file_path_with_known_extensions ... ok [INFO] [stdout] test scripts::tests::config_equals ... ok [INFO] [stdout] test scripts::tests::looks_like_file_path_with_relative_prefix ... ok [INFO] [stdout] test scripts::tests::looks_like_file_path_with_slash_but_not_scope ... ok [INFO] [stdout] test scripts::tests::mixed_operators_all_binaries_detected ... ok [INFO] [stdout] test scripts::tests::multiple_background_operators ... ok [INFO] [stdout] test scripts::tests::multiple_env_vars ... ok [INFO] [stdout] test scripts::tests::ng_maps_to_angular_cli ... ok [INFO] [stdout] test scripts::tests::node_eval_no_file ... ok [INFO] [stdout] test scripts::tests::node_eval_skips_next_arg ... ok [INFO] [stdout] test scripts::tests::node_multiple_files ... ok [INFO] [stdout] test scripts::tests::node_require_flag_skips_next_arg ... ok [INFO] [stdout] test scripts::tests::node_with_flags ... ok [INFO] [stdout] test scripts::tests::non_production_scripts ... ok [INFO] [stdout] test scripts::tests::npm_run_all_with_script_names ... ok [INFO] [stdout] test scripts::tests::npx_prefix ... ok [INFO] [stdout] test scripts::tests::npx_with_flags ... ok [INFO] [stdout] test scripts::tests::node_runner_file_args ... ok [INFO] [stdout] test scripts::tests::npm_run_skipped ... ok [INFO] [stdout] test scripts::tests::parse_empty_script ... ok [INFO] [stdout] test scripts::tests::or_chain ... ok [INFO] [stdout] test scripts::tests::pipe_operator ... ok [INFO] [stdout] test scripts::tests::pnpm_dlx ... ok [INFO] [stdout] test scripts::tests::pnpm_exec ... ok [INFO] [stdout] test scripts::tests::pnpx_prefix ... ok [INFO] [stdout] test scripts::tests::parse_whitespace_only_script ... ok [INFO] [stdout] test scripts::tests::production_script_build ... ok [INFO] [stdout] test scripts::tests::production_script_namespaced ... ok [INFO] [stdout] test scripts::tests::production_script_postinstall ... ok [INFO] [stdout] test scripts::tests::production_script_preinstall ... ok [INFO] [stdout] test scripts::tests::production_script_prepublish_only ... ok [INFO] [stdout] test scripts::tests::production_script_preserve_is_not_production ... ok [INFO] [stdout] test scripts::tests::production_script_serve_preview ... ok [INFO] [stdout] test scripts::tests::production_script_start ... ok [INFO] [stdout] test scripts::resolve::tests::bin_map_workspace_fallback ... ok [INFO] [stdout] test plugins::registry::tests::precompile_config_matchers_all_have_non_empty_matchers ... ok [INFO] [stdout] test plugins::registry::tests::run_workspace_fast_filters_matchers_to_active_plugins ... ok [INFO] [stdout] test scripts::tests::proptests::chained_binaries_produce_multiple_commands ... ok [INFO] [stdout] test plugins::registry::tests::run_workspace_fast_returns_empty_for_no_active_plugins ... ok [INFO] [stdout] test scripts::tests::run_p_with_bare_script_names ... ok [INFO] [stdout] test scripts::tests::run_p_with_npm_prefix ... ok [INFO] [stdout] test scripts::tests::run_s_maps_to_npm_run_all ... ok [INFO] [stdout] test scripts::tests::run_s_with_bare_script_names ... ok [INFO] [stdout] test scripts::tests::semicolon_separator ... ok [INFO] [stdout] test scripts::tests::simple_binary ... ok [INFO] [stdout] test scripts::tests::proptests::is_env_assignment_no_panic ... ok [INFO] [stdout] test scripts::tests::split_double_quotes ... ok [INFO] [stdout] test scripts::tests::split_respects_quotes ... ok [INFO] [stdout] test scripts::tests::trailing_background_operator ... ok [INFO] [stdout] test scripts::tests::tsc_maps_to_typescript ... ok [INFO] [stdout] test scripts::tests::tsx_runner_file_args ... ok [INFO] [stdout] test scripts::tests::unknown_binary_is_identity ... ok [INFO] [stdout] test scripts::tests::yarn_exec ... ok [INFO] [stdout] test scripts::tests::yarn_run_skipped ... ok [INFO] [stdout] test suppress::tests::all_issue_kinds_classified_for_stale_detection ... ok [INFO] [stdout] test suppress::tests::discriminant_roundtrip ... ok [INFO] [stdout] test suppress::tests::is_file_suppressed_blanket_suppresses_all_kinds ... ok [INFO] [stdout] test suppress::tests::is_file_suppressed_empty_list ... ok [INFO] [stdout] test suppress::tests::is_file_suppressed_works ... ok [INFO] [stdout] test suppress::tests::is_suppressed_empty ... ok [INFO] [stdout] test suppress::tests::is_suppressed_file_wide ... ok [INFO] [stdout] test suppress::tests::is_suppressed_file_wide_blanket_and_specific_coexist ... ok [INFO] [stdout] test suppress::tests::is_suppressed_line_and_kind ... ok [INFO] [stdout] test suppress::tests::is_suppressed_file_wide_specific_kind ... ok [INFO] [stdout] test suppress::tests::is_suppressed_line_specific ... ok [INFO] [stdout] test suppress::tests::is_suppressed_multiple_suppressions_different_kinds ... ok [INFO] [stdout] test suppress::tests::issue_kind_from_str_all_variants ... ok [INFO] [stdout] test suppress::tests::issue_kind_from_str_unknown ... ok [INFO] [stdout] test suppress::tests::parse_block_comment_suppression ... ok [INFO] [stdout] test suppress::tests::parse_circular_dependency_suppression ... ok [INFO] [stdout] test suppress::tests::parse_code_duplication_suppression ... ok [INFO] [stdout] test suppress::tests::parse_file_wide_suppression ... ok [INFO] [stdout] test suppress::tests::parse_file_wide_suppression_with_kind ... ok [INFO] [stdout] test suppress::tests::parse_next_line_suppression ... ok [INFO] [stdout] test suppress::tests::parse_next_line_suppression_with_kind ... ok [INFO] [stdout] test suppress::tests::parse_oxc_comments ... ok [INFO] [stdout] test suppress::tests::parse_unknown_kind_ignored ... ok [INFO] [stdout] test tests::undeclared_workspace_warning_is_singular_for_one_path ... ok [INFO] [stdout] test tests::undeclared_workspace_warning_summarizes_many_paths ... ok [INFO] [stdout] test trace::tests::trace_clone_finds_matching_group ... ok [INFO] [stdout] test trace::tests::trace_clone_line_boundary ... ok [INFO] [stdout] test trace::tests::trace_clone_no_match ... ok [INFO] [stdout] test trace::tests::trace_dependency_unused ... ok [INFO] [stdout] test trace::tests::trace_dependency_used ... ok [INFO] [stdout] test trace::tests::trace_file_edges ... ok [INFO] [stdout] test trace::tests::trace_file_imported_by ... ok [INFO] [stdout] test suppress::tests::parse_multiple_next_line_suppressions ... ok [INFO] [stdout] test trace::tests::trace_nonexistent_file ... ok [INFO] [stdout] test trace::tests::trace_nonexistent_export ... ok [INFO] [stdout] test trace::tests::trace_unreachable_file ... ok [INFO] [stdout] test trace::tests::trace_unreachable_file_export ... ok [INFO] [stdout] test trace::tests::trace_unused_export ... ok [INFO] [stdout] test trace::tests::trace_used_export ... ok [INFO] [stdout] test scripts::tests::proptests::analyze_scripts_no_panic ... ok [INFO] [stdout] test scripts::tests::proptests::parsed_binaries_are_non_empty ... ok [INFO] [stdout] test scripts::tests::proptests::resolve_binary_always_non_empty ... ok [INFO] [stdout] test scripts::tests::proptests::split_shell_operators_no_panic ... ok [INFO] [stdout] test scripts::tests::proptests::parse_script_no_panic ... ok [INFO] [stdout] test duplicates::normalize::tests::proptests::output_length_matches_input ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1821 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.06s [INFO] [stdout] [INFO] [stderr] Running tests/dupes_profile.rs (/opt/rustwide/target/debug/deps/dupes_profile-c51f7475b0607da2) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test profile_dupe_detection ... ok [INFO] [stderr] Running tests/dupes_stress_test.rs (/opt/rustwide/target/debug/deps/dupes_stress_test-c23a81a1ac2dd992) [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.98s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 14 tests [INFO] [stdout] test min_tokens_threshold_filters_small_clones ... ok [INFO] [stdout] test duplication_percentage_computation ... ok [INFO] [stdout] test empty_files_mixed_with_normal_files_do_not_crash ... ok [INFO] [stdout] test five_identical_files_single_group_five_instances ... ok [INFO] [stdout] test completely_different_files_produce_zero_groups ... ok [INFO] [stdout] test single_file_internal_repetition ... ok [INFO] [stdout] test partial_overlap_detects_shared_region ... ok [INFO] [stdout] test skip_local_filters_same_directory_keeps_cross_directory ... ok [INFO] [stdout] test three_identical_files_single_group_three_instances ... ok [INFO] [stdout] test many_small_files_with_some_duplicates ... ok [INFO] [stdout] test duplication_report_serializes_to_valid_json ... ok [INFO] [stdout] test two_identical_large_files_single_group_no_quadratic_blowup ... ok [INFO] [stdout] test all_identical_tokens_does_not_hang ... ok [INFO] [stdout] test semantic_mode_detects_type2_clones ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s [INFO] [stdout] [INFO] [stderr] Running tests/integration_test.rs (/opt/rustwide/target/debug/deps/integration_test-37bb600618a0a6d8) [INFO] [stdout] [INFO] [stdout] running 237 tests [INFO] [stdout] test arrow_wrapped_imports::arrow_wrapped_lazy_imports_credit_default_exports ... ok [INFO] [stdout] test barrel_exports::alias_chain_unused_detected ... ok [INFO] [stdout] test barrel_exports::alias_chain_used_exports_propagate ... ok [INFO] [stdout] test barrel_exports::barrel_exports_detects_unused_re_export_bar ... ok [INFO] [stdout] test barrel_exports::barrel_default_reexport_unused_detected ... ok [INFO] [stdout] test arrow_wrapped_imports::arrow_wrapped_lazy_imports_make_modules_reachable ... ok [INFO] [stdout] test barrel_exports::barrel_default_reexport_no_unused_files ... ok [INFO] [stdout] test barrel_exports::barrel_exports_resolves_through_barrel ... ok [INFO] [stdout] test barrel_exports::mixed_named_star_unused_detected ... ok [INFO] [stdout] test barrel_exports::circular_re_export_no_unused_files ... ok [INFO] [stdout] test barrel_exports::mixed_named_star_used_propagates ... ok [INFO] [stdout] test barrel_exports::barrel_unused_type_re_exports_detected ... ok [INFO] [stdout] test barrel_exports::barrel_re_export_propagates_to_source_module ... ok [INFO] [stdout] test barrel_exports::multi_hop_barrel_used_propagates ... ok [INFO] [stdout] test barrel_exports::multi_level_chain_partially_re_exported_detected ... ok [INFO] [stdout] test barrel_exports::circular_re_export_completes_without_infinite_loop ... ok [INFO] [stdout] test barrel_exports::star_re_export_chain_unused_detected ... ok [INFO] [stdout] test barrel_exports::barrel_unused_re_exports_detected ... ok [INFO] [stdout] test barrel_exports::multi_hop_barrel_unused_detected ... ok [INFO] [stdout] test basic_analysis::analysis_returns_correct_total_count ... ok [INFO] [stdout] test barrel_exports::star_selective_usage_used_propagates ... ok [INFO] [stdout] test barrel_exports::star_re_export_chain_used_propagates ... ok [INFO] [stdout] test barrel_exports::multi_level_chain_used_exports_propagate ... ok [INFO] [stdout] test barrel_exports::star_selective_usage_unused_detected ... ok [INFO] [stdout] test basic_analysis::basic_project_detects_unused_files ... ok [INFO] [stdout] test basic_analysis::basic_project_detects_unused_dependencies ... ok [INFO] [stdout] test basic_analysis::analyze_project_convenience_function ... ok [INFO] [stdout] test basic_analysis::cjs_project_detects_orphan ... ok [INFO] [stdout] test basic_analysis::basic_project_detects_unused_exports ... ok [INFO] [stdout] test basic_analysis::circular_import_does_not_crash ... ok [INFO] [stdout] test basic_analysis::default_export_flagged_when_not_imported ... ok [INFO] [stdout] test basic_analysis::default_export_flagged_when_only_named_imported ... ok [INFO] [stdout] test basic_analysis::basic_project_detects_unused_types ... ok [INFO] [stdout] test basic_analysis::namespace_export_members_not_reported_as_unused ... ok [INFO] [stdout] test basic_analysis::namespace_import_makes_all_exports_used ... ok [INFO] [stdout] test basic_analysis::duplicate_exports_detected ... ok [INFO] [stdout] test caching::cache_roundtrip ... ok [INFO] [stdout] test boundary_violations::no_violations_when_boundaries_disabled ... ok [INFO] [stdout] test boundary_violations::preset_detects_boundary_violation ... ok [INFO] [stdout] test caching::incremental_cache_prune_stale_entries ... ok [INFO] [stdout] test boundary_violations::bulletproof_preset_detects_violation ... ok [INFO] [stdout] test caching::incremental_no_cache_all_misses ... ok [INFO] [stdout] test basic_analysis::side_effect_import_makes_file_reachable ... ok [INFO] [stdout] test bin_script_deps::divergent_binary_name_not_flagged_as_unused ... ok [INFO] [stdout] test boundary_violations::no_violations_when_rule_is_off ... ok [INFO] [stdout] test caching::incremental_results_identical ... ok [INFO] [stdout] test caching::incremental_with_cache_all_hits ... ok [INFO] [stdout] test boundary_violations::detects_boundary_violation ... ok [INFO] [stdout] test config_file_loading::complexity_project_analyzes_without_errors ... ok [INFO] [stdout] test config_file_loading::hidden_dir_non_allowlisted_is_skipped ... ok [INFO] [stdout] test css_modules::css_modules_exports_tracked ... ok [INFO] [stdout] test config_file_loading::error_no_package_json_produces_empty_results ... ok [INFO] [stdout] test config_file_loading::mdx_unused_file_detected ... ok [INFO] [stdout] test css_modules_unused::css_module_unused_classes_detected ... ok [INFO] [stdout] test config_file_loading::hidden_dir_allowlist_includes_storybook ... ok [INFO] [stdout] test css_modules_unused::orphan_css_module_detected_as_unused_file ... ok [INFO] [stdout] test config_file_loading::toml_config_loads_and_applies_rules ... ok [INFO] [stdout] test dependencies::subpath_imports_resolve_correctly ... ok [INFO] [stdout] test dependencies::unresolved_imports_detected ... ok [INFO] [stdout] test dependencies::unlisted_dependencies_detected ... ok [INFO] [stdout] test duplicates::duplicate_code_detects_exact_clones ... ok [INFO] [stdout] test caching::incremental_full_pipeline_results_match ... ok [INFO] [stdout] test dependencies::unused_optional_dependency_detected ... ok [INFO] [stdout] test duplicates::duplicate_code_find_duplicates_in_project_convenience ... ok [INFO] [stdout] test dependencies::unused_dev_dependency_detected ... ok [INFO] [stdout] test duplicates::duplicate_code_json_output_serializable ... ok [INFO] [stdout] test duplicates::ignore_imports_removes_import_only_clones ... ok [INFO] [stdout] test duplicates::duplicate_code_semantic_mode_detects_type2_clones ... ok [INFO] [stdout] test duplicates::duplicate_code_min_tokens_threshold_filters ... ok [INFO] [stdout] test config_file_loading::astro_files_parsed_and_analyzed ... ok [INFO] [stdout] test duplicates::duplicate_code_skip_local_filters_same_directory ... ok [INFO] [stdout] test dynamic_import_then::then_callback_credits_accessed_exports ... ok [INFO] [stdout] test dynamic_import_then::then_callback_makes_modules_reachable ... ok [INFO] [stdout] test duplicates::duplicate_code_unique_file_has_no_clones ... ok [INFO] [stdout] test dynamic_imports::dynamic_import_pattern_makes_files_reachable ... ok [INFO] [stdout] test dynamic_imports::dynamic_import_makes_module_reachable ... ok [INFO] [stdout] test external_plugins::external_plugin_active_in_list ... ok [INFO] [stdout] test entry_export_validation::entry_exports_detected_when_include_entry_exports_enabled ... ok [INFO] [stdout] test entry_export_validation::entry_exports_skipped_by_default ... ok [INFO] [stdout] test dynamic_imports::vite_glob_makes_files_reachable ... ok [INFO] [stdout] test extraction::cjs_exports_dot_assignment ... ok [INFO] [stdout] test extraction::cjs_interop_detects_require ... ok [INFO] [stdout] test extraction::cjs_module_exports_assignment ... ok [INFO] [stdout] test extraction::class_members_are_extracted ... ok [INFO] [stdout] test extraction::default_export_is_parsed ... ok [INFO] [stdout] test extraction::destructured_exports_are_parsed ... ok [INFO] [stdout] test extraction::dynamic_import_is_parsed ... ok [INFO] [stdout] test extraction::enum_members_are_extracted ... ok [INFO] [stdout] test extraction::extract_package_name_scoped ... ok [INFO] [stdout] test extraction::multiple_export_types_in_one_file ... ok [INFO] [stdout] test extraction::named_re_export_is_parsed ... ok [INFO] [stdout] test extraction::named_re_export_with_alias ... ok [INFO] [stdout] test extraction::namespace_import_marks_all_exports_used ... ok [INFO] [stdout] test extraction::side_effect_import_is_parsed ... ok [INFO] [stdout] test extraction::star_re_export_is_parsed ... ok [INFO] [stdout] test extraction::type_only_imports_are_marked ... ok [INFO] [stdout] test external_plugins::plugin_entry_points_carry_correct_plugin_name ... ok [INFO] [stdout] test external_plugins::external_plugin_entry_points_discovered ... ok [INFO] [stdout] test external_plugins::external_plugin_config_patterns_always_used ... ok [INFO] [stdout] test external_plugins::external_plugin_used_exports_respected ... ok [INFO] [stdout] test dynamic_imports::webpack_context_makes_files_reachable ... ok [INFO] [stdout] test false_positive_fixes::interface_member_usage_does_not_flag_implementer_members ... ok [INFO] [stdout] test external_plugins::external_plugin_tooling_dependencies_not_flagged ... ok [INFO] [stdout] test false_positive_fixes::type_only_bidirectional_import_not_reported_as_cycle ... ok [INFO] [stdout] test false_positive_fixes::shared_util_duplicates_with_common_importer_still_flagged ... ok [INFO] [stdout] test dependencies::ignore_patterns_applied_to_workspace_package_json_for_unused_deps ... ok [INFO] [stdout] test false_positive_fixes::type_only_cycle_still_detects_unused_exports ... ok [INFO] [stdout] test false_positive_fixes::unrelated_route_files_not_flagged_as_duplicate_exports ... ok [INFO] [stdout] test false_positive_fixes::broken_tsconfig_extends_does_not_poison_sibling_resolution ... ok [INFO] [stdout] test framework_convention_coverage_expo_tanstack::expo_router_special_files_and_exports_are_covered ... ok [INFO] [stdout] test framework_convention_coverage_expo_tanstack::tanstack_router_custom_route_dir_replaces_default_used_export_rules ... ok [INFO] [stdout] test framework_convention_coverage_astro_gatsby::astro_current_convention_files_and_exports_are_covered ... ok [INFO] [stdout] test framework_convention_coverage_docusaurus::docusaurus_theme_only_sites_do_not_keep_content_conventions_alive ... ok [INFO] [stdout] test framework_convention_coverage_docusaurus::docusaurus_autogenerated_sidebar_does_not_keep_sidebars_file_alive ... ok [INFO] [stdout] test framework_convention_coverage_astro_gatsby::gatsby_pages_and_functions_keep_convention_exports_but_flag_dead_helpers ... ok [INFO] [stdout] test framework_convention_coverage_expo_tanstack::tanstack_router_prefix_and_ignore_patterns_stay_strict ... ok [INFO] [stdout] test framework_convention_coverage_expo_tanstack::tanstack_router_custom_route_dir_and_lazy_exports_are_covered ... ok [INFO] [stdout] test framework_convention_coverage_docusaurus::docusaurus_custom_content_roots_and_swizzles_are_framework_used ... ok [INFO] [stdout] test framework_convention_coverage_router::react_router_flat_routes_custom_root_is_framework_used ... ok [INFO] [stdout] test framework_convention_coverage_vitepress::vitepress_docs_scaffold_is_discovered_and_strict ... ok [INFO] [stdout] test framework_convention_coverage_expo_tanstack::tanstack_router_invalid_ignore_pattern_only_drops_the_bad_filter ... ok [INFO] [stdout] test framework_convention_coverage_router::remix_root_and_client_data_exports_are_covered ... ok [INFO] [stdout] test framework_convention_coverage_router::react_router_custom_app_directory_keeps_src_routes_alive ... ok [INFO] [stdout] test frameworks::css_apply_marks_tailwind_as_used ... ok [INFO] [stdout] test framework_convention_coverage_router::react_router_route_config_discovers_modules_outside_routes_dir ... ok [INFO] [stdout] test framework_convention_coverage_router::react_router_route_config_root_and_route_exports_are_covered ... ok [INFO] [stdout] test frameworks::nextjs_convention_exports_are_not_flagged ... ok [INFO] [stdout] test frameworks::nuxt_configured_runtime_paths_reduce_false_positives_and_keep_dead_exports_visible ... ok [INFO] [stdout] test frameworks::nextjs_page_default_export_not_flagged ... ok [INFO] [stdout] test frameworks::nuxt_convention_exports_preserve_defaults_but_report_dead_helpers ... ok [INFO] [stdout] test frameworks::nextjs_config_referenced_dependencies_are_not_flagged_unused ... ok [INFO] [stdout] test frameworks::path_alias_not_flagged_as_unlisted ... ok [INFO] [stdout] test frameworks::path_aliases_mixed_exports_no_false_positive_unused_files ... ok [INFO] [stdout] test frameworks::nextjs_special_file_exports_are_not_flagged ... ok [INFO] [stdout] test frameworks::nuxt_default_scan_keeps_nested_plugin_index_but_not_nested_helpers ... ok [INFO] [stdout] test frameworks::nuxt_css_tilde_alias_keeps_app_assets_alive ... ok [INFO] [stdout] test hono_html_tagged_template::html_tagged_template_makes_static_assets_reachable ... ok [INFO] [stdout] test frameworks::sveltekit_aliases_from_config_resolve_internal_modules ... ok [INFO] [stdout] test frameworks::vite_aliases_from_config_resolve_internal_modules ... ok [INFO] [stdout] test frameworks::nuxt_runtime_conventions_report_dead_named_exports_without_unused_file_noise ... ok [INFO] [stdout] test html_entry::html_entry_makes_referenced_script_reachable ... ok [INFO] [stdout] test html_entry::html_entry_makes_referenced_stylesheet_reachable ... ok [INFO] [stdout] test frameworks::nuxt_custom_dirs_and_aliases_reduce_false_positives ... ok [INFO] [stdout] test html_entry::html_entry_does_not_suppress_unused_exports ... ok [INFO] [stdout] test html_entry::html_files_not_reported_as_unused ... ok [INFO] [stdout] test html_entry::html_root_relative_stylesheet_is_reachable ... ok [INFO] [stdout] test frameworks::nextjs_unused_util_export_flagged ... ok [INFO] [stdout] test frameworks::nuxt_src_dir_config_reduces_false_positives ... ok [INFO] [stdout] test html_entry::html_root_relative_script_is_reachable ... ok [INFO] [stdout] test html_entry::html_entry_no_unresolved_imports ... ok [INFO] [stdout] test jsx_assets_and_jsdoc::jsdoc_scanner_does_not_credit_unrelated_types ... ok [INFO] [stdout] test html_entry::html_root_relative_no_unresolved_imports ... ok [INFO] [stdout] test inheritance_members::inheritance_propagates_this_accesses_to_children ... ok [INFO] [stdout] test jsx_assets_and_jsdoc::jsdoc_import_type_makes_referenced_types_module_reachable ... ok [INFO] [stdout] test jsx_assets_and_jsdoc::jsx_layout_makes_static_assets_reachable ... ok [INFO] [stdout] test jsx_assets_and_jsdoc::jsdoc_referenced_type_not_flagged_unused ... ok [INFO] [stdout] test member_detection::enum_class_members_detects_unused_members ... ok [INFO] [stdout] test member_detection::enum_type_level_usage_no_false_positives ... ok [INFO] [stdout] test production_mode::non_production_mode_includes_test_files ... ok [INFO] [stdout] test member_detection::enum_whole_object_uses_no_false_positives ... ok [INFO] [stdout] test html_entry::html_workspace_root_relative_no_unresolved_imports ... ok [INFO] [stdout] test production_mode::production_mode_disables_dev_dependency_checking ... ok [INFO] [stdout] test production_mode::production_mode_resolves_solution_style_tsconfig_paths ... ok [INFO] [stdout] test production_mode::production_mode_still_parses_vite_config_aliases ... ok [INFO] [stdout] test production_mode::production_mode_excludes_test_files ... ok [INFO] [stdout] test re_export_chains::three_level_star_chain_no_unused_files ... ok [INFO] [stdout] test re_export_chains::three_level_star_chain_unused_exports_detected ... ok [INFO] [stdout] test production_mode::production_mode_does_not_exclude_nested_config_files ... ok [INFO] [stdout] test production_mode::production_mode_still_detects_unused_exports ... ok [INFO] [stdout] test html_entry::html_workspace_root_relative_stylesheet_is_reachable ... ok [INFO] [stdout] test re_export_chains::three_level_star_chain_used_exports_propagate ... ok [INFO] [stdout] test rules_config::ignore_exports_specific ... ok [INFO] [stdout] test rules_config::ignore_dependencies_config ... ok [INFO] [stdout] test rules_config::rules_off_disables_unused_dependencies ... ok [INFO] [stdout] test rules_config::rules_off_disables_duplicate_exports ... ok [INFO] [stdout] test html_entry::html_workspace_root_relative_script_is_reachable ... ok [INFO] [stdout] test rules_config::ignore_exports_wildcard ... ok [INFO] [stdout] test rules_config::results_serializable_to_json ... ok [INFO] [stdout] test rules_config::rules_off_disables_unused_types ... ok [INFO] [stdout] test rules_config::rules_off_disables_unused_exports ... ok [INFO] [stdout] test rules_config::rules_off_disables_unused_files ... ok [INFO] [stdout] test scss_partials::scss_bare_specifiers_resolve_from_node_modules ... ok [INFO] [stdout] test scoped_used_class_members::scoped_used_class_members_respect_class_heritage ... ok [INFO] [stdout] test scss_partials::scss_partial_files_resolved_via_underscore_convention ... ok [INFO] [stdout] test script_multiplexers::script_multiplexer_dependencies_not_flagged_as_unused ... ok [INFO] [stdout] test scss_partials::external_package_scss_subpaths_credit_nested_style_dependencies ... ok [INFO] [stdout] test scss_partials::angular_style_preprocessor_include_paths_resolve_bare_scss_imports ... ok [INFO] [stdout] test sfc_parsing::vue_component_tags_mark_component_exports_used ... ok [INFO] [stdout] test sfc_parsing::vue_imports_mark_exports_used ... ok [INFO] [stdout] test sfc_parsing::vue_project_discovers_vue_files ... ok [INFO] [stdout] test sfc_parsing::vue_split_value_type_exports_are_tracked_across_script_setup_usage ... ok [INFO] [stdout] test sfc_parsing::vue_template_edge_cases_mark_exports_used ... ok [INFO] [stdout] test stale_suppressions::active_suppression_not_reported_stale ... ok [INFO] [stdout] test stale_suppressions::expected_unused_tag_not_stale_when_unused ... ok [INFO] [stdout] test stale_suppressions::expected_unused_not_in_unused_exports ... ok [INFO] [stdout] test stale_suppressions::expected_unused_tag_stale_when_used ... ok [INFO] [stdout] test stale_suppressions::stale_blanket_suppression ... ok [INFO] [stdout] test sfc_parsing::sveltekit_workspace_types_not_unresolved ... ok [INFO] [stdout] test sfc_parsing::svelte_imports_mark_exports_used ... ok [INFO] [stdout] test stale_suppressions::stale_next_line_suppression_on_used_export ... ok [INFO] [stdout] test sfc_parsing::svelte_project_discovers_svelte_files ... ok [INFO] [stdout] test stale_suppressions::total_stale_suppressions_count ... ok [INFO] [stdout] test stale_suppressions::stale_file_level_suppression ... ok [INFO] [stdout] test suppression_comments::file_level_suppression_hides_all_exports ... ok [INFO] [stdout] test super_method_calls::super_method_calls_credit_parent_class_members ... ok [INFO] [stdout] test suppression_comments::enum_member_suppression ... ok [INFO] [stdout] test sfc_parsing::sveltekit_generated_types_not_unresolved ... ok [INFO] [stdout] test sfc_parsing::sveltekit_virtual_modules_not_unlisted ... ok [INFO] [stdout] test sfc_parsing::sveltekit_param_matchers_keep_match_export_alive ... ok [INFO] [stdout] test unreachable_exports::unreachable_barrel_subtree_flags_barrel_and_leaf_files ... ok [INFO] [stdout] test unreachable_exports::unreachable_mixed_exports_flags_unused_export ... ok [INFO] [stdout] test unreachable_exports::unreachable_mixed_exports_flags_dead_child_file ... ok [INFO] [stdout] test type_only_deps::type_only_import_detected_in_production_mode ... ok [INFO] [stdout] test type_only_deps::type_only_deps_not_reported_outside_production_mode ... ok [INFO] [stdout] test suppression_comments::next_line_suppression_hides_unused_export ... ok [INFO] [stdout] test unreachable_exports::unreachable_dynamic_subtree_flags_lazy_child_file ... ok [INFO] [stdout] test test_only_deps::test_only_dependency_detected ... ok [INFO] [stdout] test visibility_tags::public_tag_prevents_unused_export_detection ... ok [INFO] [stdout] test unused_enum_members::unused_enum_members_detected_by_access_pattern ... ok [INFO] [stdout] test unreachable_exports::unreachable_mixed_exports_flags_export_only_used_by_unreachable ... ok [INFO] [stdout] test unused_enum_members::whole_object_use_suppresses_enum_members ... ok [INFO] [stdout] test visibility_tags::untagged_unused_export_still_detected ... ok [INFO] [stdout] test unused_enum_members::partially_used_enum_members ... ok [INFO] [stdout] test unreachable_exports::unreachable_shared_child_stays_alive_when_reachable_parent_imports_it ... ok [INFO] [stdout] test workspaces::tsconfig_references_discovers_workspaces ... ok [INFO] [stdout] test workspaces::workspace_exports_map_resolves_subpath_imports ... FAILED [INFO] [stdout] test workspaces::workspace_nested_exports_resolves_dist_to_source ... FAILED [INFO] [stdout] test workspaces::project_state_workspace_queries ... ok [INFO] [stdout] test workspaces::workspace_patterns_from_package_json ... ok [INFO] [stdout] test workspaces::workspace_patterns_yarn_format ... ok [INFO] [stdout] test workspaces::workspace_project_discovers_workspace_packages ... FAILED [INFO] [stdout] test workspaces::project_state_stable_file_ids_by_path ... ok [INFO] [stdout] test workspace_cross_imports::workspace_cross_import_detects_unused_export ... ok [INFO] [stdout] test workspace_cross_imports::workspace_cross_import_detects_orphan ... ok [INFO] [stdout] test workspace_cross_imports::workspace_self_reference_resolves_secondary_entry_points ... ok [INFO] [stdout] test workspace_cross_imports::workspace_cross_import_resolves ... ok [INFO] [stdout] test workspaces::tsconfig_references_analysis_detects_unused ... ok [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] [INFO] [stdout] ---- workspaces::workspace_exports_map_resolves_subpath_imports stdout ---- [INFO] [stdout] [INFO] [stdout] thread 'workspaces::workspace_exports_map_resolves_subpath_imports' (9300) panicked at crates/core/tests/integration_test/workspaces.rs:15:46: [INFO] [stdout] symlink creation should succeed: Os { code: 2, kind: NotFound, message: "No such file or directory" } [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x5de5b9090daa - <::print::DisplayBacktrace as core[6771d259883166e6]::fmt::Display>::fmt [INFO] [stdout] 1: 0x5de5b90a9baa - core[6771d259883166e6]::fmt::write [INFO] [stdout] 2: 0x5de5b9096232 - as std[128c3efe2914e152]::io::Write>::write_fmt [INFO] [stdout] 3: 0x5de5b906b71f - std[128c3efe2914e152]::panicking::default_hook::{closure#0} [INFO] [stdout] 4: 0x5de5b9087689 - std[128c3efe2914e152]::panicking::default_hook [INFO] [stdout] 5: 0x5de5b7eeb43c - test[b137923399915ecf]::test_main_with_exit_callback::::{closure#0} [INFO] [stdout] 6: 0x5de5b9087902 - std[128c3efe2914e152]::panicking::panic_with_hook [INFO] [stdout] 7: 0x5de5b906b7d8 - std[128c3efe2914e152]::panicking::panic_handler::{closure#0} [INFO] [stdout] 8: 0x5de5b9060599 - std[128c3efe2914e152]::sys::backtrace::__rust_end_short_backtrace:: [INFO] [stdout] 9: 0x5de5b906c7ed - __rustc[752cc74e29381ccc]::rust_begin_unwind [INFO] [stdout] 10: 0x5de5b90aa41c - core[6771d259883166e6]::panicking::panic_fmt [INFO] [stdout] 11: 0x5de5b90aa162 - core[6771d259883166e6]::result::unwrap_failed [INFO] [stdout] 12: 0x5de5b7e99c90 - core::result::Result::expect::h60bcab470f1e080a [INFO] [stdout] 13: 0x5de5b7e83bed - integration_test::workspaces::force_symlink::h4c1deb76190cf7ec [INFO] [stdout] 14: 0x5de5b7e85e9e - integration_test::workspaces::workspace_exports_map_resolves_subpath_imports::h8fd5cb7c9e47139a [INFO] [stdout] 15: 0x5de5b7e869d3 - integration_test::workspaces::workspace_exports_map_resolves_subpath_imports::{{closure}}::h069ec16df89ff67a [INFO] [stdout] 16: 0x5de5b7e7e416 - core::ops::function::FnOnce::call_once::ha45d7b9ad87c6dd7 [INFO] [stdout] 17: 0x5de5b7edf53b - test[b137923399915ecf]::__rust_begin_short_backtrace::, fn() -> core[6771d259883166e6]::result::Result<(), alloc[fef50e8eecedd288]::string::String>> [INFO] [stdout] 18: 0x5de5b7eebf0b - test[b137923399915ecf]::run_test::{closure#0} [INFO] [stdout] 19: 0x5de5b7ee6364 - std[128c3efe2914e152]::sys::backtrace::__rust_begin_short_backtrace:: [INFO] [stdout] 20: 0x5de5b7eeeb12 - ::{closure#1} as core[6771d259883166e6]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} [INFO] [stdout] 21: 0x5de5b908fb4f - ::new::thread_start [INFO] [stdout] 22: 0x71f257757aa4 - [INFO] [stdout] 23: 0x71f2577e4a64 - clone [INFO] [stdout] 24: 0x0 - [INFO] [stdout] [INFO] [stdout] ---- workspaces::workspace_nested_exports_resolves_dist_to_source stdout ---- [INFO] [stdout] [INFO] [stdout] thread 'workspaces::workspace_nested_exports_resolves_dist_to_source' (9321) panicked at crates/core/tests/integration_test/workspaces.rs:15:46: [INFO] [stdout] symlink creation should succeed: Os { code: 2, kind: NotFound, message: "No such file or directory" } [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x5de5b9090daa - <::print::DisplayBacktrace as core[6771d259883166e6]::fmt::Display>::fmt [INFO] [stdout] 1: 0x5de5b90a9baa - core[6771d259883166e6]::fmt::write [INFO] [stdout] 2: 0x5de5b9096232 - as std[128c3efe2914e152]::io::Write>::write_fmt [INFO] [stdout] 3: 0x5de5b906b71f - std[128c3efe2914e152]::panicking::default_hook::{closure#0} [INFO] [stdout] 4: 0x5de5b9087689 - std[128c3efe2914e152]::panicking::default_hook [INFO] [stdout] 5: 0x5de5b7eeb43c - test[b137923399915ecf]::test_main_with_exit_callback::::{closure#0} [INFO] [stdout] 6: 0x5de5b9087902 - std[128c3efe2914e152]::panicking::panic_with_hook [INFO] [stdout] 7: 0x5de5b906b7d8 - std[128c3efe2914e152]::panicking::panic_handler::{closure#0} [INFO] [stdout] 8: 0x5de5b9060599 - std[128c3efe2914e152]::sys::backtrace::__rust_end_short_backtrace:: [INFO] [stdout] 9: 0x5de5b906c7ed - __rustc[752cc74e29381ccc]::rust_begin_unwind [INFO] [stdout] 10: 0x5de5b90aa41c - core[6771d259883166e6]::panicking::panic_fmt [INFO] [stdout] 11: 0x5de5b90aa162 - core[6771d259883166e6]::result::unwrap_failed [INFO] [stdout] 12: 0x5de5b7e99c90 - core::result::Result::expect::h60bcab470f1e080a [INFO] [stdout] 13: 0x5de5b7e83bed - integration_test::workspaces::force_symlink::h4c1deb76190cf7ec [INFO] [stdout] 14: 0x5de5b7e87c2e - integration_test::workspaces::workspace_nested_exports_resolves_dist_to_source::hf53d01a06d4a5834 [INFO] [stdout] 15: 0x5de5b7e888e3 - integration_test::workspaces::workspace_nested_exports_resolves_dist_to_source::{{closure}}::h8ce53c624a0b1036 [INFO] [stdout] 16: 0x5de5b7e7d256 - core::ops::function::FnOnce::call_once::h4e2671013a6a1194 [INFO] [stdout] 17: 0x5de5b7edf53b - test[b137923399915ecf]::__rust_begin_short_backtrace::, fn() -> core[6771d259883166e6]::result::Result<(), alloc[fef50e8eecedd288]::string::String>> [INFO] [stdout] 18: 0x5de5b7eebf0b - test[b137923399915ecf]::run_test::{closure#0} [INFO] [stdout] 19: 0x5de5b7ee6364 - std[128c3efe2914e152]::sys::backtrace::__rust_begin_short_backtrace:: [INFO] [stdout] 20: 0x5de5b7eeeb12 - ::{closure#1} as core[6771d259883166e6]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} [INFO] [stdout] 21: 0x5de5b908fb4f - ::new::thread_start [INFO] [stdout] 22: 0x71f257757aa4 - [INFO] [stdout] 23: 0x71f2577e4a64 - clone [INFO] [stdout] 24: 0x0 - [INFO] [stdout] [INFO] [stdout] ---- workspaces::workspace_project_discovers_workspace_packages stdout ---- [INFO] [stdout] [INFO] [stdout] thread 'workspaces::workspace_project_discovers_workspace_packages' (9324) panicked at crates/core/tests/integration_test/workspaces.rs:15:46: [INFO] [stdout] symlink creation should succeed: Os { code: 2, kind: NotFound, message: "No such file or directory" } [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x5de5b9090daa - <::print::DisplayBacktrace as core[6771d259883166e6]::fmt::Display>::fmt [INFO] [stdout] 1: 0x5de5b90a9baa - core[6771d259883166e6]::fmt::write [INFO] [stdout] 2: 0x5de5b9096232 - as std[128c3efe2914e152]::io::Write>::write_fmt [INFO] [stdout] 3: 0x5de5b906b71f - std[128c3efe2914e152]::panicking::default_hook::{closure#0} [INFO] [stdout] 4: 0x5de5b9087689 - std[128c3efe2914e152]::panicking::default_hook [INFO] [stdout] 5: 0x5de5b7eeb43c - test[b137923399915ecf]::test_main_with_exit_callback::::{closure#0} [INFO] [stdout] 6: 0x5de5b9087902 - std[128c3efe2914e152]::panicking::panic_with_hook [INFO] [stdout] 7: 0x5de5b906b7d8 - std[128c3efe2914e152]::panicking::panic_handler::{closure#0} [INFO] [stdout] 8: 0x5de5b9060599 - std[128c3efe2914e152]::sys::backtrace::__rust_end_short_backtrace:: [INFO] [stdout] 9: 0x5de5b906c7ed - __rustc[752cc74e29381ccc]::rust_begin_unwind [INFO] [stdout] 10: 0x5de5b90aa41c - core[6771d259883166e6]::panicking::panic_fmt [INFO] [stdout] 11: 0x5de5b90aa162 - core[6771d259883166e6]::result::unwrap_failed [INFO] [stdout] 12: 0x5de5b7e99c90 - core::result::Result::expect::h60bcab470f1e080a [INFO] [stdout] 13: 0x5de5b7e83bed - integration_test::workspaces::force_symlink::h4c1deb76190cf7ec [INFO] [stdout] 14: 0x5de5b7e86dce - integration_test::workspaces::workspace_project_discovers_workspace_packages::h9e0d375fe2b203ca [INFO] [stdout] 15: 0x5de5b7e87833 - integration_test::workspaces::workspace_project_discovers_workspace_packages::{{closure}}::h1cf83e4642e14b06 [INFO] [stdout] 16: 0x5de5b7e7f2f6 - core::ops::function::FnOnce::call_once::hdee9d1f1ecd31756 [INFO] [stdout] 17: 0x5de5b7edf53b - test[b137923399915ecf]::__rust_begin_short_backtrace::, fn() -> core[6771d259883166e6]::result::Result<(), alloc[fef50e8eecedd288]::string::String>> [INFO] [stdout] 18: 0x5de5b7eebf0b - test[b137923399915ecf]::run_test::{closure#0} [INFO] [stdout] 19: 0x5de5b7ee6364 - std[128c3efe2914e152]::sys::backtrace::__rust_begin_short_backtrace:: [INFO] [stdout] 20: 0x5de5b7eeeb12 - ::{closure#1} as core[6771d259883166e6]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} [INFO] [stdout] 21: 0x5de5b908fb4f - ::new::thread_start [INFO] [stdout] 22: 0x71f257757aa4 - [INFO] [stdout] 23: 0x71f2577e4a64 - clone [INFO] [stdout] 24: 0x0 - [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] workspaces::workspace_exports_map_resolves_subpath_imports [INFO] [stdout] workspaces::workspace_nested_exports_resolves_dist_to_source [INFO] [stdout] workspaces::workspace_project_discovers_workspace_packages [INFO] [stdout] [INFO] [stdout] test result: FAILED. 234 passed; 3 failed; 0 ignored; 0 measured; 0 filtered out; finished in 9.18s [INFO] [stdout] [INFO] [stderr] error: test failed, to rerun pass `-p fallow-core --test integration_test` [INFO] running `Command { std: "docker" "inspect" "9bed3b7ed38fd77e1a04d443063ac3911524153450927724a4ca9fae399c59cd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9bed3b7ed38fd77e1a04d443063ac3911524153450927724a4ca9fae399c59cd", kill_on_drop: false }` [INFO] [stdout] 9bed3b7ed38fd77e1a04d443063ac3911524153450927724a4ca9fae399c59cd