850df106

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

Mutation: seed the global RNG in the spec-forest runners

The global System.Random generator was only seeded by the top-level sydTest
runner. The mutation and coverage children run a forest directly via
runSpecForestSynchronously, bypassing that seeding, so tests drawing from the
global generator (randomIO, newStdGen, ...) rather than QuickCheck's replay
seed were non-reproducible under those children — a source of spurious
mutation kills or survivors.

Move setPseudorandomness down into Test.Syd.Run and call it from all four
forest runners, so every entry point that runs a forest seeds the global
generator and no future entry point can bypass it.

Add a regression test, bump sydtest to 0.27.1.0, and add a changelog entry.

Suite timing

Time to Start Worker time Duration Time to finish Idle
Config 0s 2s 2s 2s 0s
Eval 2s 1m50s 1m50s 1m53s 0s
Build 1m12s 1m53s 1m12s 2m25s 0s
Suite 0s 3m46s 2m24s 2m25s 0s

Timeline

0s10s20s30s40s50s1m1m10s1m20s1m30s1m40s1m50s2m2m10s2m20s