diff --git a/tests/run-tests.py b/tests/run-tests.py --- a/tests/run-tests.py +++ b/tests/run-tests.py @@ -530,6 +530,14 @@ class Test(unittest.TestCase): elif ret is False: raise WarnTest('no result code from test') elif out != self._refout: + # Diff generation may rely on written .err file. + if (ret != 0 or out != self._refout) and not self._skipped \ + and not self._debug: + f = open(self.errpath, 'wb') + for line in out: + f.write(line) + f.close() + # The result object handles diff calculation for us. self._result.addOutputMismatch(self, ret, out, self._refout) @@ -538,13 +546,6 @@ class Test(unittest.TestCase): else: msg = 'output changed' - if (ret != 0 or out != self._refout) and not self._skipped \ - and not self._debug: - f = open(self.errpath, 'wb') - for line in out: - f.write(line) - f.close() - self.fail(msg) elif ret: self.fail(describe(ret))