Skip to content

Commit dd5f0b8

Browse files
committed
[LLDB] Use new CPU feature check for @skipUnlessFeature decorator
1 parent fd3eff7 commit dd5f0b8

File tree

3 files changed

+13
-20
lines changed

3 files changed

+13
-20
lines changed

lldb/packages/Python/lldbsuite/test/cpu_feature.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ def __init__(self, linux_cpu_info_flag: str, darwin_sysctl_key: str):
1010
self.cpu_info_flag = linux_cpu_info_flag
1111
self.sysctl_key = darwin_sysctl_key
1212

13+
def __str__(self):
14+
return self.cpu_info_flag
15+
1316
def is_supported(self, triple, cmd_runner):
1417
if re.match(".*-.*-linux", triple):
1518
err_msg, res = self._is_supported_linux(cmd_runner)

lldb/packages/Python/lldbsuite/test/decorators.py

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from lldbsuite.support import temp_file
2424
from lldbsuite.test import lldbplatform
2525
from lldbsuite.test import lldbplatformutil
26+
from lldbsuite.test.cpu_feature import CPUFeature
2627

2728

2829
class DecorateMode:
@@ -1127,24 +1128,13 @@ def skipIfLLVMTargetMissing(target):
11271128
return unittest.skipIf(not found, "requires " + target)
11281129

11291130

1130-
# Call sysctl on darwin to see if a specified hardware feature is available on this machine.
1131-
def skipUnlessFeature(feature):
1132-
def is_feature_enabled():
1133-
if platform.system() == "Darwin":
1134-
try:
1135-
output = subprocess.check_output(
1136-
["/usr/sbin/sysctl", feature], stderr=subprocess.DEVNULL
1137-
).decode("utf-8")
1138-
# If 'feature: 1' was output, then this feature is available and
1139-
# the test should not be skipped.
1140-
if re.match(r"%s: 1\s*" % feature, output):
1141-
return None
1142-
else:
1143-
return "%s is not supported on this system." % feature
1144-
except subprocess.CalledProcessError:
1145-
return "%s is not supported on this system." % feature
1131+
def skipUnlessFeature(cpu_feature: CPUFeature):
1132+
def hasFeature(test_case):
1133+
if not test_case.isSupported(cpu_feature):
1134+
return f"Unsupported CPU feature: {cpu_feature}"
1135+
return None
11461136

1147-
return skipTestIfFn(is_feature_enabled)
1137+
return skipTestIfFn(hasFeature)
11481138

11491139

11501140
def skipIfBuildType(types: list[str]):

lldb/test/API/macosx/sme-registers/TestSMERegistersDarwin.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import lldb
22
from lldbsuite.test.lldbtest import *
33
from lldbsuite.test.decorators import *
4+
import lldbsuite.test.cpu_feature as cpu_feature
45
import lldbsuite.test.lldbutil as lldbutil
56
import os
67

@@ -9,10 +10,9 @@ class TestSMERegistersDarwin(TestBase):
910
NO_DEBUG_INFO_TESTCASE = True
1011
mydir = TestBase.compute_mydir(__file__)
1112

12-
@skipIfRemote
1313
@skipUnlessDarwin
14-
@skipUnlessFeature("hw.optional.arm.FEAT_SME")
15-
@skipUnlessFeature("hw.optional.arm.FEAT_SME2")
14+
@skipUnlessFeature(cpu_feature.SME)
15+
@skipUnlessFeature(cpu_feature.SME2)
1616
# thread_set_state/thread_get_state only avail in macOS 15.4+
1717
@skipIf(macos_version=["<", "15.4"])
1818
def test(self):

0 commit comments

Comments
 (0)