diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/framework.py | 22 | ||||
-rw-r--r-- | test/run_tests.py | 5 |
2 files changed, 25 insertions, 2 deletions
diff --git a/test/framework.py b/test/framework.py index dd4774dc72b..fdaba2b84d9 100644 --- a/test/framework.py +++ b/test/framework.py @@ -957,7 +957,25 @@ class VppTestResult(unittest.TestResult): if hasattr(self, 'test_framework_failed_pipe'): pipe = self.test_framework_failed_pipe if pipe: - pipe.send(test.__class__) + if test.__class__.__name__ == "_ErrorHolder": + x = str(test) + if x.startswith("setUpClass"): + # x looks like setUpClass (test_function.test_class) + cls = x.split(".")[1].split(")")[0] + for t in self.test_suite: + if t.__class__.__name__ == cls: + pipe.send(t.__class__) + break + else: + raise Exception("Can't find class name `%s' " + "(from ErrorHolder) in test suite " + "`%s'" % (cls, self.test_suite)) + else: + raise Exception("FIXME: unexpected special case - " + "ErrorHolder description is `%s'" % + str(test)) + else: + pipe.send(test.__class__) def addFailure(self, test, err): """ @@ -1192,6 +1210,8 @@ class VppTestRunner(unittest.TextTestRunner): filtered.countTestCases(), test.countTestCases())) if not running_extended_tests(): print("Not running extended tests (some tests will be skipped)") + # super-ugly hack #2 + VppTestResult.test_suite = filtered return super(VppTestRunner, self).run(filtered) diff --git a/test/run_tests.py b/test/run_tests.py index 3476ef04668..c21acab2da5 100644 --- a/test/run_tests.py +++ b/test/run_tests.py @@ -52,7 +52,10 @@ class Filter_by_class_list: def suite_from_failed(suite, failed): filter_cb = Filter_by_class_list(failed) - return VppTestRunner.filter_tests(suite, filter_cb) + suite = VppTestRunner.filter_tests(suite, filter_cb) + if 0 == suite.countTestCases(): + raise Exception("Suite is empty after filtering out the failed tests!") + return suite def run_forked(suite): |