Author: Charles Zablit
Date: 2026-08-13T15:13:18+01:00
New Revision: 54f8269b34b739e4cd01c6ada263f944f1c2e9b7

URL: 
https://github.com/llvm/llvm-project/commit/54f8269b34b739e4cd01c6ada263f944f1c2e9b7
DIFF: 
https://github.com/llvm/llvm-project/commit/54f8269b34b739e4cd01c6ada263f944f1c2e9b7.diff

LOG: [NFC][lldb] Make skipIfTargetDoesNotSupportThreads a require decorator 
(#215614)

Convert `skipIfTargetDoesNotSupportThreads` to `requireThreadSupport` to
clearly mark wasi targets as unsupported for tests which use threads.

Added: 
    

Modified: 
    lldb/packages/Python/lldbsuite/test/decorators.py
    lldb/test/API/api/multiple-debuggers/TestMultipleDebuggers.py
    lldb/test/API/api/multiple-targets/TestMultipleTargets.py
    lldb/test/API/api/multithreaded/TestMultithreaded.py
    lldb/test/API/commands/expression/no-deadlock/TestExprDoesntBlock.py
    lldb/test/API/commands/gui/expand-threads-tree/TestGuiExpandThreadsTree.py
    lldb/test/API/commands/gui/spawn-threads/TestGuiSpawnThreads.py
    lldb/test/API/commands/process/attach-resume/TestAttachResume.py
    lldb/test/API/commands/process/detach-resumes/TestDetachResumes.py
    
lldb/test/API/commands/register/aarch64_sme_z_registers/za_dynamic_resize/TestZAThreadedDynamic.py
    
lldb/test/API/commands/register/aarch64_sve_registers/rw_access_dynamic_resize/TestSVEThreadedDynamic.py
    lldb/test/API/commands/thread/backtrace/TestThreadBacktraceRepeat.py
    
lldb/test/API/commands/trace/multiple-threads/TestTraceStartStopMultipleThreads.py
    lldb/test/API/commands/watchpoints/hello_watchlocation/TestWatchLocation.py
    
lldb/test/API/commands/watchpoints/multiple_threads/TestWatchpointMultipleThreads.py
    
lldb/test/API/commands/watchpoints/watchpoint_set_command/TestWatchLocationWithWatchSet.py
    lldb/test/API/functionalities/always-run-threads/TestAlwaysRunThreadNames.py
    
lldb/test/API/functionalities/breakpoint/breakpoint_command_auto_continue/TestBreakpointCommandAutoContinue.py
    
lldb/test/API/functionalities/breakpoint/breakpoint_on_lambda_capture/TestBreakOnLambdaCapture.py
    
lldb/test/API/functionalities/breakpoint/hardware_breakpoints/hardware_breakpoint_on_multiple_threads/TestHWBreakMultiThread.py
    
lldb/test/API/functionalities/breakpoint/two_hits_one_actual/TestTwoHitsOneActual.py
    lldb/test/API/functionalities/fork/concurrent_vfork/TestConcurrentVFork.py
    
lldb/test/API/functionalities/plugins/python_os_plugin/stepping_plugin_threads/TestOSPluginStepping.py
    
lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump.py
    
lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump64b.py
    lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py
    
lldb/test/API/functionalities/single-thread-step/TestSingleThreadStepTimeout.py
    lldb/test/API/functionalities/thread/break_after_join/TestBreakAfterJoin.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBatchedBreakpointStepOver.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBreakpointDelayBreakpointOneSignal.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBreakpointOneDelayBreakpointThreads.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBreakpointsDelayedBreakpointOneWatchpoint.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentCrashWithBreak.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentCrashWithSignal.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentCrashWithWatchpoint.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentCrashWithWatchpointBreakpointSignal.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelaySignalBreak.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelaySignalWatch.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelayWatchBreak.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelayedCrashWithBreakpointSignal.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelayedCrashWithBreakpointWatchpoint.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentManyBreakpoints.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentManyCrash.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentManySignals.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentManyWatchpoints.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentNWatchNBreak.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalBreak.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalDelayBreak.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalDelayWatch.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalNWatchNBreak.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalWatch.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalWatchBreak.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoBreakpointThreads.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoBreakpointsOneDelaySignal.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoBreakpointsOneSignal.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoBreakpointsOneWatchpoint.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoWatchpointThreads.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoWatchpointsOneBreakpoint.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoWatchpointsOneDelayBreakpoint.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoWatchpointsOneSignal.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentWatchBreak.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentWatchBreakDelay.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentWatchpointDelayWatchpointOneBreakpoint.py
    
lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentWatchpointWithDelayWatchpointThreads.py
    
lldb/test/API/functionalities/thread/concurrent_events/exit/TestConcurrentThreadExit.py
    
lldb/test/API/functionalities/thread/create_after_attach/TestCreateAfterAttach.py
    
lldb/test/API/functionalities/thread/create_during_step/TestCreateDuringStep.py
    
lldb/test/API/functionalities/thread/exit_during_break/TestExitDuringBreak.py
    
lldb/test/API/functionalities/thread/exit_during_expression/TestExitDuringExpression.py
    lldb/test/API/functionalities/thread/exit_during_step/TestExitDuringStep.py
    
lldb/test/API/functionalities/thread/ignore_suspended/TestIgnoreSuspendedThread.py
    lldb/test/API/functionalities/thread/main_thread_exit/TestMainThreadExit.py
    lldb/test/API/functionalities/thread/multi_break/TestMultipleBreakpoints.py
    lldb/test/API/functionalities/thread/num_threads/TestNumThreads.py
    
lldb/test/API/functionalities/thread/state_after_expression/TestStateAfterExpression.py
    lldb/test/API/functionalities/thread/step_out/TestThreadStepOut.py
    lldb/test/API/functionalities/thread/thread_exit/TestThreadExit.py
    
lldb/test/API/functionalities/thread/thread_specific_break/TestThreadSpecificBreakpoint.py
    
lldb/test/API/functionalities/thread/thread_specific_break_plus_condition/TestThreadSpecificBpPlusCondition.py
    lldb/test/API/lang/c/step_over_no_deadlock/TestStepOverDoesntBlock.py
    lldb/test/API/lang/c/tls_globals/TestTlsGlobals.py
    
lldb/test/API/linux/thread/create_during_instruction_step/TestCreateDuringInstructionStep.py
    lldb/test/API/python_api/lldbutil/iter/TestLLDBIterator.py
    lldb/test/API/python_api/lldbutil/iter/TestRegistersIterator.py
    lldb/test/API/python_api/watchpoint/watchlocation/TestSetWatchlocation.py
    lldb/test/API/python_api/watchpoint/watchlocation/TestTargetWatchAddress.py
    lldb/test/API/tools/lldb-dap/stopped-events/TestDAP_stopped_events.py
    lldb/test/API/tools/lldb-dap/threads/TestDAP_threads.py
    lldb/test/API/tools/lldb-server/TestGdbRemoteThreadsInStopReply.py
    
lldb/test/API/tools/lldb-server/cached-memory-region-info/TestCachedMemoryRegionInfo.py
    lldb/test/API/tools/lldb-server/vCont-threads/TestPartialResume.py
    lldb/test/API/tools/lldb-server/vCont-threads/TestSignal.py

Removed: 
    


################################################################################
diff  --git a/lldb/packages/Python/lldbsuite/test/decorators.py 
b/lldb/packages/Python/lldbsuite/test/decorators.py
index 14c6a0fe16dbe..abd438c0cdf6e 100644
--- a/lldb/packages/Python/lldbsuite/test/decorators.py
+++ b/lldb/packages/Python/lldbsuite/test/decorators.py
@@ -1271,16 +1271,15 @@ def requireDarwinHost(func):
     return 
requireHostPlatform(lldbplatform.translate(lldbplatform.darwin_all))(func)
 
 
-def skipIfTargetDoesNotSupportThreads():
-    """Skip tests that require thread support (e.g. pthreads)."""
+def requireThreadSupport(func):
+    """Mark the item as requiring thread support (e.g. pthreads) on the 
target."""
     platform = lldbplatformutil.getPlatform()
-    # WASI targets ending in "-threads" (e.g. wasip1-threads) support threads;
-    # other WASI targets (e.g. wasip1, wasip2) do not.
-    no_threads = platform.startswith("wasi") and not 
platform.endswith("threads")
     return unittest.skipIf(
-        no_threads,
-        "threads are not supported on %s" % platform,
-    )
+        # WASI targets ending in "-threads" (e.g. wasip1-threads) support 
threads;
+        # other WASI targets (e.g. wasip1, wasip2) do not.
+        platform.startswith("wasi") and not platform.endswith("threads"),
+        UnsupportedReason(f"threads are not supported on {platform}"),
+    )(func)
 
 
 def skipIfTargetDoesNotSupportSharedLibraries():

diff  --git a/lldb/test/API/api/multiple-debuggers/TestMultipleDebuggers.py 
b/lldb/test/API/api/multiple-debuggers/TestMultipleDebuggers.py
index 211b86457a635..13c2f5d961a78 100644
--- a/lldb/test/API/api/multiple-debuggers/TestMultipleDebuggers.py
+++ b/lldb/test/API/api/multiple-debuggers/TestMultipleDebuggers.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class TestMultipleSimultaneousDebuggers(TestBase):
     SHARED_BUILD_TESTCASE = False
     NO_DEBUG_INFO_TESTCASE = True

diff  --git a/lldb/test/API/api/multiple-targets/TestMultipleTargets.py 
b/lldb/test/API/api/multiple-targets/TestMultipleTargets.py
index ba2feb0d823ca..e04aec66bece0 100644
--- a/lldb/test/API/api/multiple-targets/TestMultipleTargets.py
+++ b/lldb/test/API/api/multiple-targets/TestMultipleTargets.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class TestMultipleTargets(TestBase):
     SHARED_BUILD_TESTCASE = False
     NO_DEBUG_INFO_TESTCASE = True

diff  --git a/lldb/test/API/api/multithreaded/TestMultithreaded.py 
b/lldb/test/API/api/multithreaded/TestMultithreaded.py
index ebe80c7de576a..a81afac8dc812 100644
--- a/lldb/test/API/api/multithreaded/TestMultithreaded.py
+++ b/lldb/test/API/api/multithreaded/TestMultithreaded.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfNoSBHeaders
 class SBBreakpointCallbackCase(TestBase):
     SHARED_BUILD_TESTCASE = False

diff  --git 
a/lldb/test/API/commands/expression/no-deadlock/TestExprDoesntBlock.py 
b/lldb/test/API/commands/expression/no-deadlock/TestExprDoesntBlock.py
index 134187d21a035..aae82c72d986a 100644
--- a/lldb/test/API/commands/expression/no-deadlock/TestExprDoesntBlock.py
+++ b/lldb/test/API/commands/expression/no-deadlock/TestExprDoesntBlock.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class ExprDoesntDeadlockTestCase(TestBase):
     @add_test_categories(["basic_process"])
     def test_with_run_command(self):

diff  --git 
a/lldb/test/API/commands/gui/expand-threads-tree/TestGuiExpandThreadsTree.py 
b/lldb/test/API/commands/gui/expand-threads-tree/TestGuiExpandThreadsTree.py
index aeecc790f554f..ca9f466c48ce0 100644
--- a/lldb/test/API/commands/gui/expand-threads-tree/TestGuiExpandThreadsTree.py
+++ b/lldb/test/API/commands/gui/expand-threads-tree/TestGuiExpandThreadsTree.py
@@ -10,7 +10,7 @@
 from lldbsuite.test.lldbpexpect import PExpectTest
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class TestGuiExpandThreadsTree(PExpectTest):
     # PExpect uses many timeouts internally and doesn't play well
     # under ASAN on a loaded machine..

diff  --git a/lldb/test/API/commands/gui/spawn-threads/TestGuiSpawnThreads.py 
b/lldb/test/API/commands/gui/spawn-threads/TestGuiSpawnThreads.py
index f02b6b0662b09..9ea2f80bff789 100644
--- a/lldb/test/API/commands/gui/spawn-threads/TestGuiSpawnThreads.py
+++ b/lldb/test/API/commands/gui/spawn-threads/TestGuiSpawnThreads.py
@@ -11,7 +11,7 @@
 import sys
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class TestGuiSpawnThreadsTest(PExpectTest):
     # This tests spawns threads, so low resources on the host may
     # lead to the test program being stalled for a long time.

diff  --git a/lldb/test/API/commands/process/attach-resume/TestAttachResume.py 
b/lldb/test/API/commands/process/attach-resume/TestAttachResume.py
index c121c2e40beb7..dcb86543f6a0f 100644
--- a/lldb/test/API/commands/process/attach-resume/TestAttachResume.py
+++ b/lldb/test/API/commands/process/attach-resume/TestAttachResume.py
@@ -11,7 +11,7 @@
 exe_name = "AttachResume"  # Must match Makefile
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class AttachResumeTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 

diff  --git 
a/lldb/test/API/commands/process/detach-resumes/TestDetachResumes.py 
b/lldb/test/API/commands/process/detach-resumes/TestDetachResumes.py
index e060aa2db6b34..b7b00071da8df 100644
--- a/lldb/test/API/commands/process/detach-resumes/TestDetachResumes.py
+++ b/lldb/test/API/commands/process/detach-resumes/TestDetachResumes.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class DetachResumesTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 

diff  --git 
a/lldb/test/API/commands/register/aarch64_sme_z_registers/za_dynamic_resize/TestZAThreadedDynamic.py
 
b/lldb/test/API/commands/register/aarch64_sme_z_registers/za_dynamic_resize/TestZAThreadedDynamic.py
index 4f41aa78664a3..56d7a52b67b76 100644
--- 
a/lldb/test/API/commands/register/aarch64_sme_z_registers/za_dynamic_resize/TestZAThreadedDynamic.py
+++ 
b/lldb/test/API/commands/register/aarch64_sme_z_registers/za_dynamic_resize/TestZAThreadedDynamic.py
@@ -10,7 +10,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class AArch64ZAThreadedTestCase(TestBase):
     def get_supported_vg(self):
         exe = self.getBuildArtifact("a.out")

diff  --git 
a/lldb/test/API/commands/register/aarch64_sve_registers/rw_access_dynamic_resize/TestSVEThreadedDynamic.py
 
b/lldb/test/API/commands/register/aarch64_sve_registers/rw_access_dynamic_resize/TestSVEThreadedDynamic.py
index 7458bd20db37c..32fb332bd4fe0 100644
--- 
a/lldb/test/API/commands/register/aarch64_sve_registers/rw_access_dynamic_resize/TestSVEThreadedDynamic.py
+++ 
b/lldb/test/API/commands/register/aarch64_sve_registers/rw_access_dynamic_resize/TestSVEThreadedDynamic.py
@@ -15,7 +15,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class Mode(Enum):
     SVE = 0
     SSVE = 1

diff  --git 
a/lldb/test/API/commands/thread/backtrace/TestThreadBacktraceRepeat.py 
b/lldb/test/API/commands/thread/backtrace/TestThreadBacktraceRepeat.py
index e7c7f984aa4cd..50ed9dfe1b31c 100644
--- a/lldb/test/API/commands/thread/backtrace/TestThreadBacktraceRepeat.py
+++ b/lldb/test/API/commands/thread/backtrace/TestThreadBacktraceRepeat.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class TestThreadBacktracePage(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 

diff  --git 
a/lldb/test/API/commands/trace/multiple-threads/TestTraceStartStopMultipleThreads.py
 
b/lldb/test/API/commands/trace/multiple-threads/TestTraceStartStopMultipleThreads.py
index 5bda951578656..919f0f3af794a 100644
--- 
a/lldb/test/API/commands/trace/multiple-threads/TestTraceStartStopMultipleThreads.py
+++ 
b/lldb/test/API/commands/trace/multiple-threads/TestTraceStartStopMultipleThreads.py
@@ -6,7 +6,7 @@
 from lldbsuite.test.decorators import *
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfNoIntelPT
 class TestTraceStartStopMultipleThreads(TraceIntelPTTestCaseBase):
     @skipIf(oslist=no_match(["linux"]), archs=no_match(["i386", "x86_64"]))

diff  --git 
a/lldb/test/API/commands/watchpoints/hello_watchlocation/TestWatchLocation.py 
b/lldb/test/API/commands/watchpoints/hello_watchlocation/TestWatchLocation.py
index df88792ed1d29..bce56ce6e79e4 100644
--- 
a/lldb/test/API/commands/watchpoints/hello_watchlocation/TestWatchLocation.py
+++ 
b/lldb/test/API/commands/watchpoints/hello_watchlocation/TestWatchLocation.py
@@ -10,7 +10,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class HelloWatchLocationTestCase(TestBase):
     SHARED_BUILD_TESTCASE = False
     NO_DEBUG_INFO_TESTCASE = True

diff  --git 
a/lldb/test/API/commands/watchpoints/multiple_threads/TestWatchpointMultipleThreads.py
 
b/lldb/test/API/commands/watchpoints/multiple_threads/TestWatchpointMultipleThreads.py
index 2b03d73b1aa05..97519fa454536 100644
--- 
a/lldb/test/API/commands/watchpoints/multiple_threads/TestWatchpointMultipleThreads.py
+++ 
b/lldb/test/API/commands/watchpoints/multiple_threads/TestWatchpointMultipleThreads.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class WatchpointForMultipleThreadsTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
     main_spec = lldb.SBFileSpec("main.cpp", False)

diff  --git 
a/lldb/test/API/commands/watchpoints/watchpoint_set_command/TestWatchLocationWithWatchSet.py
 
b/lldb/test/API/commands/watchpoints/watchpoint_set_command/TestWatchLocationWithWatchSet.py
index e912be09539f9..b598d49cc5031 100644
--- 
a/lldb/test/API/commands/watchpoints/watchpoint_set_command/TestWatchLocationWithWatchSet.py
+++ 
b/lldb/test/API/commands/watchpoints/watchpoint_set_command/TestWatchLocationWithWatchSet.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class WatchLocationUsingWatchpointSetTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 

diff  --git 
a/lldb/test/API/functionalities/always-run-threads/TestAlwaysRunThreadNames.py 
b/lldb/test/API/functionalities/always-run-threads/TestAlwaysRunThreadNames.py
index 278ddfe0d13d7..7b01a9eebd37d 100644
--- 
a/lldb/test/API/functionalities/always-run-threads/TestAlwaysRunThreadNames.py
+++ 
b/lldb/test/API/functionalities/always-run-threads/TestAlwaysRunThreadNames.py
@@ -4,7 +4,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class AlwaysRunThreadNamesTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 

diff  --git 
a/lldb/test/API/functionalities/breakpoint/breakpoint_command_auto_continue/TestBreakpointCommandAutoContinue.py
 
b/lldb/test/API/functionalities/breakpoint/breakpoint_command_auto_continue/TestBreakpointCommandAutoContinue.py
index 03faca4d9211d..1ffcd282e897c 100644
--- 
a/lldb/test/API/functionalities/breakpoint/breakpoint_command_auto_continue/TestBreakpointCommandAutoContinue.py
+++ 
b/lldb/test/API/functionalities/breakpoint/breakpoint_command_auto_continue/TestBreakpointCommandAutoContinue.py
@@ -11,7 +11,7 @@
 from lldbsuite.test.lldbpexpect import PExpectTest
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfAsan
 @skipIfEditlineSupportMissing
 class BreakpointCommandAutoContinueTestCase(PExpectTest):

diff  --git 
a/lldb/test/API/functionalities/breakpoint/breakpoint_on_lambda_capture/TestBreakOnLambdaCapture.py
 
b/lldb/test/API/functionalities/breakpoint/breakpoint_on_lambda_capture/TestBreakOnLambdaCapture.py
index 1efbc9b32ed15..9f1c234ca57bb 100644
--- 
a/lldb/test/API/functionalities/breakpoint/breakpoint_on_lambda_capture/TestBreakOnLambdaCapture.py
+++ 
b/lldb/test/API/functionalities/breakpoint/breakpoint_on_lambda_capture/TestBreakOnLambdaCapture.py
@@ -10,7 +10,7 @@
 from lldbsuite.test.lldbtest import *
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class TestBreakOnLambdaCapture(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 

diff  --git 
a/lldb/test/API/functionalities/breakpoint/hardware_breakpoints/hardware_breakpoint_on_multiple_threads/TestHWBreakMultiThread.py
 
b/lldb/test/API/functionalities/breakpoint/hardware_breakpoints/hardware_breakpoint_on_multiple_threads/TestHWBreakMultiThread.py
index fe7e06884413c..eb6cb53fa0499 100644
--- 
a/lldb/test/API/functionalities/breakpoint/hardware_breakpoints/hardware_breakpoint_on_multiple_threads/TestHWBreakMultiThread.py
+++ 
b/lldb/test/API/functionalities/breakpoint/hardware_breakpoints/hardware_breakpoint_on_multiple_threads/TestHWBreakMultiThread.py
@@ -11,7 +11,7 @@
 from functionalities.breakpoint.hardware_breakpoints.base import *
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class HardwareBreakpointMultiThreadTestCase(HardwareBreakpointTestBase):
     @skipTestIfFn(HardwareBreakpointTestBase.hw_breakpoints_unsupported)
     def test_hw_break_set_delete_multi_thread_macos(self):

diff  --git 
a/lldb/test/API/functionalities/breakpoint/two_hits_one_actual/TestTwoHitsOneActual.py
 
b/lldb/test/API/functionalities/breakpoint/two_hits_one_actual/TestTwoHitsOneActual.py
index cc9d047d1cd84..dba12cd882159 100644
--- 
a/lldb/test/API/functionalities/breakpoint/two_hits_one_actual/TestTwoHitsOneActual.py
+++ 
b/lldb/test/API/functionalities/breakpoint/two_hits_one_actual/TestTwoHitsOneActual.py
@@ -11,7 +11,7 @@
 from lldbsuite.test.lldbtest import *
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class TestTwoHitsOneActual(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 

diff  --git 
a/lldb/test/API/functionalities/fork/concurrent_vfork/TestConcurrentVFork.py 
b/lldb/test/API/functionalities/fork/concurrent_vfork/TestConcurrentVFork.py
index 749d5bcbd2681..701d900eaf975 100644
--- a/lldb/test/API/functionalities/fork/concurrent_vfork/TestConcurrentVFork.py
+++ b/lldb/test/API/functionalities/fork/concurrent_vfork/TestConcurrentVFork.py
@@ -8,7 +8,7 @@
 from lldbsuite.test.decorators import *
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class TestConcurrentVFork(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 

diff  --git 
a/lldb/test/API/functionalities/plugins/python_os_plugin/stepping_plugin_threads/TestOSPluginStepping.py
 
b/lldb/test/API/functionalities/plugins/python_os_plugin/stepping_plugin_threads/TestOSPluginStepping.py
index a5bc696e3ef7c..dbebcd793535a 100644
--- 
a/lldb/test/API/functionalities/plugins/python_os_plugin/stepping_plugin_threads/TestOSPluginStepping.py
+++ 
b/lldb/test/API/functionalities/plugins/python_os_plugin/stepping_plugin_threads/TestOSPluginStepping.py
@@ -10,7 +10,7 @@
 import lldbsuite.test.lldbutil as lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class TestOSPluginStepping(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 

diff  --git 
a/lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump.py
 
b/lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump.py
index 64f9d00890781..f44e6f4c8cc71 100644
--- 
a/lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump.py
+++ 
b/lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class ProcessSaveCoreMinidumpTestCase(TestBase):
     def verify_core_file(
         self,

diff  --git 
a/lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump64b.py
 
b/lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump64b.py
index 6807e1fc2117a..22cc578d2d6ce 100644
--- 
a/lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump64b.py
+++ 
b/lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump64b.py
@@ -10,7 +10,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class ProcessSaveCoreMinidump64bTestCase(TestBase):
     def verify_minidump(
         self,

diff  --git 
a/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py 
b/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py
index 93a426f397b5b..a053475900f42 100644
--- a/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py
+++ b/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py
@@ -13,7 +13,7 @@
 import dummy_scripted_process
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class ScriptedProcesTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 

diff  --git 
a/lldb/test/API/functionalities/single-thread-step/TestSingleThreadStepTimeout.py
 
b/lldb/test/API/functionalities/single-thread-step/TestSingleThreadStepTimeout.py
index 3c74208da70cc..287e2abc6cb7b 100644
--- 
a/lldb/test/API/functionalities/single-thread-step/TestSingleThreadStepTimeout.py
+++ 
b/lldb/test/API/functionalities/single-thread-step/TestSingleThreadStepTimeout.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class SingleThreadStepTimeoutTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 

diff  --git 
a/lldb/test/API/functionalities/thread/break_after_join/TestBreakAfterJoin.py 
b/lldb/test/API/functionalities/thread/break_after_join/TestBreakAfterJoin.py
index c246808f1bb30..897ec8eae8cf5 100644
--- 
a/lldb/test/API/functionalities/thread/break_after_join/TestBreakAfterJoin.py
+++ 
b/lldb/test/API/functionalities/thread/break_after_join/TestBreakAfterJoin.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class BreakpointAfterJoinTestCase(TestBase):
     def setUp(self):
         # Call super's setUp().

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBatchedBreakpointStepOver.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBatchedBreakpointStepOver.py
index 922805881c022..15adb8d1820ec 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBatchedBreakpointStepOver.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBatchedBreakpointStepOver.py
@@ -12,7 +12,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentBatchedBreakpointStepOver(ConcurrentEventsBase):
     @skipIf(triple="^mips")

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBreakpointDelayBreakpointOneSignal.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBreakpointDelayBreakpointOneSignal.py
index 607605e7e9cc9..5d0a8b12fa728 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBreakpointDelayBreakpointOneSignal.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBreakpointDelayBreakpointOneSignal.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentBreakpointDelayBreakpointOneSignal(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBreakpointOneDelayBreakpointThreads.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBreakpointOneDelayBreakpointThreads.py
index b668303552f0d..993a7814c8a85 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBreakpointOneDelayBreakpointThreads.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBreakpointOneDelayBreakpointThreads.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentBreakpointOneDelayBreakpointThreads(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBreakpointsDelayedBreakpointOneWatchpoint.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBreakpointsDelayedBreakpointOneWatchpoint.py
index 559f09aeb34c6..41e586462a0e9 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBreakpointsDelayedBreakpointOneWatchpoint.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBreakpointsDelayedBreakpointOneWatchpoint.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class 
ConcurrentBreakpointsDelayedBreakpointOneWatchpoint(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentCrashWithBreak.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentCrashWithBreak.py
index 10b54f6cea578..f17d485191c34 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentCrashWithBreak.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentCrashWithBreak.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentCrashWithBreak(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentCrashWithSignal.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentCrashWithSignal.py
index 26178c5d9c438..20f2e3876ccf9 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentCrashWithSignal.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentCrashWithSignal.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentCrashWithSignal(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentCrashWithWatchpoint.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentCrashWithWatchpoint.py
index 1c3b81b303397..1c52d3dad5332 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentCrashWithWatchpoint.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentCrashWithWatchpoint.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentCrashWithWatchpoint(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentCrashWithWatchpointBreakpointSignal.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentCrashWithWatchpointBreakpointSignal.py
index 78b7f1627e717..da1b6a98cb971 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentCrashWithWatchpointBreakpointSignal.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentCrashWithWatchpointBreakpointSignal.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentCrashWithWatchpointBreakpointSignal(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelaySignalBreak.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelaySignalBreak.py
index 5691397b9c7b1..420896d8ad606 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelaySignalBreak.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelaySignalBreak.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentDelaySignalBreak(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelaySignalWatch.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelaySignalWatch.py
index b216a69da646a..9953d975905d1 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelaySignalWatch.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelaySignalWatch.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentDelaySignalWatch(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelayWatchBreak.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelayWatchBreak.py
index 7133ef03c0078..01fb26e6e1847 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelayWatchBreak.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelayWatchBreak.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentDelayWatchBreak(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelayedCrashWithBreakpointSignal.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelayedCrashWithBreakpointSignal.py
index d9a09e2364c09..25c0b9b3d2fca 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelayedCrashWithBreakpointSignal.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelayedCrashWithBreakpointSignal.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentDelayedCrashWithBreakpointSignal(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelayedCrashWithBreakpointWatchpoint.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelayedCrashWithBreakpointWatchpoint.py
index 40bc3c9a0f9c8..ecf3b431448c1 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelayedCrashWithBreakpointWatchpoint.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentDelayedCrashWithBreakpointWatchpoint.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentDelayedCrashWithBreakpointWatchpoint(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentManyBreakpoints.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentManyBreakpoints.py
index 4b8900f25a8e8..6563796fad3a0 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentManyBreakpoints.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentManyBreakpoints.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 @skipIf  # See llvm/llvm-project/#205297
 class ConcurrentManyBreakpoints(ConcurrentEventsBase):

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentManyCrash.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentManyCrash.py
index 1527de2e4eb0b..2eba8919499c9 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentManyCrash.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentManyCrash.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentManyCrash(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentManySignals.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentManySignals.py
index 3816ffaf69fd0..86a41d60f2303 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentManySignals.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentManySignals.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentManySignals(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentManyWatchpoints.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentManyWatchpoints.py
index f57669d132d8b..b45e5705fc436 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentManyWatchpoints.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentManyWatchpoints.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentManyWatchpoints(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentNWatchNBreak.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentNWatchNBreak.py
index 19ab6e79c0f03..7f70e45484d10 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentNWatchNBreak.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentNWatchNBreak.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentNWatchNBreak(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalBreak.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalBreak.py
index 62bb2f2985c8c..a546f93de5c55 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalBreak.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalBreak.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentSignalBreak(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalDelayBreak.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalDelayBreak.py
index 401bdb61d5994..f364bad4d5e2f 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalDelayBreak.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalDelayBreak.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentSignalDelayBreak(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalDelayWatch.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalDelayWatch.py
index 8e54e7c82b6c5..b40cf190dcfe3 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalDelayWatch.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalDelayWatch.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentSignalDelayWatch(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalNWatchNBreak.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalNWatchNBreak.py
index 2a2dc6c9aae4c..d36ec57fdea56 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalNWatchNBreak.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalNWatchNBreak.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentSignalNWatchNBreak(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalWatch.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalWatch.py
index a1802d32f07c0..ba749b805ce7b 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalWatch.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalWatch.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentSignalWatch(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalWatchBreak.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalWatchBreak.py
index 5cd64aac67f21..b09387ea8e346 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalWatchBreak.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentSignalWatchBreak.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentSignalWatchBreak(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoBreakpointThreads.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoBreakpointThreads.py
index b266855d1da17..6cd597645cf10 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoBreakpointThreads.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoBreakpointThreads.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentTwoBreakpointThreads(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoBreakpointsOneDelaySignal.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoBreakpointsOneDelaySignal.py
index 7f9fc4bf18853..0f3466ce72687 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoBreakpointsOneDelaySignal.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoBreakpointsOneDelaySignal.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentTwoBreakpointsOneDelaySignal(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoBreakpointsOneSignal.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoBreakpointsOneSignal.py
index 5cdc87bc64f25..479304e4cf94f 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoBreakpointsOneSignal.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoBreakpointsOneSignal.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentTwoBreakpointsOneSignal(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoBreakpointsOneWatchpoint.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoBreakpointsOneWatchpoint.py
index 5f676e51b4172..08c4bde7cf685 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoBreakpointsOneWatchpoint.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoBreakpointsOneWatchpoint.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentTwoBreakpointsOneWatchpoint(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoWatchpointThreads.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoWatchpointThreads.py
index 7c98781ffaff1..1d2e37395aa66 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoWatchpointThreads.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoWatchpointThreads.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentTwoWatchpointThreads(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoWatchpointsOneBreakpoint.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoWatchpointsOneBreakpoint.py
index 59864ecc95159..ea82a31f0b9f4 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoWatchpointsOneBreakpoint.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoWatchpointsOneBreakpoint.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentTwoWatchpointsOneBreakpoint(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoWatchpointsOneDelayBreakpoint.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoWatchpointsOneDelayBreakpoint.py
index ba225b609c866..6ce092e91ced5 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoWatchpointsOneDelayBreakpoint.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoWatchpointsOneDelayBreakpoint.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentTwoWatchpointsOneDelayBreakpoint(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoWatchpointsOneSignal.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoWatchpointsOneSignal.py
index e66e47d34a546..8f07f04cdd14a 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoWatchpointsOneSignal.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentTwoWatchpointsOneSignal.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentTwoWatchpointsOneSignal(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentWatchBreak.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentWatchBreak.py
index ab72472206973..884ebc4fe5540 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentWatchBreak.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentWatchBreak.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentWatchBreak(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentWatchBreakDelay.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentWatchBreakDelay.py
index 98f053dfe1bc4..5e8d52f7c1e3b 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentWatchBreakDelay.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentWatchBreakDelay.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentWatchBreakDelay(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentWatchpointDelayWatchpointOneBreakpoint.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentWatchpointDelayWatchpointOneBreakpoint.py
index b47be4337f9f9..ccf8b94bcefe4 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentWatchpointDelayWatchpointOneBreakpoint.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentWatchpointDelayWatchpointOneBreakpoint.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentWatchpointDelayWatchpointOneBreakpoint(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentWatchpointWithDelayWatchpointThreads.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentWatchpointWithDelayWatchpointThreads.py
index 0d315ac2e3b9e..977b8890a1213 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentWatchpointWithDelayWatchpointThreads.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentWatchpointWithDelayWatchpointThreads.py
@@ -3,7 +3,7 @@
 from lldbsuite.test.lldbtest import TestBase
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfWindows
 class ConcurrentWatchpointWithDelayWatchpointThreads(ConcurrentEventsBase):
     # Atomic sequences are not supported yet for MIPS in LLDB.

diff  --git 
a/lldb/test/API/functionalities/thread/concurrent_events/exit/TestConcurrentThreadExit.py
 
b/lldb/test/API/functionalities/thread/concurrent_events/exit/TestConcurrentThreadExit.py
index 52656387b2031..1ed0023d57fd6 100644
--- 
a/lldb/test/API/functionalities/thread/concurrent_events/exit/TestConcurrentThreadExit.py
+++ 
b/lldb/test/API/functionalities/thread/concurrent_events/exit/TestConcurrentThreadExit.py
@@ -9,7 +9,7 @@
 import lldbsuite.test.lldbutil as lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class ConcurrentThreadExitTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 

diff  --git 
a/lldb/test/API/functionalities/thread/create_after_attach/TestCreateAfterAttach.py
 
b/lldb/test/API/functionalities/thread/create_after_attach/TestCreateAfterAttach.py
index 2495ad59514ec..3cc9ad197f4f4 100644
--- 
a/lldb/test/API/functionalities/thread/create_after_attach/TestCreateAfterAttach.py
+++ 
b/lldb/test/API/functionalities/thread/create_after_attach/TestCreateAfterAttach.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class CreateAfterAttachTestCase(TestBase):
     def setUp(self):
         # Call super's setUp().

diff  --git 
a/lldb/test/API/functionalities/thread/create_during_step/TestCreateDuringStep.py
 
b/lldb/test/API/functionalities/thread/create_during_step/TestCreateDuringStep.py
index 6bb155bc2e3d5..f2853483d1afb 100644
--- 
a/lldb/test/API/functionalities/thread/create_during_step/TestCreateDuringStep.py
+++ 
b/lldb/test/API/functionalities/thread/create_during_step/TestCreateDuringStep.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class CreateDuringStepTestCase(TestBase):
     @expectedFailureAll(
         oslist=["linux"],

diff  --git 
a/lldb/test/API/functionalities/thread/exit_during_break/TestExitDuringBreak.py 
b/lldb/test/API/functionalities/thread/exit_during_break/TestExitDuringBreak.py
index 6241df148477e..f9947abb65457 100644
--- 
a/lldb/test/API/functionalities/thread/exit_during_break/TestExitDuringBreak.py
+++ 
b/lldb/test/API/functionalities/thread/exit_during_break/TestExitDuringBreak.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class ExitDuringBreakpointTestCase(TestBase):
     def setUp(self):
         # Call super's setUp().

diff  --git 
a/lldb/test/API/functionalities/thread/exit_during_expression/TestExitDuringExpression.py
 
b/lldb/test/API/functionalities/thread/exit_during_expression/TestExitDuringExpression.py
index 7613f9d6e437c..7a7023e725251 100644
--- 
a/lldb/test/API/functionalities/thread/exit_during_expression/TestExitDuringExpression.py
+++ 
b/lldb/test/API/functionalities/thread/exit_during_expression/TestExitDuringExpression.py
@@ -9,7 +9,7 @@
 from lldbsuite.test.lldbtest import *
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfAsan
 class TestExitDuringExpression(TestBase):
     NO_DEBUG_INFO_TESTCASE = True

diff  --git 
a/lldb/test/API/functionalities/thread/exit_during_step/TestExitDuringStep.py 
b/lldb/test/API/functionalities/thread/exit_during_step/TestExitDuringStep.py
index a420606775b14..28fa3c7cfcd07 100644
--- 
a/lldb/test/API/functionalities/thread/exit_during_step/TestExitDuringStep.py
+++ 
b/lldb/test/API/functionalities/thread/exit_during_step/TestExitDuringStep.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class ExitDuringStepTestCase(TestBase):
     @skipIfWindows  # This is flakey on Windows: llvm.org/pr38373
     def test(self):

diff  --git 
a/lldb/test/API/functionalities/thread/ignore_suspended/TestIgnoreSuspendedThread.py
 
b/lldb/test/API/functionalities/thread/ignore_suspended/TestIgnoreSuspendedThread.py
index 3200047ca6740..4060d8ae4fcb5 100644
--- 
a/lldb/test/API/functionalities/thread/ignore_suspended/TestIgnoreSuspendedThread.py
+++ 
b/lldb/test/API/functionalities/thread/ignore_suspended/TestIgnoreSuspendedThread.py
@@ -8,7 +8,7 @@
 import lldbsuite.test.lldbutil as lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class IgnoreSuspendedThreadTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 

diff  --git 
a/lldb/test/API/functionalities/thread/main_thread_exit/TestMainThreadExit.py 
b/lldb/test/API/functionalities/thread/main_thread_exit/TestMainThreadExit.py
index 6a2de4f123840..d80127aa247e3 100644
--- 
a/lldb/test/API/functionalities/thread/main_thread_exit/TestMainThreadExit.py
+++ 
b/lldb/test/API/functionalities/thread/main_thread_exit/TestMainThreadExit.py
@@ -9,7 +9,7 @@
 import lldbsuite.test.lldbutil as lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class ThreadExitTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 

diff  --git 
a/lldb/test/API/functionalities/thread/multi_break/TestMultipleBreakpoints.py 
b/lldb/test/API/functionalities/thread/multi_break/TestMultipleBreakpoints.py
index fe30138f78157..d98c6d63ddc9c 100644
--- 
a/lldb/test/API/functionalities/thread/multi_break/TestMultipleBreakpoints.py
+++ 
b/lldb/test/API/functionalities/thread/multi_break/TestMultipleBreakpoints.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class MultipleBreakpointTestCase(TestBase):
     def setUp(self):
         # Call super's setUp().

diff  --git 
a/lldb/test/API/functionalities/thread/num_threads/TestNumThreads.py 
b/lldb/test/API/functionalities/thread/num_threads/TestNumThreads.py
index 613944b60c7fa..e6a8647f6b9cf 100644
--- a/lldb/test/API/functionalities/thread/num_threads/TestNumThreads.py
+++ b/lldb/test/API/functionalities/thread/num_threads/TestNumThreads.py
@@ -9,7 +9,7 @@
 import lldbsuite.test.lldbutil as lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class NumberOfThreadsTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 

diff  --git 
a/lldb/test/API/functionalities/thread/state_after_expression/TestStateAfterExpression.py
 
b/lldb/test/API/functionalities/thread/state_after_expression/TestStateAfterExpression.py
index 91cf98622d4e3..f07be951c1560 100644
--- 
a/lldb/test/API/functionalities/thread/state_after_expression/TestStateAfterExpression.py
+++ 
b/lldb/test/API/functionalities/thread/state_after_expression/TestStateAfterExpression.py
@@ -10,7 +10,7 @@
 from lldbsuite.test.decorators import *
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class TestStopReasonAfterExpression(TestBase):
     @skipIfWindows
     @expectedFailureAll(oslist=["freebsd"], bugnumber="llvm.org/pr48415")

diff  --git 
a/lldb/test/API/functionalities/thread/step_out/TestThreadStepOut.py 
b/lldb/test/API/functionalities/thread/step_out/TestThreadStepOut.py
index 780ee61f69f48..a7e7b43a398c5 100644
--- a/lldb/test/API/functionalities/thread/step_out/TestThreadStepOut.py
+++ b/lldb/test/API/functionalities/thread/step_out/TestThreadStepOut.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class ThreadStepOutTestCase(TestBase):
     @skipIfWindows  # This test will hang on windows llvm.org/pr21753
     @expectedFailureAll(oslist=["windows"])

diff  --git 
a/lldb/test/API/functionalities/thread/thread_exit/TestThreadExit.py 
b/lldb/test/API/functionalities/thread/thread_exit/TestThreadExit.py
index 793ef61be7332..f1ab48d160495 100644
--- a/lldb/test/API/functionalities/thread/thread_exit/TestThreadExit.py
+++ b/lldb/test/API/functionalities/thread/thread_exit/TestThreadExit.py
@@ -9,7 +9,7 @@
 import lldbsuite.test.lldbutil as lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class ThreadExitTestCase(TestBase):
     def setUp(self):
         # Call super's setUp().

diff  --git 
a/lldb/test/API/functionalities/thread/thread_specific_break/TestThreadSpecificBreakpoint.py
 
b/lldb/test/API/functionalities/thread/thread_specific_break/TestThreadSpecificBreakpoint.py
index 0f3582ce42023..0e0d5ebd6441d 100644
--- 
a/lldb/test/API/functionalities/thread/thread_specific_break/TestThreadSpecificBreakpoint.py
+++ 
b/lldb/test/API/functionalities/thread/thread_specific_break/TestThreadSpecificBreakpoint.py
@@ -23,7 +23,7 @@ def set_thread_name(test, thread, breakpoint):
     breakpoint.SetThreadName("main-thread")
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class ThreadSpecificBreakTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 

diff  --git 
a/lldb/test/API/functionalities/thread/thread_specific_break_plus_condition/TestThreadSpecificBpPlusCondition.py
 
b/lldb/test/API/functionalities/thread/thread_specific_break_plus_condition/TestThreadSpecificBpPlusCondition.py
index 3113958717b73..1e105ab66b4c2 100644
--- 
a/lldb/test/API/functionalities/thread/thread_specific_break_plus_condition/TestThreadSpecificBpPlusCondition.py
+++ 
b/lldb/test/API/functionalities/thread/thread_specific_break_plus_condition/TestThreadSpecificBpPlusCondition.py
@@ -10,7 +10,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class ThreadSpecificBreakPlusConditionTestCase(TestBase):
     # test frequently times out or hangs
     @skipIfDarwin

diff  --git 
a/lldb/test/API/lang/c/step_over_no_deadlock/TestStepOverDoesntBlock.py 
b/lldb/test/API/lang/c/step_over_no_deadlock/TestStepOverDoesntBlock.py
index 0cd68718c674b..2e0f8dcc041c2 100644
--- a/lldb/test/API/lang/c/step_over_no_deadlock/TestStepOverDoesntBlock.py
+++ b/lldb/test/API/lang/c/step_over_no_deadlock/TestStepOverDoesntBlock.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class StepOverDoesntDeadlockTestCase(TestBase):
     def test_step_over(self):
         """Test that when step over steps over a function it lets other 
threads run."""

diff  --git a/lldb/test/API/lang/c/tls_globals/TestTlsGlobals.py 
b/lldb/test/API/lang/c/tls_globals/TestTlsGlobals.py
index f2e206c4f1ca8..a7f117e1749a6 100644
--- a/lldb/test/API/lang/c/tls_globals/TestTlsGlobals.py
+++ b/lldb/test/API/lang/c/tls_globals/TestTlsGlobals.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfTargetDoesNotSupportSharedLibraries()
 class TlsGlobalTestCase(TestBase):
     def setUp(self):

diff  --git 
a/lldb/test/API/linux/thread/create_during_instruction_step/TestCreateDuringInstructionStep.py
 
b/lldb/test/API/linux/thread/create_during_instruction_step/TestCreateDuringInstructionStep.py
index 3816ba9164d6c..7d7cd4ac1afd3 100644
--- 
a/lldb/test/API/linux/thread/create_during_instruction_step/TestCreateDuringInstructionStep.py
+++ 
b/lldb/test/API/linux/thread/create_during_instruction_step/TestCreateDuringInstructionStep.py
@@ -10,7 +10,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class CreateDuringInstructionStepTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 

diff  --git a/lldb/test/API/python_api/lldbutil/iter/TestLLDBIterator.py 
b/lldb/test/API/python_api/lldbutil/iter/TestLLDBIterator.py
index 52cf41e2d57d6..250a84359af26 100644
--- a/lldb/test/API/python_api/lldbutil/iter/TestLLDBIterator.py
+++ b/lldb/test/API/python_api/lldbutil/iter/TestLLDBIterator.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class LLDBIteratorTestCase(TestBase):
     def setUp(self):
         # Call super's setUp().

diff  --git a/lldb/test/API/python_api/lldbutil/iter/TestRegistersIterator.py 
b/lldb/test/API/python_api/lldbutil/iter/TestRegistersIterator.py
index 26a36c634517e..482496be199b3 100644
--- a/lldb/test/API/python_api/lldbutil/iter/TestRegistersIterator.py
+++ b/lldb/test/API/python_api/lldbutil/iter/TestRegistersIterator.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class RegistersIteratorTestCase(TestBase):
     def setUp(self):
         # Call super's setUp().

diff  --git 
a/lldb/test/API/python_api/watchpoint/watchlocation/TestSetWatchlocation.py 
b/lldb/test/API/python_api/watchpoint/watchlocation/TestSetWatchlocation.py
index d2eb17ab783bf..7895b8ccdc927 100644
--- a/lldb/test/API/python_api/watchpoint/watchlocation/TestSetWatchlocation.py
+++ b/lldb/test/API/python_api/watchpoint/watchlocation/TestSetWatchlocation.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class SetWatchlocationAPITestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 

diff  --git 
a/lldb/test/API/python_api/watchpoint/watchlocation/TestTargetWatchAddress.py 
b/lldb/test/API/python_api/watchpoint/watchlocation/TestTargetWatchAddress.py
index 51aa8b238a43b..66bc138805b1b 100644
--- 
a/lldb/test/API/python_api/watchpoint/watchlocation/TestTargetWatchAddress.py
+++ 
b/lldb/test/API/python_api/watchpoint/watchlocation/TestTargetWatchAddress.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class TargetWatchpointCreateByAddressPITestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 

diff  --git 
a/lldb/test/API/tools/lldb-dap/stopped-events/TestDAP_stopped_events.py 
b/lldb/test/API/tools/lldb-dap/stopped-events/TestDAP_stopped_events.py
index 54b0c556f0a62..3957d32dc17c7 100644
--- a/lldb/test/API/tools/lldb-dap/stopped-events/TestDAP_stopped_events.py
+++ b/lldb/test/API/tools/lldb-dap/stopped-events/TestDAP_stopped_events.py
@@ -7,8 +7,8 @@
 from lldbsuite.test.decorators import (
     expectedFailureAll,
     expectedFailureNetBSD,
+    requireThreadSupport,
     skipIfLinux,
-    skipIfTargetDoesNotSupportThreads,
     skipIfWindows,
 )
 from lldbsuite.test.lldbtest import line_number
@@ -18,7 +18,7 @@
 
 @skipIfWindows  # This is flakey on Windows: llvm.org/pr24668, llvm.org/pr38373
 @skipIfLinux
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class TestDAP_stopped_events(DAPTestCaseBase):
     """
     Test validates 
diff erent operations that produce 'stopped' events.

diff  --git a/lldb/test/API/tools/lldb-dap/threads/TestDAP_threads.py 
b/lldb/test/API/tools/lldb-dap/threads/TestDAP_threads.py
index 05e87e3f437c6..7f4052a19dfe9 100644
--- a/lldb/test/API/tools/lldb-dap/threads/TestDAP_threads.py
+++ b/lldb/test/API/tools/lldb-dap/threads/TestDAP_threads.py
@@ -2,13 +2,13 @@
 Test lldb-dap threads request
 """
 
-from lldbsuite.test.decorators import skipIfTargetDoesNotSupportThreads
+from lldbsuite.test.decorators import requireThreadSupport
 from lldbsuite.test.lldbtest import line_number
 from lldbsuite.test.tools.lldb_dap import DAPTestCaseBase
 from lldbsuite.test.tools.lldb_dap.types import LaunchArgs, StoppedReason, 
ThreadsArgs
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class TestDAP_threads(DAPTestCaseBase):
     def test_correct_thread(self):
         """

diff  --git 
a/lldb/test/API/tools/lldb-server/TestGdbRemoteThreadsInStopReply.py 
b/lldb/test/API/tools/lldb-server/TestGdbRemoteThreadsInStopReply.py
index d0bbd70329354..b2e991fe3d848 100644
--- a/lldb/test/API/tools/lldb-server/TestGdbRemoteThreadsInStopReply.py
+++ b/lldb/test/API/tools/lldb-server/TestGdbRemoteThreadsInStopReply.py
@@ -7,7 +7,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 @skipIfMTE  # MTE security transition shims restrict socket operations.
 class 
TestGdbRemoteThreadsInStopReply(gdbremote_testcase.GdbRemoteTestCaseBase):
     ENABLE_THREADS_IN_STOP_REPLY_ENTRIES = [

diff  --git 
a/lldb/test/API/tools/lldb-server/cached-memory-region-info/TestCachedMemoryRegionInfo.py
 
b/lldb/test/API/tools/lldb-server/cached-memory-region-info/TestCachedMemoryRegionInfo.py
index 35c2fc6fec8ca..30b1de77eec52 100644
--- 
a/lldb/test/API/tools/lldb-server/cached-memory-region-info/TestCachedMemoryRegionInfo.py
+++ 
b/lldb/test/API/tools/lldb-server/cached-memory-region-info/TestCachedMemoryRegionInfo.py
@@ -9,7 +9,7 @@
 
 
 @skipIfWindowsAndNoLLDBServer
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class MemoryRegionInfoPacketsCached(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 

diff  --git 
a/lldb/test/API/tools/lldb-server/vCont-threads/TestPartialResume.py 
b/lldb/test/API/tools/lldb-server/vCont-threads/TestPartialResume.py
index 370976be69578..facc9412a2173 100644
--- a/lldb/test/API/tools/lldb-server/vCont-threads/TestPartialResume.py
+++ b/lldb/test/API/tools/lldb-server/vCont-threads/TestPartialResume.py
@@ -5,7 +5,7 @@
 from lldbsuite.test.lldbtest import *
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class TestPartialResume(gdbremote_testcase.GdbRemoteTestCaseBase):
     THREAD_MATCH_RE = re.compile(r"thread ([0-9a-f]+) running")
 

diff  --git a/lldb/test/API/tools/lldb-server/vCont-threads/TestSignal.py 
b/lldb/test/API/tools/lldb-server/vCont-threads/TestSignal.py
index c39efaad4a42f..230021b826260 100644
--- a/lldb/test/API/tools/lldb-server/vCont-threads/TestSignal.py
+++ b/lldb/test/API/tools/lldb-server/vCont-threads/TestSignal.py
@@ -6,7 +6,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfTargetDoesNotSupportThreads()
+@requireThreadSupport
 class TestSignal(gdbremote_testcase.GdbRemoteTestCaseBase):
     def start_threads(self, num):
         procs = self.prep_debug_monitor_and_inferior(inferior_args=[str(num)])


        
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to