run-tests: avoid double counting server fails
authortimeless <timeless@mozdev.org>
Mon, 28 Dec 2015 16:01:31 +0000
changeset 27567 54bc0e884385
parent 27566 5d6f984c8375
child 27568 34b01a51bd42
run-tests: avoid double counting server fails
tests/run-tests.py
tests/test-run-tests.t
--- a/tests/run-tests.py	Mon Dec 14 23:50:02 2015 +0900
+++ b/tests/run-tests.py	Mon Dec 28 16:01:31 2015 +0000
@@ -585,6 +585,8 @@
                 result.testsRun -= 1
             except WarnTest as e:
                 result.addWarn(self, str(e))
+            except ReportedTest as e:
+                pass
             except self.failureException as e:
                 # This differs from unittest in that we don't capture
                 # the stack trace. This is for historical reasons and
@@ -1243,6 +1245,9 @@
 class WarnTest(Exception):
     """Raised to indicate that a test warned."""
 
+class ReportedTest(Exception):
+    """Raised to indicate that a test already reported."""
+
 class TestResult(unittest._TextTestResult):
     """Holds results when executing via unittest."""
     # Don't worry too much about accessing the non-public _TextTestResult.
@@ -1361,6 +1366,7 @@
                     self.addFailure(
                         test,
                         'server failed to start (HGPORT=%s)' % test._startport)
+                    raise ReportedTest('server failed to start')
                 else:
                     self.stream.write('\n')
                     for line in lines:
--- a/tests/test-run-tests.t	Mon Dec 14 23:50:02 2015 +0900
+++ b/tests/test-run-tests.t	Mon Dec 28 16:01:31 2015 +0000
@@ -209,8 +209,6 @@
 
 Verify that when a process fails to start we show a useful message
 ==================================================================
-NOTE: there is currently a bug where this shows "2 failed" even though
-it's actually the same test being reported for failure twice.
 
   $ cat > test-serve-fail.t <<EOF
   >   $ echo 'abort: child process failed to start blah'
@@ -219,11 +217,8 @@
   
   ERROR: test-serve-fail.t output changed
   !
-  ERROR: test-serve-fail.t output changed
-  !
   Failed test-serve-fail.t: server failed to start (HGPORT=*) (glob)
-  Failed test-serve-fail.t: output changed
-  # Ran 1 tests, 0 skipped, 0 warned, 2 failed.
+  # Ran 1 tests, 0 skipped, 0 warned, 1 failed.
   python hash seed: * (glob)
   [1]
   $ rm test-serve-fail.t