summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--test/framework.py22
-rw-r--r--test/run_tests.py5
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):