run-tests: update .t reference output after reading the test
authorJun Wu <quark@fb.com>
Wed, 21 Jun 2017 01:12:31 -0700
changeset 32999 02bca6dc5f41
parent 32998 8dc62c97a665
child 33000 573baab2a797
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.
tests/run-tests.py
--- 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.