run-tests: update .t reference output after reading the test
The .t file is both test input and reference output. They should always
match. However we have different code paths to read reference output
(Test.__init__ -> Test.readrefout) and test input (TTest._run) so they might
be inconsistent if somethings change the file between those two functions.
This patch assigns "lines" read by "_run" back to "_refout" if "_refout" is
not None (with --debug, see Test.readrefout) so reference output and test
input will always match.
--- a/tests/run-tests.py Wed Jun 21 01:05:20 2017 -0700
+++ b/tests/run-tests.py Wed Jun 21 01:12:31 2017 -0700
@@ -1090,6 +1090,12 @@
lines = f.readlines()
f.close()
+ # .t file is both reference output and the test input, keep reference
+ # output updated with the the test input. This avoids some race
+ # conditions where the reference output does not match the actual test.
+ if self._refout is not None:
+ self._refout = lines
+
salt, script, after, expected = self._parsetest(lines)
# Write out the generated script.