By: Tom Sydney Kerckhove <syd@cs-syd.eu>
Line-buffer the mutation phase's progress output
The mutation phase set stderr to block buffering, so a progress line was
written out wherever the flush boundary fell rather than where the line ended.
The report the phase writes to stdout at the end of a run then arrived in the
gap, and a run's log ended up with a progress line wrapped around the summary:
[288/325] Testing mutation IntLit at src/Example/Lib.hs:8:16-17
[289/325] Testing mKilled: 308
(of which timed out: 0)
Survived: 0
...
utation Arith at src/Example/Lib.hs:8:12-17
[290/325] Testing mutation ListLit at src/Example/ListLib.hs:12:25-31
Line buffering is what the coverage phase already uses, for the same reason,
and it costs one write per progress line. The flush before the phase returns
goes with it: there is nothing left sitting in a buffer to force out.
| Time to Start | Worker time | Duration | Time to finish | Idle | |
|---|---|---|---|---|---|
| Config | 8s | 0s | 0s | 9s | 8s |
| Eval | - | - | - | - | 5m08s |
| Build | - | - | - | - | - |
| Suite | 8s | 0s | - | - | 5m16s |