Skip to content

v0.9.1

Latest

Choose a tag to compare

@github-actions github-actions released this 26 Oct 13:41
· 5 commits to main since this release
1febc24

For consumers

A mutant that hangs is cut off after its factor, and no longer after the factor times the
workers.
Each file's deadline comes from the time its covering tests took unmutated, in every
worker at once, and the slowest copy is the one kept -- so that time already holds the contention
of the workers. It was then multiplied by workers too, as the deadline from the solo baseline is,
which counted the load twice: a run with 32 workers gave a hung mutant 128 times its tests' time,
and one measured run waited 5.6 hours on a mutant whose tests took 2.6 minutes. A file's deadline
is now max(floor, seconds x factor), and the first pass of the tests that killed a neighbour gets
the same rule. The deadline of a file that was not measured is still scaled by workers, because
its baseline ran alone. With the default factor of 4 and one worker nothing changes; with more, a
slow mutant that used to pass inside the larger deadline can now be scored Timeout, which counts
as killed -- raise timeoutFactor if a suite really is that uneven. Reported and fixed by
@alexey-petrov-ext.

A child process of the code under test no longer hangs or stops a run with more than one
worker.
A worker process used to be reached over its standard input and output, which made them
the remoting channel, and its standard error was read as an error of the run. A child that the code
under test started without redirecting a stream inherited that stream: a child reading its input
read the channel and never ended -- Git for Windows does that on a missing object -- and one line
written to its output or its error output broke the worker and stopped the run. Workers are now
reached over a named pipe of their own (-CustomPipeName, as Enter-PSHostProcess uses), and their
standard streams are files nobody reads, so such a child reads an empty input and writes where
nobody looks. A worker also ends by itself once the run that started it is gone, and what it leaves
in the temp directory is reclaimed by the next run. A run with one worker is as before. Reported
by @alexey-petrov-ext, who also wrote the test that pins it.

Thank you

What's Changed

  • ci: complexity gate on PSComplexity 0.7.1 by @TaekeK in #307
  • ci: bump github/codeql-action/upload-sarif from 4.39.0 to 4.39.1 by @dependabot[bot] in #308
  • fix: a deadline measured in the workers is not multiplied by them again (#310) by @alexey-petrov-ext in #312
  • fix: reach a worker process over a named pipe, not its standard streams (#309) by @TaekeK in #313
  • release: date PSMutant 0.9.1 by @TaekeK in #316

New Contributors

Full Changelog: v0.9.0...v0.9.1