changeset 22838:9a20f53e436f

run-tests: handle --jobs and --first gracefully Without this change, --first causes currently-running tests to explode in violent and surprising ways when their temporary directory gets cleaned up. Now we just suppress failure messages from non-first failures when running in --first mode.
author Augie Fackler <raf@durin42.com>
date Thu, 09 Oct 2014 15:10:40 -0400
parents 2be7d5ebd4d0
children 9f0f50c63e16
files tests/run-tests.py tests/test-run-tests.t
diffstat 2 files changed, 27 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/tests/run-tests.py	Mon Oct 06 16:35:02 2014 -0400
+++ b/tests/run-tests.py	Thu Oct 09 15:10:40 2014 -0400
@@ -1189,6 +1189,11 @@
 
     def addOutputMismatch(self, test, ret, got, expected):
         """Record a mismatch in test output for a particular test."""
+        if self.shouldStop:
+            # don't print, some other test case already failed and
+            # printed, we're just stale and probably failed due to our
+            # temp dir getting cleaned up.
+            return
 
         accepted = False
         failed = False
--- a/tests/test-run-tests.t	Mon Oct 06 16:35:02 2014 -0400
+++ b/tests/test-run-tests.t	Thu Oct 09 15:10:40 2014 -0400
@@ -215,8 +215,29 @@
   python hash seed: * (glob)
   [1]
 
+failures in parallel with --first should only print one failure
+  >>> f = open('test-nothing.t', 'w')
+  >>> f.write('foo\n' * 1024)
+  >>> f.write('  $ sleep 1')
+  $ $TESTDIR/run-tests.py --with-hg=`which hg` --jobs 2 --first
+  
+  --- $TESTTMP/test-failure*.t (glob)
+  +++ $TESTTMP/test-failure*.t.err (glob)
+  @@ -1,4 +1,4 @@
+     $ echo babar
+  -  rataxes
+  +  babar
+   This is a noop statement so that
+   this test is still more bytes than success.
+  
+  Failed test-failure*.t: output changed (glob)
+  # Ran 2 tests, 0 skipped, 0 warned, 1 failed.
+  python hash seed: * (glob)
+  [1]
+
+
 (delete the duplicated test file)
-  $ rm test-failure-copy.t
+  $ rm test-failure-copy.t test-nothing.t
 
 
 Interactive run