testsuite driver: don't append to existing output files
authorReid Barton <rwbarton@gmail.com>
Tue, 10 Jan 2017 19:29:11 +0000 (14:29 -0500)
committerBen Gamari <ben@smart-cactus.org>
Tue, 10 Jan 2017 19:29:18 +0000 (14:29 -0500)
If you happen to have a T1234.run.stdout file lying aroud (probably
from before the move to running tests in temporary subdirectories)
it gets symlinked into the T1234.run directory since its name starts
with T1234; and then program output gets appended to the existing
file (through the symlink). We should open the file for writing
instead, to replace the symlink with a new file.

Test Plan: tested locally, + harbormaster

Reviewers: austin, Phyx, bgamari

Reviewed By: Phyx, bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D2946

testsuite/driver/testlib.py

index f6729ac..c0135f0 100644 (file)
@@ -1801,11 +1801,11 @@ def runCmd(cmd, stdin=None, stdout=None, stderr=None, timeout_multiplier=1.0, pr
                 sys.stderr.buffer.write(stderr_buffer)
 
         if stdout:
-            with io.open(stdout, 'ab') as f:
+            with io.open(stdout, 'wb') as f:
                 f.write(stdout_buffer)
         if stderr:
             if stderr is not subprocess.STDOUT:
-                with io.open(stderr, 'ab') as f:
+                with io.open(stderr, 'wb') as f:
                     f.write(stderr_buffer)
 
     if r.returncode == 98: