mirror of
https://github.com/kucherenko/jscpd.git
synced 2026-09-19 08:11:03 +08:00
eec83f853e
`jscpd rust/` reported 48 clones. This folds every one that was repetition rather than a deliberate copy, leaving 34 across `rust/` and 14 in `rust/crates`, all of the kinds the #1053 pass kept on purpose: fixture corpora, `use` blocks, the TypeScript file and its JavaScript twin, `impl Reporter` headers and the `ts_strip` visitor pair. - basta's JSONC reader copied a string-skipping loop into both `strip_jsonc` and `drop_trailing_commas`. It is now `strip_comments` followed by a comma pass over `lang::outside_strings`, the quote-aware scanning the bundler config readers already share. - The JavaScript and Python analyzer tests each built their own module index, import lookup, binding-reference lookup and member-read list. They live once in `test_scan` as `index_of`, `import`, `binding_reference` and `member_reads`. - `test_scan::TempTree` writes a test's files and removes them when dropped, so a failing assertion no longer leaves its directory behind; the script and `extends` tests that repeated the setup use it. - Four tsconfig `paths` tests with one shape are one table-driven test. - The CLI integration tests share `duplicate_shapes`, `history_stdout` and `assert_only_the_real_file_was_scanned`. - `scripts/publish-npm.sh` repeated a 43-line "publish the platform package, then the main packages under --force-main" tail in two branches, and the "publish unless already live, or show the dry run" block five times. They are `publish_platform_target` and `publish_package`. Run against the old script with the build, the registry check and `npm` stubbed, all eleven combinations of --target, --all, --force-main, --dry-run, --provenance, a failed build and missing platforms print the same lines and exit the same. Behaviour is unchanged: the fixtures corpus reports in every mode, the summary, the console output and the dead-code demo are byte-identical.