981c36f0

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.
GitHub

Total

14s

Created Started Finished

Time to Start Worker time Duration Time to finish Idle
Config 13s 1s 1s 14s 13s
Eval 25s 2s 2s 28s 13s
Build - - - - -
Suite 13s 3s 14s 28s 26s

Timeline

Config Eval Failed Retried Compressed gap
0s