subunithelper: Exit with 1 if more than zero testsuites failed or
authorJelmer Vernooij <jelmer@samba.org>
Sun, 21 Nov 2010 19:26:59 +0000 (20:26 +0100)
committerJelmer Vernooij <jelmer@samba.org>
Sun, 21 Nov 2010 20:13:00 +0000 (21:13 +0100)
errorred.

Autobuild-User: Jelmer Vernooij <jelmer@samba.org>
Autobuild-Date: Sun Nov 21 21:13:00 CET 2010 on sn-devel-104

selftest/subunithelper.py

index 5d2d6658259b27b92b9ff82a7783758d1029ec18..c59b6d002c39f3d736989df3124d6feeafba01b4 100644 (file)
@@ -32,6 +32,7 @@ class TestsuiteEnabledTestResult(testtools.testresult.TestResult):
 
 
 def parse_results(msg_ops, statistics, fh):
+    exitcode = 0
     expected_fail = 0
     open_tests = {}
 
@@ -95,6 +96,7 @@ def parse_results(msg_ops, statistics, fh):
                     test = open_tests.pop(testname)
                 except KeyError:
                     statistics['TESTS_ERROR']+=1
+                    exitcode = 1
                     msg_ops.addError(subunit.RemotedTestCase(testname), subunit.RemoteError(u"Test was never started"))
                 else:
                     statistics['TESTS_EXPECTED_OK']+=1
@@ -104,6 +106,7 @@ def parse_results(msg_ops, statistics, fh):
                     test = open_tests.pop(testname)
                 except KeyError:
                     statistics['TESTS_ERROR']+=1
+                    exitcode = 1
                     msg_ops.addError(subunit.RemotedTestCase(testname), subunit.RemoteError(u"Test was never started"))
                 else:
                     statistics['TESTS_EXPECTED_FAIL']+=1
@@ -114,9 +117,11 @@ def parse_results(msg_ops, statistics, fh):
                     test = open_tests.pop(testname)
                 except KeyError:
                     statistics['TESTS_ERROR']+=1
+                    exitcode = 1
                     msg_ops.addError(subunit.RemotedTestCase(testname), subunit.RemoteError(u"Test was never started"))
                 else:
                     statistics['TESTS_UNEXPECTED_FAIL']+=1
+                    exitcode = 1
                     msg_ops.addFailure(test, remote_error)
             elif result == "skip":
                 statistics['TESTS_SKIP']+=1
@@ -128,6 +133,7 @@ def parse_results(msg_ops, statistics, fh):
                 msg_ops.addSkip(test, reason)
             elif result == "error":
                 statistics['TESTS_ERROR']+=1
+                exitcode = 1
                 try:
                     test = open_tests.pop(testname)
                 except KeyError:
@@ -139,10 +145,12 @@ def parse_results(msg_ops, statistics, fh):
                 msg_ops.end_testsuite(testname, "success", reason)
             elif result == "testsuite-failure":
                 msg_ops.end_testsuite(testname, "failure", reason)
+                exitcode = 1
             elif result == "testsuite-xfail":
                 msg_ops.end_testsuite(testname, "xfail", reason)
             elif result == "testsuite-error":
                 msg_ops.end_testsuite(testname, "error", reason)
+                exitcode = 1
             else:
                 raise AssertionError("Recognized but unhandled result %r" %
                     result)
@@ -165,12 +173,9 @@ def parse_results(msg_ops, statistics, fh):
         test = subunit.RemotedTestCase(open_tests.popitem()[1])
         msg_ops.addError(test, subunit.RemoteError(u"was started but never finished!"))
         statistics['TESTS_ERROR']+=1
+        exitcode = 1
 
-    if statistics['TESTS_ERROR'] > 0:
-        return 1
-    if statistics['TESTS_UNEXPECTED_FAIL'] > 0:
-        return 1
-    return 0
+    return exitcode
 
 
 class SubunitOps(subunit.TestProtocolClient,TestsuiteEnabledTestResult):