filter-subunit: Add --fail-on-empty argument.
authorJelmer Vernooij <jelmer@samba.org>
Wed, 3 Nov 2010 15:30:40 +0000 (16:30 +0100)
committerJelmer Vernooij <jelmer@samba.org>
Wed, 3 Nov 2010 17:05:19 +0000 (17:05 +0000)
selftest/filter-subunit
selftest/subunithelper.py

index 872d07fdb11e90d0ea9ce30072e3641a2bfb53c1..84b661048008574f67258a87040cd072fe96e1ca 100755 (executable)
@@ -21,10 +21,10 @@ parser.add_option("--strip-passed-output", action="store_true",
     help="Whether to strip output from tests that passed")
 parser.add_option("--fail-immediately", action="store_true", 
     help="Whether to stop on the first error", default=False)
-
 parser.add_option("--prefix", type="string",
        help="Add prefix to all test names")
-
+parser.add_option("--fail-on-empty", default=False,
+       action="store_true", help="Fail if there was no subunit output")
 opts, args = parser.parse_args()
 
 if opts.expected_failures:
@@ -51,7 +51,12 @@ msg_ops = subunithelper.FilterOps(out, opts.prefix, expected_failures,
                                  fail_immediately=opts.fail_immediately)
 
 try:
-       sys.exit(subunithelper.parse_results(msg_ops, statistics, sys.stdin))
+       ret = subunithelper.parse_results(msg_ops, statistics, sys.stdin)
 except subunithelper.ImmediateFail:
        sys.stdout.flush()
        sys.exit(1)
+
+if opts.fail_on_empty and not msg_ops.seen_output:
+       sys.exit(1)
+else:
+       sys.exit(ret)
index b9291b8f25918b36aefe8ddf2ba30ae1d45d9ca5..5d2d6658259b27b92b9ff82a7783758d1029ec18 100644 (file)
@@ -247,6 +247,7 @@ class FilterOps(testtools.testresult.TestResult):
             self.output+=msg
 
     def startTest(self, test):
+        self.seen_output = True
         test = self._add_prefix(test)
         if self.strip_ok_output:
            self.output = ""
@@ -269,6 +270,7 @@ class FilterOps(testtools.testresult.TestResult):
             raise ImmediateFail()
 
     def addSkip(self, test, details=None):
+        self.seen_output = True
         test = self._add_prefix(test)
         self._ops.addSkip(test, details)
         self.output = None
@@ -341,6 +343,7 @@ class FilterOps(testtools.testresult.TestResult):
     def __init__(self, out, prefix=None, expected_failures=None,
                  strip_ok_output=False, fail_immediately=False):
         self._ops = out
+        self.seen_output = False
         self.output = None
         self.prefix = prefix
         if expected_failures is not None: