aboutsummaryrefslogtreecommitdiff
path: root/lldb/packages/Python/lldbsuite/test/lldbtest.py
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/lldbtest.py')
-rw-r--r--lldb/packages/Python/lldbsuite/test/lldbtest.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/lldbtest.py b/lldb/packages/Python/lldbsuite/test/lldbtest.py
index dc4e322..3abc713 100644
--- a/lldb/packages/Python/lldbsuite/test/lldbtest.py
+++ b/lldb/packages/Python/lldbsuite/test/lldbtest.py
@@ -1667,6 +1667,11 @@ class LLDBTestCaseFactory(type):
if original_testcase.NO_DEBUG_INFO_TESTCASE:
return original_testcase
+ # Default implementation for skip/xfail reason based on the debug category,
+ # where "None" means to run the test as usual.
+ def no_reason(_):
+ return None
+
newattrs = {}
for attrname, attrvalue in attrs.items():
if attrname.startswith("test") and not getattr(
@@ -1688,6 +1693,12 @@ class LLDBTestCaseFactory(type):
if can_replicate
]
+ xfail_for_debug_info_cat_fn = getattr(
+ attrvalue, "__xfail_for_debug_info_cat_fn__", no_reason
+ )
+ skip_for_debug_info_cat_fn = getattr(
+ attrvalue, "__skip_for_debug_info_cat_fn__", no_reason
+ )
for cat in categories:
@decorators.add_test_categories([cat])
@@ -1698,6 +1709,17 @@ class LLDBTestCaseFactory(type):
method_name = attrname + "_" + cat
test_method.__name__ = method_name
test_method.debug_info = cat
+
+ xfail_reason = xfail_for_debug_info_cat_fn(cat)
+ if xfail_reason:
+ test_method = unittest2.expectedFailure(xfail_reason)(
+ test_method
+ )
+
+ skip_reason = skip_for_debug_info_cat_fn(cat)
+ if skip_reason:
+ test_method = unittest2.skip(skip_reason)(test_method)
+
newattrs[method_name] = test_method
else: