Close every mutation gap, then gate the full run #6
Loading…
Reference in a new issue
No description provided.
Delete branch "close-mutation-gaps"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The full mutation run on
main(run 17) left 66 missed mutants. This PR closes all of them: new fixtures and tests catch 64, the list-renderer restructure deletes the function holding 15 of them, and one provably equivalent mutant is excluded with its reason in.cargo/mutants.toml. With nothing left, the all-code CI job stops reporting for information and starts gating.The fixes the mutants exposed
qin both views (the list-view quit used to hang mutants into timeouts rather than fail them).App::newpre-selected Do nothing for every group, and theSuggested:line only renders when nothing is chosen - so it never rendered. Groups with a suggestion now start unchosen and show it; groups without one keep the Do nothing safe default. Four fixtures pin the scanner's advice from both EXIF sides, equal EXIF dates, an mtime gap exactly at the 1-hour threshold, and one below it..mdnames or with no extension at all stay text (and their EXIF disagrees with their mtimes, so treating them as images would flip the suggestion - the fixtures catch it). A BMP stays plain the same way.Details worth knowing
imagecrate refuses (it only parses 8-bit); they now declare 8-bit, so their dimensions parse and they show the expand arrow.imageis built with only thejpegandpngfeatures, soimage_dimensions()can never succeed for any other extension - exactly the setis_image()accepts. Its-> truemutant is therefore equivalent, and excluded in.cargo/mutants.tomlwith this reason.SystemTime::now()per file.Checked
-D warnings.main, as CI will: 40 mutants, 39 caught, 1 unviable, 0 missed.forgejo-runner validateaccepts the workflow change.Merging this makes
main's full mutation run gating; the next full run after merge should be clean, since every local run is.