Skip to content

Releases: JimGalasyn/mutgate

Release list

v0.1.1

Choose a tag to compare

@JimGalasyn JimGalasyn released this 08 Sep 13:10

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_TOKEN and fails the upload loudly: five runs had uploaded nothing while green.
  • Coverage measures the CLI and every subprocess (the parallel + patch=subprocess modes);
    in-process CLI tests and the remaining core branches take it from 72 % to 100 %.
  • A relative --python (or PYTHON) 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: --python relative
    to the caller's cwd, a declaration's PYTHON relative to the root like ROOT and
    PATHS (a bare name is still looked up on PATH).
  • test_run_verbose_only_keep_and_stop no longer leaves a sandbox in $TMPDIR on 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

Choose a tag to compare

@JimGalasyn JimGalasyn released this 07 Sep 18:54

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 /var behind a
    symlink, so this was every macOS user.
  • A suppressed pytest summary was a silent false pass. pytest exit 1 with no
    failure readable is now ERROR, never OK; 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 emptied MUTATIONS, 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=0 after every user argument, and pytest's own "stopping after N failures"
    line (a conftest can still force it) makes the run ERROR. Second review round.
  • An interrupted run with a partial fired set read as a verdict (a conftest setting
    session.shouldstop after the first failure: exit 2, one failure parsed). Only exit codes
    0 and 1 now count as a completed run; anything else is ERROR whatever parsed. Third
    review round.
  • Node ids containing " - " inside a parametrisation are no longer truncated; --timeout
    makes a hanging suite an ERROR; a missing --python is a usage error; ROOT is
    relative to the declaration file; the git ls-files sandbox and real PYTHONPATH