Releases: JimGalasyn/mutgate
Releases · JimGalasyn/mutgate
Release list
v0.1.1
The two issues from the first use in another repository, plus housekeeping after the
release.
- Record the v0.1.0 DOIs (concept 10.5281/zenodo.22649033, version 10.5281/zenodo.22649034) and add the PyPI, CI and DOI badges.
- CI passes
CODECOV_TOKENand fails the upload loudly: five runs had uploaded nothing while green. - Coverage measures the CLI and every subprocess (the parallel +
patch=subprocessmodes);
in-process CLI tests and the remaining core branches take it from 72 % to 100 %. - A relative
--python(orPYTHON) passed the existence check, then crashed with a
traceback from the sandbox (#1): the check ran in the caller's cwd, pytest in the
sandbox. The interpreter is now made absolute once, before the run:--pythonrelative
to the caller's cwd, a declaration'sPYTHONrelative to the root likeROOTand
PATHS(a bare name is still looked up onPATH). test_run_verbose_only_keep_and_stopno longer leaves a sandbox in$TMPDIRon every
suite run (14 per self-check), and now asserts the kept directory exists (#2).- Three new self-contracts pin the fixes (
python-unresolved,keep-ignored,
declared-python-cwd-anchored); the self-check reads 16 OK.
v0.1.0
First release. Mutation with fires / may_fire / invisible / count; the sandbox
copy via git ls-files; verdicts OK, DECORATION, OVERREACH, VISIBLE, NOT_APPLIED, ERROR;
a red baseline aborts; mutgate run and mutgate list, with --markdown for build
records. Extracted from three hand-rolled mutation harnesses written in one week across
the Morphospace and abiogenesis repositories, after the third one found a duplicated
convention by firing on the wrong kind of assertion.
Fixed before release, on a second session's review of the first commit
- A symlinked TMPDIR crashed every mutation ("escapes the sandbox"): the sandbox
directory is now resolved before the containment check. macOS keeps/varbehind a
symlink, so this was every macOS user. - A suppressed pytest summary was a silent false pass.
pytestexit 1 with no
failure readable is nowERROR, neverOK; the same at baseline. fires="Name"(a bare string) was a silent false pass: it became one-letter
fragments matching every node id. Strings and empty fragments are refused.- A typo in
--only, or an emptiedMUTATIONS, exited 0. Both are usage errors (2). - A project whose config stops at the first failure (
-x,--maxfail=N) truncated the
fired set with a consistent-looking exit, so an OVERREACH read OK. mutgate now owns
--maxfail=0after every user argument, and pytest's own "stopping after N failures"
line (a conftest can still force it) makes the runERROR. Second review round. - An interrupted run with a partial fired set read as a verdict (a conftest setting
session.shouldstopafter the first failure: exit 2, one failure parsed). Only exit codes
0 and 1 now count as a completed run; anything else isERRORwhatever parsed. Third
review round. - Node ids containing " - " inside a parametrisation are no longer truncated;
--timeout
makes a hanging suite anERROR; a missing--pythonis a usage error;ROOTis
relative to the declaration file; thegit ls-filessandbox and real PYTHONPATH