--blame attributes each surviving mutant to the test file(s) covering its line. It finds those files by parsing runtests.jl for include("test_*.jl") statements (see detect_units in src/blame.jl).
That assumption breaks on the modern layout. A ReTestItems / TestItemRunner runtests.jl is often just:
using ReTestItems
runtests(MyPkg)
No include(...), no top-level @testset. Blame then finds zero units and silently marks every survivor "unattributed". (Whole-suite mutation is unaffected — this is a blame-only gap.)
Two ways to close it. The minimum is to detect the layout and say per-file blame is unsupported for it, instead of degrading silently. The better fix enumerates *_test.jl / *_tests.jl files as units directly — that is ReTestItems' own naming rule — and drives per-unit coverage off them.
--blameattributes each surviving mutant to the test file(s) covering its line. It finds those files by parsingruntests.jlforinclude("test_*.jl")statements (seedetect_unitsinsrc/blame.jl).That assumption breaks on the modern layout. A ReTestItems / TestItemRunner
runtests.jlis often just:No
include(...), no top-level@testset. Blame then finds zero units and silently marks every survivor "unattributed". (Whole-suite mutation is unaffected — this is a blame-only gap.)Two ways to close it. The minimum is to detect the layout and say per-file blame is unsupported for it, instead of degrading silently. The better fix enumerates
*_test.jl/*_tests.jlfiles as units directly — that is ReTestItems' own naming rule — and drives per-unit coverage off them.