Add dedicated exception for immediate failure in filter-subunit, don't raise it on...
authorJelmer Vernooij <jelmer@samba.org>
Tue, 28 Sep 2010 05:10:43 +0000 (07:10 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Tue, 28 Sep 2010 07:12:39 +0000 (09:12 +0200)
selftest/filter-subunit
selftest/subunithelper.py

index 9b46d616f475b12dc7803c18191c15de82c9b33c..3ec74c46c7adbe8882d92353bc4dc327c6aba750 100755 (executable)
@@ -50,4 +50,7 @@ msg_ops = subunithelper.FilterOps(out, opts.prefix, expected_failures,
                                  opts.strip_passed_output,
                                  fail_immediately=opts.fail_immediately)
 
-sys.exit(subunithelper.parse_results(msg_ops, statistics, sys.stdin))
+try:
+       sys.exit(subunithelper.parse_results(msg_ops, statistics, sys.stdin))
+except subunithelper.ImmediateFail:
+       sys.exit(1)
index c9d3daaaba0280a849586b6fda0d81189b018d38..163f2ba7dbcb81765487ffa5cd48ebb815ea668f 100644 (file)
@@ -222,6 +222,13 @@ def find_in_list(regexes, fullname):
     return None
 
 
+class ImmediateFail(Exception):
+    """Raised to abort immediately."""
+
+    def __init__(self):
+        super(ImmediateFail, self).__init__("test failed and fail_immediately set")
+
+
 class FilterOps(testtools.testresult.TestResult):
 
     def control_msg(self, msg):
@@ -259,7 +266,7 @@ class FilterOps(testtools.testresult.TestResult):
         self._ops.addError(test, details)
         self.output = None
         if self.fail_immediately:
-            raise Exception("test failed and fail_immediately set")
+            raise ImmediateFail()
 
     def addSkip(self, test, details=None):
         test = self._add_prefix(test)
@@ -288,9 +295,9 @@ class FilterOps(testtools.testresult.TestResult):
             self._ops.addFailure(test, details)
             if self.output:
                 self._ops.output_msg(self.output)
+            if self.fail_immediately:
+                raise ImmediateFail()
         self.output = None
-        if self.fail_immediately:
-            raise Exception("test failed and fail_immediately set")
 
     def addSuccess(self, test, details=None):
         test = self._add_prefix(test)