mirror of
https://github.com/intel/llvm.git
synced 2026-01-17 06:40:01 +08:00
[lldb][test] Fix running TestWithLimitDebugInfo.py on Windows (#150579)
When debug info categories were set for a test method with the `@add_test_categories` decorator, they were all added to its "categories" attribute. If some of these categories were not supported, `LLDBTestResult.startTest()` skipped all variants of the test method. For example, the tests in `TestWithLimitDebugInfo.py` use the categories `dwarf` and `dwo`. However, since `dwo` is not supported on Windows, all the tests in this file were skipped, even though the tests for `dwarf` could be run.
This commit is contained in:
@@ -1778,16 +1778,15 @@ class LLDBTestCaseFactory(type):
|
||||
attrvalue, "__no_debug_info_test__", False
|
||||
):
|
||||
# If any debug info categories were explicitly tagged, assume that list to be
|
||||
# authoritative. If none were specified, try with all debug
|
||||
# info formats.
|
||||
# authoritative. If none were specified, try with all debug info formats.
|
||||
test_method_categories = set(getattr(attrvalue, "categories", []))
|
||||
all_dbginfo_categories = set(
|
||||
test_categories.debug_info_categories.keys()
|
||||
)
|
||||
categories = (
|
||||
set(getattr(attrvalue, "categories", [])) & all_dbginfo_categories
|
||||
)
|
||||
if not categories:
|
||||
categories = [
|
||||
dbginfo_categories = test_method_categories & all_dbginfo_categories
|
||||
other_categories = list(test_method_categories - all_dbginfo_categories)
|
||||
if not dbginfo_categories:
|
||||
dbginfo_categories = [
|
||||
category
|
||||
for category, can_replicate in test_categories.debug_info_categories.items()
|
||||
if can_replicate
|
||||
@@ -1799,9 +1798,8 @@ class LLDBTestCaseFactory(type):
|
||||
skip_for_debug_info_cat_fn = getattr(
|
||||
attrvalue, "__skip_for_debug_info_cat_fn__", no_reason
|
||||
)
|
||||
for cat in categories:
|
||||
for cat in dbginfo_categories:
|
||||
|
||||
@decorators.add_test_categories([cat])
|
||||
@wraps(attrvalue)
|
||||
def test_method(self, attrvalue=attrvalue):
|
||||
return attrvalue(self)
|
||||
@@ -1809,6 +1807,7 @@ class LLDBTestCaseFactory(type):
|
||||
method_name = attrname + "_" + cat
|
||||
test_method.__name__ = method_name
|
||||
test_method.debug_info = cat
|
||||
test_method.categories = other_categories + [cat]
|
||||
|
||||
xfail_reason = xfail_for_debug_info_cat_fn(cat)
|
||||
if xfail_reason:
|
||||
|
||||
Reference in New Issue
Block a user