981c36f0

Created Started Cancelled

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.