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.
Total
3s
Created Started Finished
| Time to Start | Worker time | Duration | Time to finish | Idle | |
|---|---|---|---|---|---|
| Config | 2m26s | 1s | 1s | 2m27s | 2m26s |
| Eval | 2m27s | 2s | 2s | 2m29s | 2s |
| Build | - | - | - | - | - |
| Suite | 2m26s | 3s | 3s | 2m29s | 2m28s |