https://github.com/charles-zablit updated 
https://github.com/llvm/llvm-project/pull/213464

>From 2f157a429f75ba4039f06abc443765efa26622d3 Mon Sep 17 00:00:00 2001
From: Charles Zablit <[email protected]>
Date: Sat, 1 Aug 2026 18:11:08 +0200
Subject: [PATCH 1/2] [lldb] Convert functionalities test to use require
 decorator

---
 lldb/packages/Python/lldbsuite/test/decorators.py         | 5 +++++
 lldb/test/API/functionalities/archives/TestBSDArchives.py | 6 +++---
 lldb/test/API/functionalities/asan/TestMemoryHistory.py   | 4 ++--
 lldb/test/API/functionalities/asan/TestReportData.py      | 2 +-
 .../crashing_condition/TestCrashingCondition.py           | 2 +-
 .../after_rebuild/TestLocationsAfterRebuild.py            | 7 +++----
 .../breakpoint/cpp/TestCPPBreakpointLocations.py          | 2 +-
 .../cpp_exception/TestCPPExceptionBreakpoint.py           | 2 +-
 .../delayed_breakpoints/TestDelayedBreakpoint.py          | 2 +-
 .../require_hw_breakpoints/TestRequireHWBreakpoints.py    | 2 +-
 .../simple_hw_breakpoints/TestSimpleHWBreakpoints.py      | 2 +-
 .../breakpoint/scripted_bkpt/was_hit/TestWasHit.py        | 2 +-
 .../builtin-debugtrap/TestBuiltinDebugTrap.py             | 2 +-
 .../test/API/functionalities/completion/TestCompletion.py | 2 +-
 .../boolreference/TestFormattersBoolRefPtr.py             | 2 +-
 .../data-formatter/builtin-formats/TestBuiltinFormats.py  | 2 +-
 .../data-formatter/compactvectors/TestCompactVectors.py   | 2 +-
 .../data-formatter-cpp/TestDataFormatterCpp.py            | 2 +-
 .../data-formatter-objc/TestDataFormatterObjCNSBundle.py  | 2 +-
 .../data-formatter-objc/TestDataFormatterObjCNSData.py    | 2 +-
 .../data-formatter-objc/TestDataFormatterObjCNSError.py   | 2 +-
 .../data-formatter-objc/TestDataFormatterObjCNSNumber.py  | 4 ++--
 .../data-formatter-objc/TestDataFormatterObjCNSURL.py     | 2 +-
 .../TestDataFormatterObjNSException.py                    | 2 +-
 .../data-formatter-objc/cmtime/TestDataFormatterCMTime.py | 2 +-
 .../nsindexpath/TestDataFormatterNSIndexPath.py           | 2 +-
 .../nsstring/TestDataFormatterNSString.py                 | 6 +++---
 .../TestFormattersOneIsSingular.py                        | 2 +-
 .../data-formatter-synthval/TestDataFormatterSynthVal.py  | 2 +-
 .../embedded-summary/TestEmbeddedTypeSummary.py           | 2 +-
 .../data-formatter/nsarraysynth/TestNSArraySynthetic.py   | 2 +-
 .../nsdictionarysynth/TestNSDictionarySynthetic.py        | 4 ++--
 .../data-formatter/nssetsynth/TestNSSetSynthetic.py       | 4 ++--
 .../ostypeformatting/TestFormattersOsType.py              | 2 +-
 .../data-formatter/poarray/TestPrintObjectArray.py        | 4 ++--
 .../setvaluefromcstring/TestSetValueFromCString.py        | 2 +-
 .../synthupdate/TestSyntheticFilterRecompute.py           | 2 +-
 .../deleted-executable/TestDeletedExecutable.py           | 4 ++--
 .../TestVariableAnnotationsDisassembler.py                | 2 +-
 lldb/test/API/functionalities/exec/TestExec.py            | 8 ++++----
 .../API/functionalities/fat_archives/TestFatArchives.py   | 2 +-
 .../fork/resumes-child/TestForkResumesChild.py            | 4 ++--
 .../gdb_remote_client/TestDynamicLoaderDarwin.py          | 2 +-
 .../functionalities/gdb_remote_client/TestPlatformKill.py | 2 +-
 .../gdb_remote_client/TestPlatformMacOSX.py               | 2 +-
 .../inferior-changed/TestInferiorChanged.py               | 2 +-
 .../inferior-crashing/TestInferiorCrashing.py             | 2 +-
 .../inferior-crashing/TestInferiorCrashingStep.py         | 2 +-
 .../recursive-inferior/TestRecursiveInferior.py           | 2 +-
 .../recursive-inferior/TestRecursiveInferiorStep.py       | 2 +-
 .../API/functionalities/load_unload/TestLoadUnload.py     | 4 ++--
 .../load_using_paths/TestLoadUsingPaths.py                | 2 +-
 lldb/test/API/functionalities/longjmp/TestLongjmp.py      | 2 +-
 lldb/test/API/functionalities/longpath/TestLongPath.py    | 2 +-
 .../API/functionalities/memory/find/TestMemoryFind.py     | 2 +-
 .../API/functionalities/memory/holes/TestMemoryHoles.py   | 2 +-
 .../module_cache/bsd/TestModuleCacheBSD.py                | 2 +-
 .../module_cache/simple_exe/TestModuleCacheSimple.py      | 2 +-
 lldb/test/API/functionalities/mtc/simple/TestMTCSimple.py | 2 +-
 lldb/test/API/functionalities/paths/TestPaths.py          | 2 +-
 .../python_os_plugin/os_plugin_in_dsym/TestOSIndSYM.py    | 2 +-
 .../FreeBSD-Kernel-Core/TestFreeBSDKernelVMCore.py        | 2 +-
 .../process_crash_info/TestProcessCrashInfo.py            | 4 ++--
 .../process_group/TestChangeProcessGroup.py               | 4 ++--
 .../process_save_core/TestProcessSaveCore.py              | 2 +-
 lldb/test/API/functionalities/ptr_refs/TestPtrRefs.py     | 2 +-
 .../functionalities/rerun_and_expr/TestRerunAndExpr.py    | 2 +-
 .../rerun_and_expr_dylib/TestRerunAndExprDylib.py         | 2 +-
 .../API/functionalities/return-value/TestReturnValue.py   | 2 +-
 .../reverse-execution/TestReverseContinueBreakpoints.py   | 2 +-
 .../reverse-execution/TestReverseContinueWatchpoints.py   | 2 +-
 .../scripted_frame_provider/TestScriptedFrameProvider.py  | 2 +-
 .../thread_filter/TestFrameProviderThreadFilter.py        | 2 +-
 .../scripted_process/TestScriptedProcess.py               | 2 +-
 lldb/test/API/functionalities/signal/TestSendSignal.py    | 4 ++--
 .../functionalities/signal/handle-abrt/TestHandleAbort.py | 2 +-
 .../functionalities/signal/handle-segv/TestHandleSegv.py  | 2 +-
 lldb/test/API/functionalities/signal/raise/TestRaise.py   | 4 ++--
 .../ambiguous_tail_call_seq1/TestAmbiguousTailCallSeq1.py | 2 +-
 .../ambiguous_tail_call_seq2/TestAmbiguousTailCallSeq2.py | 2 +-
 .../cross_object/TestCrossObjectTailCalls.py              | 2 +-
 .../disambiguate_call_site/TestDisambiguateCallSite.py    | 2 +-
 .../TestDisambiguatePathsToCommonSink.py                  | 2 +-
 .../TestDisambiguateTailCallSeq.py                        | 2 +-
 .../inlining_and_tail_calls/TestInliningAndTailCalls.py   | 2 +-
 .../sbapi_support/TestTailCallFrameSBAPI.py               | 2 +-
 .../TestArtificialFrameStepOutMessage.py                  | 2 +-
 .../TestSteppingOutWithArtificialFrames.py                | 2 +-
 .../unambiguous_sequence/TestUnambiguousTailCalls.py      | 2 +-
 .../API/functionalities/type_lookup/TestTypeLookup.py     | 2 +-
 90 files changed, 115 insertions(+), 111 deletions(-)

diff --git a/lldb/packages/Python/lldbsuite/test/decorators.py 
b/lldb/packages/Python/lldbsuite/test/decorators.py
index 6524d73e4a349..d401f8771e3df 100644
--- a/lldb/packages/Python/lldbsuite/test/decorators.py
+++ b/lldb/packages/Python/lldbsuite/test/decorators.py
@@ -1217,6 +1217,11 @@ def requireSignals(func):
     return requireNotPlatform(["windows", "wasip1", "wasi"])(func)
 
 
+def requireExpressionEvaluation(func):
+    """Mark the item as requiring expression evaluation."""
+    return requireNotWasm(func)
+
+
 def requireNotWasm(func):
     """Mark the item as inherently inapplicable to WebAssembly targets.
 
diff --git a/lldb/test/API/functionalities/archives/TestBSDArchives.py 
b/lldb/test/API/functionalities/archives/TestBSDArchives.py
index 44222b0317689..2322ed55774cb 100644
--- a/lldb/test/API/functionalities/archives/TestBSDArchives.py
+++ b/lldb/test/API/functionalities/archives/TestBSDArchives.py
@@ -94,7 +94,7 @@ def check_frame_variable_errors(self, thread, error_strings):
             )
 
     @skipIfRemote
-    @skipUnlessDarwin
+    @requireDarwin
     def test_frame_var_errors_when_archive_missing(self):
         """
         Break inside a() and remove libfoo.a to make sure we can't load
@@ -168,7 +168,7 @@ def test_archive_specifications(self):
         self.assertEqual(spec.GetObjectSize(), size_b, libfoothin_path)
 
     @skipIfRemote
-    @skipUnlessDarwin
+    @requireDarwin
     def test_frame_var_errors_when_thin_archive_malformed(self):
         """
         Create thin archive libfoo.a and make it malformed to make sure
@@ -222,7 +222,7 @@ def test_frame_var_errors_when_thin_archive_malformed(self):
         )
 
     @skipIfRemote
-    @skipUnlessDarwin
+    @requireDarwin
     def test_frame_var_errors_when_mtime_mistmatch_for_object_in_archive(self):
         """
         Break inside a() and modify the modification time for "a.o" within
diff --git a/lldb/test/API/functionalities/asan/TestMemoryHistory.py 
b/lldb/test/API/functionalities/asan/TestMemoryHistory.py
index f3864f521127b..b0bdc6e89c28d 100644
--- a/lldb/test/API/functionalities/asan/TestMemoryHistory.py
+++ b/lldb/test/API/functionalities/asan/TestMemoryHistory.py
@@ -20,7 +20,7 @@ def test_compiler_rt_asan(self):
         self.build(make_targets=["compiler_rt-asan"])
         self.compiler_rt_asan_tests()
 
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIf(bugnumber="rdar://109913184&143590169")
     def test_libsanitizers_asan(self):
         try:
@@ -29,7 +29,7 @@ def test_libsanitizers_asan(self):
             self.skipTest("failed to build with libsanitizers")
         self.libsanitizers_asan_tests()
 
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIf(macos_version=["<", "15.5"])
     def test_libsanitizers_traces(self):
         self.build(make_targets=["libsanitizers-traces"])
diff --git a/lldb/test/API/functionalities/asan/TestReportData.py 
b/lldb/test/API/functionalities/asan/TestReportData.py
index 2d1f673594295..aa6e1664ec996 100644
--- a/lldb/test/API/functionalities/asan/TestReportData.py
+++ b/lldb/test/API/functionalities/asan/TestReportData.py
@@ -21,7 +21,7 @@ def test(self):
         self.build(make_targets=["compiler_rt-asan"])
         self.asan_tests()
 
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIf(bugnumber="rdar://109913184&143590169")
     def test_libsanitizers_asan(self):
         try:
diff --git 
a/lldb/test/API/functionalities/breakpoint/breakpoint_conditions/crashing_condition/TestCrashingCondition.py
 
b/lldb/test/API/functionalities/breakpoint/breakpoint_conditions/crashing_condition/TestCrashingCondition.py
index 223e7021f9273..bf1b9b6215188 100644
--- 
a/lldb/test/API/functionalities/breakpoint/breakpoint_conditions/crashing_condition/TestCrashingCondition.py
+++ 
b/lldb/test/API/functionalities/breakpoint/breakpoint_conditions/crashing_condition/TestCrashingCondition.py
@@ -9,7 +9,7 @@
 from lldbsuite.test.lldbtest import *
 
 
-@skipIfWasm  # no expression evaluation
+@requireExpressionEvaluation
 class TestCrashingCondition(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
diff --git 
a/lldb/test/API/functionalities/breakpoint/breakpoint_locations/after_rebuild/TestLocationsAfterRebuild.py
 
b/lldb/test/API/functionalities/breakpoint/breakpoint_locations/after_rebuild/TestLocationsAfterRebuild.py
index 6e1c9452a6833..87490a49bec5e 100644
--- 
a/lldb/test/API/functionalities/breakpoint/breakpoint_locations/after_rebuild/TestLocationsAfterRebuild.py
+++ 
b/lldb/test/API/functionalities/breakpoint/breakpoint_locations/after_rebuild/TestLocationsAfterRebuild.py
@@ -7,7 +7,7 @@
 import lldb
 import lldbsuite.test.lldbutil as lldbutil
 from lldbsuite.test.lldbtest import *
-from lldbsuite.test.decorators import skipIfWasm, skipIfWindows
+from lldbsuite.test.decorators import requireNotWasm, requireNotWindows
 import os
 
 
@@ -18,9 +18,8 @@ class TestLocationsAfterRebuild(TestBase):
     # each debug info format.
     NO_DEBUG_INFO_TESTCASE = True
 
-    # On Windows we cannot remove a file that lldb is debugging.
-    @skipIfWindows
-    @skipIfWasm  # a WASI executable wraps main, so a breakpoint on it takes 
two locations
+    @requireNotWasm  # a WASI executable wraps main, so a breakpoint on it 
takes two locations
+    @requireNotWindows  # On Windows we cannot remove a file that lldb is 
debugging.
     def test_remaining_location_spec(self):
         """If we rebuild a couple of times some of the old locations
         get removed.  Make sure the command-line breakpoint id
diff --git 
a/lldb/test/API/functionalities/breakpoint/cpp/TestCPPBreakpointLocations.py 
b/lldb/test/API/functionalities/breakpoint/cpp/TestCPPBreakpointLocations.py
index 3b5ef7f49ce01..f8587133bb36f 100644
--- a/lldb/test/API/functionalities/breakpoint/cpp/TestCPPBreakpointLocations.py
+++ b/lldb/test/API/functionalities/breakpoint/cpp/TestCPPBreakpointLocations.py
@@ -140,7 +140,7 @@ def breakpoint_id_tests(self):
     @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24764")
     # Wasm emits a single merged destructor rather than the distinct D1/D2
     # variants whose mangled names this test looks up by hand.
-    @skipIfWasm
+    @requireNotWasm
     def test_destructors(self):
         self.build()
         exe = self.getBuildArtifact("a.out")
diff --git 
a/lldb/test/API/functionalities/breakpoint/cpp_exception/TestCPPExceptionBreakpoint.py
 
b/lldb/test/API/functionalities/breakpoint/cpp_exception/TestCPPExceptionBreakpoint.py
index 1baa2be8d0b1f..ccf011cf0146d 100644
--- 
a/lldb/test/API/functionalities/breakpoint/cpp_exception/TestCPPExceptionBreakpoint.py
+++ 
b/lldb/test/API/functionalities/breakpoint/cpp_exception/TestCPPExceptionBreakpoint.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfWasm  # wasm inferiors are built with -fno-exceptions
+@requireNotWasm  # wasm inferiors are built with -fno-exceptions
 class TestCPPExceptionBreakpoint(TestBase):
     my_var = 10
 
diff --git 
a/lldb/test/API/functionalities/breakpoint/delayed_breakpoints/TestDelayedBreakpoint.py
 
b/lldb/test/API/functionalities/breakpoint/delayed_breakpoints/TestDelayedBreakpoint.py
index d01099ccdfe6f..ae78b924960a9 100644
--- 
a/lldb/test/API/functionalities/breakpoint/delayed_breakpoints/TestDelayedBreakpoint.py
+++ 
b/lldb/test/API/functionalities/breakpoint/delayed_breakpoints/TestDelayedBreakpoint.py
@@ -6,7 +6,7 @@
 
 
 @skipIfWindowsAndNoLLDBServer
-@skipIfWasm  # iwasm gdb stub lacks the needed packets
+@requireNotWasm  # iwasm gdb stub lacks the needed packets
 class TestDelayedBreakpoint(TestBase):
     def test(self):
         self.build()
diff --git 
a/lldb/test/API/functionalities/breakpoint/hardware_breakpoints/require_hw_breakpoints/TestRequireHWBreakpoints.py
 
b/lldb/test/API/functionalities/breakpoint/hardware_breakpoints/require_hw_breakpoints/TestRequireHWBreakpoints.py
index fdea67fe18bc1..1b83d8701a9f7 100644
--- 
a/lldb/test/API/functionalities/breakpoint/hardware_breakpoints/require_hw_breakpoints/TestRequireHWBreakpoints.py
+++ 
b/lldb/test/API/functionalities/breakpoint/hardware_breakpoints/require_hw_breakpoints/TestRequireHWBreakpoints.py
@@ -14,7 +14,7 @@
 from functionalities.breakpoint.hardware_breakpoints.base import *
 
 
-@skipIfWasm  # no hardware breakpoints
+@requireNotWasm  # no hardware breakpoints
 class BreakpointLocationsTestCase(HardwareBreakpointTestBase):
     def test_breakpoint(self):
         """Test regular breakpoints when hardware breakpoints are required."""
diff --git 
a/lldb/test/API/functionalities/breakpoint/hardware_breakpoints/simple_hw_breakpoints/TestSimpleHWBreakpoints.py
 
b/lldb/test/API/functionalities/breakpoint/hardware_breakpoints/simple_hw_breakpoints/TestSimpleHWBreakpoints.py
index 9ea578f038a41..5241c588dd661 100644
--- 
a/lldb/test/API/functionalities/breakpoint/hardware_breakpoints/simple_hw_breakpoints/TestSimpleHWBreakpoints.py
+++ 
b/lldb/test/API/functionalities/breakpoint/hardware_breakpoints/simple_hw_breakpoints/TestSimpleHWBreakpoints.py
@@ -6,7 +6,7 @@
 from functionalities.breakpoint.hardware_breakpoints.base import *
 
 
-@skipIfWasm  # no hardware breakpoints
+@requireNotWasm  # no hardware breakpoints
 class SimpleHWBreakpointTest(HardwareBreakpointTestBase):
     @skipTestIfFn(HardwareBreakpointTestBase.hw_breakpoints_unsupported)
     def test(self):
diff --git 
a/lldb/test/API/functionalities/breakpoint/scripted_bkpt/was_hit/TestWasHit.py 
b/lldb/test/API/functionalities/breakpoint/scripted_bkpt/was_hit/TestWasHit.py
index d28604dcae8bf..95eb7ea9c2a93 100644
--- 
a/lldb/test/API/functionalities/breakpoint/scripted_bkpt/was_hit/TestWasHit.py
+++ 
b/lldb/test/API/functionalities/breakpoint/scripted_bkpt/was_hit/TestWasHit.py
@@ -13,7 +13,7 @@ class TestWasHit(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
     @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24528")
-    @skipIfWasm  # no expression evaluation (was_hit evaluates change_him())
+    @requireExpressionEvaluation (was_hit evaluates change_him())
     def test_was_hit_resolver(self):
         """Use facade breakpoints to emulate hitting some locations"""
         self.build()
diff --git 
a/lldb/test/API/functionalities/builtin-debugtrap/TestBuiltinDebugTrap.py 
b/lldb/test/API/functionalities/builtin-debugtrap/TestBuiltinDebugTrap.py
index fc90e8a7ab588..fae4367c188b5 100644
--- a/lldb/test/API/functionalities/builtin-debugtrap/TestBuiltinDebugTrap.py
+++ b/lldb/test/API/functionalities/builtin-debugtrap/TestBuiltinDebugTrap.py
@@ -13,7 +13,7 @@ class BuiltinDebugTrapTestCase(TestBase):
 
     # __builtin_debugtrap lowers to the WebAssembly `unreachable` instruction, 
a
     # fatal trap that cannot be resumed as this test expects.
-    @skipIfWasm
+    @requireNotWasm
     def test(self):
         platform_stop_reason = lldb.eStopReasonSignal
         platform = self.getPlatform()
diff --git a/lldb/test/API/functionalities/completion/TestCompletion.py 
b/lldb/test/API/functionalities/completion/TestCompletion.py
index f4bdc3a894215..794c6a528bcdd 100644
--- a/lldb/test/API/functionalities/completion/TestCompletion.py
+++ b/lldb/test/API/functionalities/completion/TestCompletion.py
@@ -12,7 +12,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfWasm  # driver cannot launch a Wasm inferior
+@requireNotWasm  # driver cannot launch a Wasm inferior
 class CommandLineCompletionTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
diff --git 
a/lldb/test/API/functionalities/data-formatter/boolreference/TestFormattersBoolRefPtr.py
 
b/lldb/test/API/functionalities/data-formatter/boolreference/TestFormattersBoolRefPtr.py
index ab0acd6de4e54..898790e1a8c77 100644
--- 
a/lldb/test/API/functionalities/data-formatter/boolreference/TestFormattersBoolRefPtr.py
+++ 
b/lldb/test/API/functionalities/data-formatter/boolreference/TestFormattersBoolRefPtr.py
@@ -10,7 +10,7 @@
 
 
 class DataFormatterBoolRefPtr(TestBase):
-    @skipUnlessDarwin
+    @requireDarwin
     def test_boolrefptr_with_run_command(self):
         """Test the formatters we use for BOOL& and BOOL* in Objective-C."""
         self.build()
diff --git 
a/lldb/test/API/functionalities/data-formatter/builtin-formats/TestBuiltinFormats.py
 
b/lldb/test/API/functionalities/data-formatter/builtin-formats/TestBuiltinFormats.py
index 98dfb1de086b6..1d6ab494aa2fb 100644
--- 
a/lldb/test/API/functionalities/data-formatter/builtin-formats/TestBuiltinFormats.py
+++ 
b/lldb/test/API/functionalities/data-formatter/builtin-formats/TestBuiltinFormats.py
@@ -8,7 +8,7 @@
 from lldbsuite.test.lldbtest import *
 
 
-@skipIfWasm  # no expression evaluation
+@requireExpressionEvaluation
 class TestCase(TestBase):
     def getFormatted(self, format, expr):
         """
diff --git 
a/lldb/test/API/functionalities/data-formatter/compactvectors/TestCompactVectors.py
 
b/lldb/test/API/functionalities/data-formatter/compactvectors/TestCompactVectors.py
index b162bd40d0bd4..0b976b5d558ed 100644
--- 
a/lldb/test/API/functionalities/data-formatter/compactvectors/TestCompactVectors.py
+++ 
b/lldb/test/API/functionalities/data-formatter/compactvectors/TestCompactVectors.py
@@ -17,7 +17,7 @@ def setUp(self):
         self.line = line_number("main.cpp", "// Set break point at this line.")
 
     @skipIf(compiler="clang", compiler_version=["<", "19.0"])
-    @skipUnlessDarwin
+    @requireDarwin
     def test_with_run_command(self):
         """Test that that file and class static variables display correctly."""
         self.build()
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py
index b24f49d7f647d..d3f8cc85ad916 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfWasm  # no expression evaluation
+@requireExpressionEvaluation
 class CppDataFormatterTestCase(TestBase):
     def setUp(self):
         # Call super's setUp().
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSBundle.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSBundle.py
index 97be2e8ec68d2..cb1d06b9720a1 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSBundle.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSBundle.py
@@ -23,7 +23,7 @@ def test_nsbundle_with_run_command(self):
         """Test formatters for NSBundle."""
         self.appkit_tester_impl(self.nsbundle_data_formatter_commands, True)
 
-    @skipUnlessDarwin
+    @requireDarwin
     @requiresSwiftPlugin(min_apple_os_version=27.0)
     def test_nsbundle_with_run_command_no_sonct(self):
         """Test formatters for NSBundle."""
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSData.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSData.py
index 0748e4a446752..ed087f38e99e2 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSData.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSData.py
@@ -19,7 +19,7 @@ def test_nsdata_with_run_command(self):
         """Test formatters for  NSData."""
         self.appkit_tester_impl(self.nsdata_data_formatter_commands, True)
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_nsdata_with_run_command_no_const(self):
         """Test formatters for  NSData."""
         self.appkit_tester_impl(self.nsdata_data_formatter_commands, False)
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSError.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSError.py
index a4480b9b2d6bd..e6ab6ef6f1a86 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSError.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSError.py
@@ -19,7 +19,7 @@ def test_nserror_with_run_command(self):
         """Test formatters for NSError."""
         self.appkit_tester_impl(self.nserror_data_formatter_commands, True)
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_nserror_with_run_command_no_const(self):
         """Test formatters for NSError."""
         self.appkit_tester_impl(self.nserror_data_formatter_commands, False)
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSNumber.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSNumber.py
index 06060642a3dca..f6f80d6181595 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSNumber.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSNumber.py
@@ -14,12 +14,12 @@
 class ObjCDataFormatterNSNumber(ObjCDataFormatterTestCase):
     SHARED_BUILD_TESTCASE = False
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_nsnumber_with_run_command(self):
         """Test formatters for  NS container classes."""
         self.appkit_tester_impl(self.nscontainers_data_formatter_commands, 
True)
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_nsnumber_with_run_command_no_const(self):
         """Test formatters for  NS container classes."""
         self.appkit_tester_impl(self.nscontainers_data_formatter_commands, 
False)
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSURL.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSURL.py
index 32b7fa0a723ec..e3be62556a2dd 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSURL.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSURL.py
@@ -19,7 +19,7 @@ def test_nsurl_with_run_command(self):
         """Test formatters for NSURL."""
         self.appkit_tester_impl(self.nsurl_data_formatter_commands, True)
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_nsurl_with_run_command_no_const(self):
         """Test formatters for NSURL."""
         self.appkit_tester_impl(self.nsurl_data_formatter_commands, False)
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjNSException.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjNSException.py
index 55f8ba8d462ea..7758558795913 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjNSException.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjNSException.py
@@ -19,7 +19,7 @@ def test_nsexception_with_run_command(self):
         """Test formatters for NSException."""
         self.appkit_tester_impl(self.nsexception_data_formatter_commands, True)
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_nsexception_with_run_command_no_const(self):
         """Test formatters for NSException."""
         self.appkit_tester_impl(self.nsexception_data_formatter_commands, 
False)
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/cmtime/TestDataFormatterCMTime.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/cmtime/TestDataFormatterCMTime.py
index d8298529b45a4..2d5ee9845ae7b 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/cmtime/TestDataFormatterCMTime.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/cmtime/TestDataFormatterCMTime.py
@@ -7,7 +7,7 @@
 
 
 class CMTimeDataFormatterTestCase(TestBase):
-    @skipUnlessDarwin
+    @requireDarwin
     def test_nsindexpath_with_run_command(self):
         """Test formatters for CMTime."""
         self.build()
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/nsindexpath/TestDataFormatterNSIndexPath.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/nsindexpath/TestDataFormatterNSIndexPath.py
index c1c928e109241..46c8673e9a1fe 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/nsindexpath/TestDataFormatterNSIndexPath.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/nsindexpath/TestDataFormatterNSIndexPath.py
@@ -39,7 +39,7 @@ def cleanup():
         self.addTearDownHook(cleanup)
         commands()
 
-    @skipUnlessDarwin
+    @requireDarwin
     @expectedFailureAll(archs=["i386"], bugnumber="rdar://28656605")
     @expectedFailureAll(
         archs=["armv7", "armv7k", "arm64_32"], 
bugnumber="rdar://problem/34561607"
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/nsstring/TestDataFormatterNSString.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/nsstring/TestDataFormatterNSString.py
index 6d50649488b19..b67dedde46763 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/nsstring/TestDataFormatterNSString.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/nsstring/TestDataFormatterNSString.py
@@ -41,19 +41,19 @@ def cleanup():
         self.addTearDownHook(cleanup)
         commands()
 
-    @skipUnlessDarwin
+    @requireDarwin
     @no_debug_info_test
     def test_nsstring_with_run_command(self):
         """Test formatters for NSString."""
         self.appkit_tester_impl(self.nsstring_data_formatter_commands)
 
-    @skipUnlessDarwin
+    @requireDarwin
     @no_debug_info_test
     def test_rdar11106605_with_run_command(self):
         """Check that Unicode characters come out of CFString summary 
correctly."""
         self.appkit_tester_impl(self.rdar11106605_commands)
 
-    @skipUnlessDarwin
+    @requireDarwin
     @no_debug_info_test
     def test_nsstring_withNULS_with_run_command(self):
         """Test formatters for NSString."""
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-proper-plurals/TestFormattersOneIsSingular.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-proper-plurals/TestFormattersOneIsSingular.py
index b508a9fcd1343..93618d502fad0 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-proper-plurals/TestFormattersOneIsSingular.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-proper-plurals/TestFormattersOneIsSingular.py
@@ -10,7 +10,7 @@
 
 
 class DataFormatterOneIsSingularTestCase(TestBase):
-    @skipUnlessDarwin
+    @requireDarwin
     def test_one_is_singular_with_run_command(self):
         """Test that 1 item is not as reported as 1 items."""
         self.build()
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-synthval/TestDataFormatterSynthVal.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-synthval/TestDataFormatterSynthVal.py
index 29a0df1872dc1..a29fad0fca3c5 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-synthval/TestDataFormatterSynthVal.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-synthval/TestDataFormatterSynthVal.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfWasm  # no expression evaluation
+@requireExpressionEvaluation
 class DataFormatterSynthValueTestCase(TestBase):
     def setUp(self):
         # Call super's setUp().
diff --git 
a/lldb/test/API/functionalities/data-formatter/embedded-summary/TestEmbeddedTypeSummary.py
 
b/lldb/test/API/functionalities/data-formatter/embedded-summary/TestEmbeddedTypeSummary.py
index 21b21ea760e76..f8ddb1ac636cc 100644
--- 
a/lldb/test/API/functionalities/data-formatter/embedded-summary/TestEmbeddedTypeSummary.py
+++ 
b/lldb/test/API/functionalities/data-formatter/embedded-summary/TestEmbeddedTypeSummary.py
@@ -5,7 +5,7 @@
 
 
 class TestCase(TestBase):
-    @skipUnlessDarwin
+    @requireDarwin
     def test(self):
         self.build()
         lldbutil.run_to_source_breakpoint(self, "break here", 
lldb.SBFileSpec("main.c"))
diff --git 
a/lldb/test/API/functionalities/data-formatter/nsarraysynth/TestNSArraySynthetic.py
 
b/lldb/test/API/functionalities/data-formatter/nsarraysynth/TestNSArraySynthetic.py
index d1ede930c377f..f0c80461e7930 100644
--- 
a/lldb/test/API/functionalities/data-formatter/nsarraysynth/TestNSArraySynthetic.py
+++ 
b/lldb/test/API/functionalities/data-formatter/nsarraysynth/TestNSArraySynthetic.py
@@ -16,7 +16,7 @@ def setUp(self):
         # Find the line number to break at.
         self.line = line_number("main.m", "// Set break point at this line.")
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_rdar11086338_with_run_command(self):
         """Test that NSArray reports its synthetic children properly."""
         self.build()
diff --git 
a/lldb/test/API/functionalities/data-formatter/nsdictionarysynth/TestNSDictionarySynthetic.py
 
b/lldb/test/API/functionalities/data-formatter/nsdictionarysynth/TestNSDictionarySynthetic.py
index 3bf92b6a7e300..800aff69a99ca 100644
--- 
a/lldb/test/API/functionalities/data-formatter/nsdictionarysynth/TestNSDictionarySynthetic.py
+++ 
b/lldb/test/API/functionalities/data-formatter/nsdictionarysynth/TestNSDictionarySynthetic.py
@@ -17,13 +17,13 @@ def setUp(self):
         # Find the line number to break at.
         self.line = line_number("main.m", "// Set break point at this line.")
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_rdar11988289_with_run_command(self):
         """Test that NSDictionary reports its synthetic children properly."""
         self.build()
         self.run_tests()
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_rdar11988289_with_run_command_no_const(self):
         """Test that NSDictionary reports its synthetic children properly."""
         disable_constant_classes = {
diff --git 
a/lldb/test/API/functionalities/data-formatter/nssetsynth/TestNSSetSynthetic.py 
b/lldb/test/API/functionalities/data-formatter/nssetsynth/TestNSSetSynthetic.py
index 814585d7b9bf1..6eb7017926d58 100644
--- 
a/lldb/test/API/functionalities/data-formatter/nssetsynth/TestNSSetSynthetic.py
+++ 
b/lldb/test/API/functionalities/data-formatter/nssetsynth/TestNSSetSynthetic.py
@@ -18,13 +18,13 @@ def setUp(self):
         # Find the line number to break at.
         self.line = line_number("main.m", "// Set break point at this line.")
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_rdar12529957_with_run_command(self):
         """Test that NSSet reports its synthetic children properly."""
         self.build()
         self.run_tests()
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_rdar12529957_with_run_command_no_const(self):
         """Test that NSSet reports its synthetic children properly."""
         disable_constant_classes = {
diff --git 
a/lldb/test/API/functionalities/data-formatter/ostypeformatting/TestFormattersOsType.py
 
b/lldb/test/API/functionalities/data-formatter/ostypeformatting/TestFormattersOsType.py
index f1f35cb8e97c1..c701e34bb6483 100644
--- 
a/lldb/test/API/functionalities/data-formatter/ostypeformatting/TestFormattersOsType.py
+++ 
b/lldb/test/API/functionalities/data-formatter/ostypeformatting/TestFormattersOsType.py
@@ -16,7 +16,7 @@ def setUp(self):
         # Find the line number to break at.
         self.line = line_number("main.mm", "// Set break point at this line.")
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_ostype_with_run_command(self):
         """Test the formatters we use for OSType."""
         self.build()
diff --git 
a/lldb/test/API/functionalities/data-formatter/poarray/TestPrintObjectArray.py 
b/lldb/test/API/functionalities/data-formatter/poarray/TestPrintObjectArray.py
index 04c9579b4f4cf..3456cdb1b1733 100644
--- 
a/lldb/test/API/functionalities/data-formatter/poarray/TestPrintObjectArray.py
+++ 
b/lldb/test/API/functionalities/data-formatter/poarray/TestPrintObjectArray.py
@@ -12,13 +12,13 @@
 class PrintObjectArrayTestCase(TestBase):
     SHARED_BUILD_TESTCASE = False
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_print_array(self):
         """Test that expr -O -Z works"""
         self.build()
         self.printarray_data_formatter_commands()
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_print_array_no_const(self):
         """Test that expr -O -Z works"""
         disable_constant_classes = {
diff --git 
a/lldb/test/API/functionalities/data-formatter/setvaluefromcstring/TestSetValueFromCString.py
 
b/lldb/test/API/functionalities/data-formatter/setvaluefromcstring/TestSetValueFromCString.py
index 1c713f43671f1..819aede19f36f 100644
--- 
a/lldb/test/API/functionalities/data-formatter/setvaluefromcstring/TestSetValueFromCString.py
+++ 
b/lldb/test/API/functionalities/data-formatter/setvaluefromcstring/TestSetValueFromCString.py
@@ -1,4 +1,4 @@
 from lldbsuite.test import lldbinline
 from lldbsuite.test import decorators
 
-lldbinline.MakeInlineTest(__file__, globals(), [decorators.skipUnlessDarwin])
+lldbinline.MakeInlineTest(__file__, globals(), [decorators.requireDarwin])
diff --git 
a/lldb/test/API/functionalities/data-formatter/synthupdate/TestSyntheticFilterRecompute.py
 
b/lldb/test/API/functionalities/data-formatter/synthupdate/TestSyntheticFilterRecompute.py
index 79f3a760217e1..79aab51083a6d 100644
--- 
a/lldb/test/API/functionalities/data-formatter/synthupdate/TestSyntheticFilterRecompute.py
+++ 
b/lldb/test/API/functionalities/data-formatter/synthupdate/TestSyntheticFilterRecompute.py
@@ -16,7 +16,7 @@ def setUp(self):
         # Find the line number to break at.
         self.line = line_number("main.m", "// Set break point at this line.")
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_rdar12437442_with_run_command(self):
         """Test that we update SBValues correctly as dynamic types change."""
         self.build()
diff --git 
a/lldb/test/API/functionalities/deleted-executable/TestDeletedExecutable.py 
b/lldb/test/API/functionalities/deleted-executable/TestDeletedExecutable.py
index e952d60277a55..688f58e12ec8a 100644
--- a/lldb/test/API/functionalities/deleted-executable/TestDeletedExecutable.py
+++ b/lldb/test/API/functionalities/deleted-executable/TestDeletedExecutable.py
@@ -10,11 +10,11 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfWasm  # attaching requires launching the inferior as a host process
+@requireNotWasm  # attaching requires launching the inferior as a host process
 class TestDeletedExecutable(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
-    @skipIfWindows  # cannot delete a running executable
+    @requireNotWindows  # cannot delete a running executable
     def test(self):
         self.build()
         exe = self.getBuildArtifact("a.out")
diff --git 
a/lldb/test/API/functionalities/disassembler-variables/TestVariableAnnotationsDisassembler.py
 
b/lldb/test/API/functionalities/disassembler-variables/TestVariableAnnotationsDisassembler.py
index 131c20519a75a..07c8050bbcfb0 100644
--- 
a/lldb/test/API/functionalities/disassembler-variables/TestVariableAnnotationsDisassembler.py
+++ 
b/lldb/test/API/functionalities/disassembler-variables/TestVariableAnnotationsDisassembler.py
@@ -7,7 +7,7 @@
 
 # Requires ELF assembler directives (.section … @progbits, .ident, etc.);
 # not compatible with COFF/Mach-O toolchains.
-@skipUnlessPlatform(["linux", "android", "freebsd", "netbsd"])
+@requirePlatform(["linux", "android", "freebsd", "netbsd"])
 class TestVariableAnnotationsDisassembler(TestBase):
     def _build_obj(self, obj_name: str) -> str:
         # Let the Makefile build all .o’s (pattern rule). Then grab the one we 
need.
diff --git a/lldb/test/API/functionalities/exec/TestExec.py 
b/lldb/test/API/functionalities/exec/TestExec.py
index 2332eccf40875..39b5cd41621c8 100644
--- a/lldb/test/API/functionalities/exec/TestExec.py
+++ b/lldb/test/API/functionalities/exec/TestExec.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfWasm  # no exec() on WebAssembly
+@requireNotWasm  # no exec() on WebAssembly
 class ExecTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
@@ -21,7 +21,7 @@ class ExecTestCase(TestBase):
     )  # this exec test has problems on ios systems
     @expectedFailureNetBSD
     @skipIfAsan  # rdar://problem/43756823
-    @skipIfWindows
+    @requirePOSIX
     def test_hitting_exec(self):
         self.do_test(False)
 
@@ -34,7 +34,7 @@ def test_hitting_exec(self):
     )  # this exec test has problems on ios systems
     @expectedFailureNetBSD
     @skipIfAsan  # rdar://problem/43756823
-    @skipIfWindows
+    @requirePOSIX
     def test_skipping_exec(self):
         self.do_test(True)
 
@@ -135,7 +135,7 @@ def cleanup():
     )  # this exec test has problems on ios systems
     @expectedFailureNetBSD
     @skipIfAsan  # rdar://problem/43756823
-    @skipIfWindows
+    @requirePOSIX
     def test_correct_thread_plan_state_before_exec(self):
         """
         In this test we make sure that the Thread* cache in the ThreadPlans
diff --git a/lldb/test/API/functionalities/fat_archives/TestFatArchives.py 
b/lldb/test/API/functionalities/fat_archives/TestFatArchives.py
index 0c2d5df5ef50d..746244338bcb0 100644
--- a/lldb/test/API/functionalities/fat_archives/TestFatArchives.py
+++ b/lldb/test/API/functionalities/fat_archives/TestFatArchives.py
@@ -12,7 +12,7 @@
 class FatArchiveTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_breakpoint_resolution_dwarf(self):
         if self.getArchitecture() == "x86_64":
             self.build()
diff --git 
a/lldb/test/API/functionalities/fork/resumes-child/TestForkResumesChild.py 
b/lldb/test/API/functionalities/fork/resumes-child/TestForkResumesChild.py
index acb46ea239b8a..5fa09f1354a53 100644
--- a/lldb/test/API/functionalities/fork/resumes-child/TestForkResumesChild.py
+++ b/lldb/test/API/functionalities/fork/resumes-child/TestForkResumesChild.py
@@ -9,11 +9,11 @@
 from lldbsuite.test.decorators import *
 
 
-@skipIfWasm  # no fork() on WebAssembly
+@requireNotWasm  # no fork() on WebAssembly
 class TestForkResumesChild(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
-    @skipIfWindows
+    @requirePOSIX
     def test_step_over_fork(self):
         self.build()
         lldbutil.run_to_source_breakpoint(
diff --git 
a/lldb/test/API/functionalities/gdb_remote_client/TestDynamicLoaderDarwin.py 
b/lldb/test/API/functionalities/gdb_remote_client/TestDynamicLoaderDarwin.py
index a5800256f45f6..af65c5e6463ca 100644
--- a/lldb/test/API/functionalities/gdb_remote_client/TestDynamicLoaderDarwin.py
+++ b/lldb/test/API/functionalities/gdb_remote_client/TestDynamicLoaderDarwin.py
@@ -91,7 +91,7 @@
 arm64_binary = 
"cffaedfe0c000001000000000200000010000000e8020000850020000000000019000000480000005f5f504147455a45524f00000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000019000000e80000005f5f54455854000000000000000000000000000001000000004000000000000000000000000000000040000000000000050000000500000002000000000000005f5f74657874000000000000000000005f5f5445585400000000000000000000b03f0000010000000800000000000000b03f0000020000000000000000000000000400800000000000000000000000005f5f756e77696e645f696e666f0000005f5f5445585400000000000000000000b83f0000010000004800000000000000b83f00000200000000000000000000000000000000000000000000000000000019000000480000005f5f4c494e4b45444954000000000000004000000100000000400000000000000040000000000000b8010000000000000100000001000000000000000000000034000080100000000040000038000000330000801000000038400000300000000200000018000000704000000100000080400000180000000b000000500000000000000000000000000000000100000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e000000200000000c0000002f7573722f6c69622f64796c64000000000000001b00000018000000a9981092eb3632f4afd9957e769160d932000000200000000100000000000c0000050c000100000003000000000633032a0000001000000000000000000000002800008018000000b03f00000000000000000000000000000c00000038000000180000000200000001781f05000001002f7573722f6c69622f6c696253797374656d2e422e64796c696200000000000026000000100000006840000008000000290000001000000070400000000000001d00000010000000a04000001801"
 
 
-@skipIfWasm  # exercises the Darwin dynamic loader
+@requireNotWasm  # exercises the Darwin dynamic loader
 class TestDynamicLoaderDarwin(GDBRemoteTestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
diff --git 
a/lldb/test/API/functionalities/gdb_remote_client/TestPlatformKill.py 
b/lldb/test/API/functionalities/gdb_remote_client/TestPlatformKill.py
index ef35b9e6de7c0..fce4b586aa0d7 100644
--- a/lldb/test/API/functionalities/gdb_remote_client/TestPlatformKill.py
+++ b/lldb/test/API/functionalities/gdb_remote_client/TestPlatformKill.py
@@ -6,7 +6,7 @@
 from lldbsuite.test.lldbgdbclient import GDBRemoteTestBase
 
 
-@skipIfWasm  # attaching requires launching the inferior as a host process
+@requireNotWasm  # attaching requires launching the inferior as a host process
 class TestPlatformKill(GDBRemoteTestBase):
     SHARED_BUILD_TESTCASE = False
 
diff --git 
a/lldb/test/API/functionalities/gdb_remote_client/TestPlatformMacOSX.py 
b/lldb/test/API/functionalities/gdb_remote_client/TestPlatformMacOSX.py
index 8b84579f90549..231a996239411 100644
--- a/lldb/test/API/functionalities/gdb_remote_client/TestPlatformMacOSX.py
+++ b/lldb/test/API/functionalities/gdb_remote_client/TestPlatformMacOSX.py
@@ -52,7 +52,7 @@ def test_ios(self):
         )
 
     @skipIfRemote
-    @skipUnlessDarwin
+    @requireDarwin
     @skipUnlessArch("arm64")
     def test_macos(self):
         self.platform_test(
diff --git 
a/lldb/test/API/functionalities/inferior-changed/TestInferiorChanged.py 
b/lldb/test/API/functionalities/inferior-changed/TestInferiorChanged.py
index b1b593d32b748..0b9e4f17ed957 100644
--- a/lldb/test/API/functionalities/inferior-changed/TestInferiorChanged.py
+++ b/lldb/test/API/functionalities/inferior-changed/TestInferiorChanged.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfWasm  # wasm has no memory-protection faults/signals
+@requireNotWasm  # wasm has no memory-protection faults/signals
 class ChangedInferiorTestCase(TestBase):
     SHARED_BUILD_TESTCASE = False
 
diff --git 
a/lldb/test/API/functionalities/inferior-crashing/TestInferiorCrashing.py 
b/lldb/test/API/functionalities/inferior-crashing/TestInferiorCrashing.py
index 09e81425c9535..09ea96bfeaca9 100644
--- a/lldb/test/API/functionalities/inferior-crashing/TestInferiorCrashing.py
+++ b/lldb/test/API/functionalities/inferior-crashing/TestInferiorCrashing.py
@@ -8,7 +8,7 @@
 from lldbsuite.test.lldbtest import *
 
 
-@skipIfWasm  # wasm has no memory-protection faults/signals
+@requireNotWasm  # wasm has no memory-protection faults/signals
 class CrashingInferiorTestCase(TestBase):
     @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24778")
     @expectedFailureNetBSD
diff --git 
a/lldb/test/API/functionalities/inferior-crashing/TestInferiorCrashingStep.py 
b/lldb/test/API/functionalities/inferior-crashing/TestInferiorCrashingStep.py
index 5f7517ed833ac..8db051852a9a9 100644
--- 
a/lldb/test/API/functionalities/inferior-crashing/TestInferiorCrashingStep.py
+++ 
b/lldb/test/API/functionalities/inferior-crashing/TestInferiorCrashingStep.py
@@ -8,7 +8,7 @@
 from lldbsuite.test.lldbtest import *
 
 
-@skipIfWasm  # wasm has no memory-protection faults/signals
+@requireNotWasm  # wasm has no memory-protection faults/signals
 class CrashingInferiorStepTestCase(TestBase):
     @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24778")
     @expectedFailureNetBSD
diff --git 
a/lldb/test/API/functionalities/inferior-crashing/recursive-inferior/TestRecursiveInferior.py
 
b/lldb/test/API/functionalities/inferior-crashing/recursive-inferior/TestRecursiveInferior.py
index 1192445102b16..44d144d4df8ff 100644
--- 
a/lldb/test/API/functionalities/inferior-crashing/recursive-inferior/TestRecursiveInferior.py
+++ 
b/lldb/test/API/functionalities/inferior-crashing/recursive-inferior/TestRecursiveInferior.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfWasm  # wasm has no memory-protection faults/signals
+@requireNotWasm  # wasm has no memory-protection faults/signals
 class CrashingRecursiveInferiorTestCase(TestBase):
     @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24778")
     @expectedFailureNetBSD
diff --git 
a/lldb/test/API/functionalities/inferior-crashing/recursive-inferior/TestRecursiveInferiorStep.py
 
b/lldb/test/API/functionalities/inferior-crashing/recursive-inferior/TestRecursiveInferiorStep.py
index 9eb181c2e8827..625f4467802d7 100644
--- 
a/lldb/test/API/functionalities/inferior-crashing/recursive-inferior/TestRecursiveInferiorStep.py
+++ 
b/lldb/test/API/functionalities/inferior-crashing/recursive-inferior/TestRecursiveInferiorStep.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfWasm  # wasm has no memory-protection faults/signals
+@requireNotWasm  # wasm has no memory-protection faults/signals
 class CrashingRecursiveInferiorStepTestCase(TestBase):
     def test_recursive_inferior_crashing_step(self):
         """Test that stepping after a crash behaves correctly."""
diff --git a/lldb/test/API/functionalities/load_unload/TestLoadUnload.py 
b/lldb/test/API/functionalities/load_unload/TestLoadUnload.py
index 97ca9f84b203d..b0290a3217196 100644
--- a/lldb/test/API/functionalities/load_unload/TestLoadUnload.py
+++ b/lldb/test/API/functionalities/load_unload/TestLoadUnload.py
@@ -99,7 +99,7 @@ def setSvr4Support(self, enabled):
     # dependencies are resolved relative to the debuggers PWD. Bug?
     @expectedFailureAll(oslist=["freebsd", "linux", "netbsd"])
     @skipIfRemote
-    @skipIfWindows  # Windows doesn't have dlopen and friends, dynamic 
libraries work differently
+    @requirePOSIX  # Windows doesn't have dlopen and friends, dynamic 
libraries work differently
     def test_modules_search_paths(self):
         """Test target modules list after loading a different copy of the 
library libd.dylib, and verifies that it works with 'target modules 
search-paths add'."""
         if self.platformIsDarwin():
@@ -156,7 +156,7 @@ def test_modules_search_paths(self):
     # dependencies are resolved relative to the debuggers PWD. Bug?
     @expectedFailureAll(oslist=["freebsd", "linux", "netbsd"])
     @expectedFailureAndroid  # wrong source file shows up for hidden library
-    @skipIfWindows  # Windows doesn't have dlopen and friends, dynamic 
libraries work differently
+    @requirePOSIX  # Windows doesn't have dlopen and friends, dynamic 
libraries work differently
     @skipIfDarwinEmbedded
     def test_dyld_library_path(self):
         """Test (DY)LD_LIBRARY_PATH after moving libd.dylib, which defines 
d_function, somewhere else."""
diff --git 
a/lldb/test/API/functionalities/load_using_paths/TestLoadUsingPaths.py 
b/lldb/test/API/functionalities/load_using_paths/TestLoadUsingPaths.py
index 6a97e81ef1f67..23c7eab3327b3 100644
--- a/lldb/test/API/functionalities/load_using_paths/TestLoadUsingPaths.py
+++ b/lldb/test/API/functionalities/load_using_paths/TestLoadUsingPaths.py
@@ -34,7 +34,7 @@ def setUp(self):
         self.hidden_lib = os.path.join(self.hidden_dir, self.lib_name)
 
     @skipIfRemote
-    @skipIfWindows  # Windows doesn't have dlopen and friends, dynamic 
libraries work differently
+    @requirePOSIX  # Windows doesn't have dlopen and friends, dynamic 
libraries work differently
     @expectedFlakeyNetBSD
     @expectedFailureAll(oslist=["linux"], archs=["arm$"], 
bugnumber="llvm.org/pr45894")
     def test_load_using_paths(self):
diff --git a/lldb/test/API/functionalities/longjmp/TestLongjmp.py 
b/lldb/test/API/functionalities/longjmp/TestLongjmp.py
index 9ac4b667b3afc..91bf789e6c9a7 100644
--- a/lldb/test/API/functionalities/longjmp/TestLongjmp.py
+++ b/lldb/test/API/functionalities/longjmp/TestLongjmp.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfWasm  # setjmp/longjmp on wasm requires exception-handling support
+@requireNotWasm  # setjmp/longjmp on wasm requires exception-handling support
 class LongjmpTestCase(TestBase):
     @skipIfDarwin  # llvm.org/pr16769: LLDB on Mac OS X dies in function 
ReadRegisterBytes in GDBRemoteRegisterContext.cpp
     @skipIfWindows # Test is flaky on Windows
diff --git a/lldb/test/API/functionalities/longpath/TestLongPath.py 
b/lldb/test/API/functionalities/longpath/TestLongPath.py
index 28e0df4859316..62e2b866fe49b 100644
--- a/lldb/test/API/functionalities/longpath/TestLongPath.py
+++ b/lldb/test/API/functionalities/longpath/TestLongPath.py
@@ -14,7 +14,7 @@
 MAX_PATH = 260
 
 
-@skipUnlessWindows
+@requireWindows
 class LongPathTargetTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
diff --git a/lldb/test/API/functionalities/memory/find/TestMemoryFind.py 
b/lldb/test/API/functionalities/memory/find/TestMemoryFind.py
index 2fc05db52ffc7..0ec9b0bd4296f 100644
--- a/lldb/test/API/functionalities/memory/find/TestMemoryFind.py
+++ b/lldb/test/API/functionalities/memory/find/TestMemoryFind.py
@@ -16,7 +16,7 @@ def setUp(self):
         # Find the line number to break inside main().
         self.line = line_number("main.cpp", "// break here")
 
-    @skipIfWasm  # no expression evaluation (memory find calls strlen())
+    @requireExpressionEvaluation (memory find calls strlen())
     def test_memory_find(self):
         """Test the 'memory find' command."""
         self.build()
diff --git a/lldb/test/API/functionalities/memory/holes/TestMemoryHoles.py 
b/lldb/test/API/functionalities/memory/holes/TestMemoryHoles.py
index ddcc9fb134951..2921d41a7a6c3 100644
--- a/lldb/test/API/functionalities/memory/holes/TestMemoryHoles.py
+++ b/lldb/test/API/functionalities/memory/holes/TestMemoryHoles.py
@@ -9,7 +9,7 @@
 from lldbsuite.test.decorators import *
 
 
-@skipIfWasm  # WASI has no mmap
+@requireNotWasm  # WASI has no mmap
 class MemoryHolesTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
diff --git 
a/lldb/test/API/functionalities/module_cache/bsd/TestModuleCacheBSD.py 
b/lldb/test/API/functionalities/module_cache/bsd/TestModuleCacheBSD.py
index 180d487fd4845..8908d669d9a6c 100644
--- a/lldb/test/API/functionalities/module_cache/bsd/TestModuleCacheBSD.py
+++ b/lldb/test/API/functionalities/module_cache/bsd/TestModuleCacheBSD.py
@@ -36,7 +36,7 @@ def get_module_cache_files(self, basename):
 
     # Requires no dSYM, so we let the Makefile make the right stuff for us
     @no_debug_info_test
-    @skipUnlessDarwin
+    @requireDarwin
     def test(self):
         """
         This test has been modified to make sure .o files that don't have
diff --git 
a/lldb/test/API/functionalities/module_cache/simple_exe/TestModuleCacheSimple.py
 
b/lldb/test/API/functionalities/module_cache/simple_exe/TestModuleCacheSimple.py
index 97565d8e59e83..9895720e25629 100644
--- 
a/lldb/test/API/functionalities/module_cache/simple_exe/TestModuleCacheSimple.py
+++ 
b/lldb/test/API/functionalities/module_cache/simple_exe/TestModuleCacheSimple.py
@@ -9,7 +9,7 @@
 import time
 
 
-@skipIfWasm  # modules carry no build ID to cache on
+@requireNotWasm  # modules carry no build ID to cache on
 class ModuleCacheTestcaseSimple(TestBase):
     SHARED_BUILD_TESTCASE = False
 
diff --git a/lldb/test/API/functionalities/mtc/simple/TestMTCSimple.py 
b/lldb/test/API/functionalities/mtc/simple/TestMTCSimple.py
index 4675b4a6546d3..ca04dcf33b261 100644
--- a/lldb/test/API/functionalities/mtc/simple/TestMTCSimple.py
+++ b/lldb/test/API/functionalities/mtc/simple/TestMTCSimple.py
@@ -11,7 +11,7 @@
 
 
 class MTCSimpleTestCase(TestBase):
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIf(compiler="clang", compiler_version=["<", "9.0"])
     def test(self):
         self.mtc_dylib_path = findMainThreadCheckerDylib()
diff --git a/lldb/test/API/functionalities/paths/TestPaths.py 
b/lldb/test/API/functionalities/paths/TestPaths.py
index 29aa6f943ae42..857d00932dce9 100644
--- a/lldb/test/API/functionalities/paths/TestPaths.py
+++ b/lldb/test/API/functionalities/paths/TestPaths.py
@@ -69,7 +69,7 @@ def test_directory_doesnt_end_with_slash(self):
         current_directory_string = current_directory_spec.GetDirectory()
         self.assertNotEqual(current_directory_string[-1:], "/")
 
-    @skipUnlessPlatform(["windows"])
+    @requirePlatform(["windows"])
     @no_debug_info_test
     def test_windows_double_slash(self):
         """Test to check the path with double slash is handled correctly"""
diff --git 
a/lldb/test/API/functionalities/plugins/python_os_plugin/os_plugin_in_dsym/TestOSIndSYM.py
 
b/lldb/test/API/functionalities/plugins/python_os_plugin/os_plugin_in_dsym/TestOSIndSYM.py
index 078e4762baab0..2ef3322392971 100644
--- 
a/lldb/test/API/functionalities/plugins/python_os_plugin/os_plugin_in_dsym/TestOSIndSYM.py
+++ 
b/lldb/test/API/functionalities/plugins/python_os_plugin/os_plugin_in_dsym/TestOSIndSYM.py
@@ -41,7 +41,7 @@ def port_not_available(self):
             return "{} not available".format(self.PORT)
         return None
 
-    @skipUnlessDarwin
+    @requireDarwin
     @skip(bugnumber="github.com/llvm/llvm-project/issues/213380")
     def test_python_os_plugin(self):
         """Test that the OS plugin in a dSYM works on attach."""
diff --git 
a/lldb/test/API/functionalities/postmortem/FreeBSD-Kernel-Core/TestFreeBSDKernelVMCore.py
 
b/lldb/test/API/functionalities/postmortem/FreeBSD-Kernel-Core/TestFreeBSDKernelVMCore.py
index 3e5007d90e0cf..db79aa7efa1cf 100644
--- 
a/lldb/test/API/functionalities/postmortem/FreeBSD-Kernel-Core/TestFreeBSDKernelVMCore.py
+++ 
b/lldb/test/API/functionalities/postmortem/FreeBSD-Kernel-Core/TestFreeBSDKernelVMCore.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipUnlessPlatform(["freebsd"])
+@requirePlatform(["freebsd"])
 class FreeBSDKernelVMCoreTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
     maxDiff = None
diff --git 
a/lldb/test/API/functionalities/process_crash_info/TestProcessCrashInfo.py 
b/lldb/test/API/functionalities/process_crash_info/TestProcessCrashInfo.py
index 835b9c72a4be2..acd299f4e179b 100644
--- a/lldb/test/API/functionalities/process_crash_info/TestProcessCrashInfo.py
+++ b/lldb/test/API/functionalities/process_crash_info/TestProcessCrashInfo.py
@@ -33,7 +33,7 @@ def containsLibmallocError(self, output):
         return False
 
     @skipIfAsan  # The test process intentionally double-frees.
-    @skipUnlessDarwin
+    @requireDarwin
     def test_cli(self):
         """Test that `process status --verbose` fetches the extended crash
         information dictionary from the command-line properly."""
@@ -53,7 +53,7 @@ def test_cli(self):
         self.assertTrue(self.containsLibmallocError(result.GetOutput()))
 
     @skipIfAsan  # The test process intentionally hits a memory bug.
-    @skipUnlessDarwin
+    @requireDarwin
     def test_api(self):
         """Test that lldb can fetch a crashed process' extended crash 
information
         dictionary from the api properly."""
diff --git 
a/lldb/test/API/functionalities/process_group/TestChangeProcessGroup.py 
b/lldb/test/API/functionalities/process_group/TestChangeProcessGroup.py
index 54dc4fe935285..d02733c40b41d 100644
--- a/lldb/test/API/functionalities/process_group/TestChangeProcessGroup.py
+++ b/lldb/test/API/functionalities/process_group/TestChangeProcessGroup.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfWasm  # no fork()/setpgid() on WebAssembly
+@requireNotWasm  # no fork()/setpgid() on WebAssembly
 class ChangeProcessGroupTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
@@ -19,7 +19,7 @@ def setUp(self):
         self.line = line_number("main.c", "// Set breakpoint here")
 
     @skipIfFreeBSD  # Times out on FreeBSD llvm.org/pr23731
-    @skipIfWindows  # setpgid call does not exist on Windows
+    @requirePOSIX  # setpgid call does not exist on Windows
     @expectedFailureAndroid("http://llvm.org/pr23762";, api_levels=[16])
     @expectedFailureNetBSD
     @skipIftvOS  # fork not available on tvOS.
diff --git 
a/lldb/test/API/functionalities/process_save_core/TestProcessSaveCore.py 
b/lldb/test/API/functionalities/process_save_core/TestProcessSaveCore.py
index c797150cdf89c..c70be76af1bb6 100644
--- a/lldb/test/API/functionalities/process_save_core/TestProcessSaveCore.py
+++ b/lldb/test/API/functionalities/process_save_core/TestProcessSaveCore.py
@@ -62,7 +62,7 @@ def test_save_windows_mini_dump(self):
             if os.path.isfile(core):
                 os.unlink(core)
 
-    @skipUnlessPlatform(["freebsd", "netbsd"])
+    @requirePlatform(["freebsd", "netbsd"])
     def test_save_core_via_process_plugin(self):
         self.build()
         exe = self.getBuildArtifact("a.out")
diff --git a/lldb/test/API/functionalities/ptr_refs/TestPtrRefs.py 
b/lldb/test/API/functionalities/ptr_refs/TestPtrRefs.py
index d04a15eed10ab..11fac32ae51a6 100644
--- a/lldb/test/API/functionalities/ptr_refs/TestPtrRefs.py
+++ b/lldb/test/API/functionalities/ptr_refs/TestPtrRefs.py
@@ -12,7 +12,7 @@
 class TestPtrRefs(TestBase):
     @skipIfAsan  # The output looks different under ASAN.
     @skipIfMTE  # Heap scanning reads tagged memory with untagged pointers.
-    @skipUnlessDarwin
+    @requireDarwin
     def test_ptr_refs(self):
         """Test format string functionality."""
         self.build()
diff --git a/lldb/test/API/functionalities/rerun_and_expr/TestRerunAndExpr.py 
b/lldb/test/API/functionalities/rerun_and_expr/TestRerunAndExpr.py
index 6170c86e0c754..69e697fcaafe0 100644
--- a/lldb/test/API/functionalities/rerun_and_expr/TestRerunAndExpr.py
+++ b/lldb/test/API/functionalities/rerun_and_expr/TestRerunAndExpr.py
@@ -10,7 +10,7 @@
 from lldbsuite.test.decorators import *
 
 
-@skipIfWasm  # no expression evaluation
+@requireExpressionEvaluation
 class TestRerunExpr(TestBase):
     SHARED_BUILD_TESTCASE = False
 
diff --git 
a/lldb/test/API/functionalities/rerun_and_expr_dylib/TestRerunAndExprDylib.py 
b/lldb/test/API/functionalities/rerun_and_expr_dylib/TestRerunAndExprDylib.py
index 9f6c3cfbe1b34..e3fa56d1403dd 100644
--- 
a/lldb/test/API/functionalities/rerun_and_expr_dylib/TestRerunAndExprDylib.py
+++ 
b/lldb/test/API/functionalities/rerun_and_expr_dylib/TestRerunAndExprDylib.py
@@ -28,7 +28,7 @@ def isUbuntu18_04():
     return None
 
 
-@skipIfWasm  # no expression evaluation
+@requireExpressionEvaluation
 class TestRerunExprDylib(TestBase):
     SHARED_BUILD_TESTCASE = False
 
diff --git a/lldb/test/API/functionalities/return-value/TestReturnValue.py 
b/lldb/test/API/functionalities/return-value/TestReturnValue.py
index 9b155d071b6e4..b5c90d31a0f6d 100644
--- a/lldb/test/API/functionalities/return-value/TestReturnValue.py
+++ b/lldb/test/API/functionalities/return-value/TestReturnValue.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfWasm  # return value is unrecoverable from the operand stack at a 
step-out
+@requireNotWasm  # return value is unrecoverable from the operand stack at a 
step-out
 class ReturnValueTestCase(TestBase):
     def affected_by_pr33042(self):
         return (
diff --git 
a/lldb/test/API/functionalities/reverse-execution/TestReverseContinueBreakpoints.py
 
b/lldb/test/API/functionalities/reverse-execution/TestReverseContinueBreakpoints.py
index d177d52f43ce0..6352f42be7051 100644
--- 
a/lldb/test/API/functionalities/reverse-execution/TestReverseContinueBreakpoints.py
+++ 
b/lldb/test/API/functionalities/reverse-execution/TestReverseContinueBreakpoints.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfWasm  # no reverse execution
+@requireNotWasm  # no reverse execution
 class TestReverseContinueBreakpoints(ReverseTestBase):
     @skipIfRemote
     def test_reverse_continue(self):
diff --git 
a/lldb/test/API/functionalities/reverse-execution/TestReverseContinueWatchpoints.py
 
b/lldb/test/API/functionalities/reverse-execution/TestReverseContinueWatchpoints.py
index 0e080c8fc1940..47a3464b99fa4 100644
--- 
a/lldb/test/API/functionalities/reverse-execution/TestReverseContinueWatchpoints.py
+++ 
b/lldb/test/API/functionalities/reverse-execution/TestReverseContinueWatchpoints.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfWasm  # no reverse execution
+@requireNotWasm  # no reverse execution
 class TestReverseContinueWatchpoints(ReverseTestBase):
     @skipIfRemote
     # Watchpoints don't work in single-step mode
diff --git 
a/lldb/test/API/functionalities/scripted_frame_provider/TestScriptedFrameProvider.py
 
b/lldb/test/API/functionalities/scripted_frame_provider/TestScriptedFrameProvider.py
index 58eae50a4d76f..86ece605ce660 100644
--- 
a/lldb/test/API/functionalities/scripted_frame_provider/TestScriptedFrameProvider.py
+++ 
b/lldb/test/API/functionalities/scripted_frame_provider/TestScriptedFrameProvider.py
@@ -10,7 +10,7 @@
 from lldbsuite.test.lldbtest import TestBase
 from lldbsuite.test import lldbutil
 
-@skipIfWasm  # multithreaded C++ inferior; wasm has no threads or exceptions
+@requireNotWasm  # multithreaded C++ inferior; wasm has no threads or 
exceptions
 class ScriptedFrameProviderTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
diff --git 
a/lldb/test/API/functionalities/scripted_frame_provider/thread_filter/TestFrameProviderThreadFilter.py
 
b/lldb/test/API/functionalities/scripted_frame_provider/thread_filter/TestFrameProviderThreadFilter.py
index ffaece44423fa..ff6a3a2b7c7d0 100644
--- 
a/lldb/test/API/functionalities/scripted_frame_provider/thread_filter/TestFrameProviderThreadFilter.py
+++ 
b/lldb/test/API/functionalities/scripted_frame_provider/thread_filter/TestFrameProviderThreadFilter.py
@@ -10,7 +10,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfWasm  # multithreaded C++ inferior; wasm has no threads or exceptions
+@requireNotWasm  # multithreaded C++ inferior; wasm has no threads or 
exceptions
 class FrameProviderThreadFilterTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
diff --git 
a/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py 
b/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py
index f90a7422d270a..93a426f397b5b 100644
--- a/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py
+++ b/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py
@@ -112,7 +112,7 @@ def cleanup():
             log,
         )
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_invalid_scripted_register_context(self):
         """Test that we can launch an lldb scripted process with an invalid
         Scripted Thread, with invalid register context."""
diff --git a/lldb/test/API/functionalities/signal/TestSendSignal.py 
b/lldb/test/API/functionalities/signal/TestSendSignal.py
index d5dd093fc1557..b8623076b2ce0 100644
--- a/lldb/test/API/functionalities/signal/TestSendSignal.py
+++ b/lldb/test/API/functionalities/signal/TestSendSignal.py
@@ -7,7 +7,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfNoSignals
+@requireSignals
 class SendSignalTestCase(TestBase):
     def setUp(self):
         # Call super's setUp().
@@ -16,7 +16,7 @@ def setUp(self):
         self.line = line_number("main.c", "Put breakpoint here")
 
     @expectedFailureNetBSD(bugnumber="llvm.org/pr43959")
-    @skipIfWindows  # Windows does not support signals
+    @requirePOSIX  # Windows does not support signals
     def test_with_run_command(self):
         """Test that lldb command 'process signal SIGUSR1' sends a signal to 
the inferior process."""
         self.build()
diff --git 
a/lldb/test/API/functionalities/signal/handle-abrt/TestHandleAbort.py 
b/lldb/test/API/functionalities/signal/handle-abrt/TestHandleAbort.py
index 77e760db8ba04..d3350c04dad54 100644
--- a/lldb/test/API/functionalities/signal/handle-abrt/TestHandleAbort.py
+++ b/lldb/test/API/functionalities/signal/handle-abrt/TestHandleAbort.py
@@ -7,7 +7,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfNoSignals
+@requireSignals
 class HandleAbortTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
diff --git a/lldb/test/API/functionalities/signal/handle-segv/TestHandleSegv.py 
b/lldb/test/API/functionalities/signal/handle-segv/TestHandleSegv.py
index f1f568a8b80a7..18e41b74f86b7 100644
--- a/lldb/test/API/functionalities/signal/handle-segv/TestHandleSegv.py
+++ b/lldb/test/API/functionalities/signal/handle-segv/TestHandleSegv.py
@@ -7,7 +7,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfNoSignals
+@requireSignals
 class HandleSegvTestCase(TestBase):
     @skipIfDarwin
     @expectedFailureNetBSD
diff --git a/lldb/test/API/functionalities/signal/raise/TestRaise.py 
b/lldb/test/API/functionalities/signal/raise/TestRaise.py
index cc3544a6121e8..aa3a6db9405ba 100644
--- a/lldb/test/API/functionalities/signal/raise/TestRaise.py
+++ b/lldb/test/API/functionalities/signal/raise/TestRaise.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfNoSignals
+@requireSignals
 class RaiseTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
@@ -20,7 +20,7 @@ def test_sigstop(self):
         # passing of SIGSTOP is not correctly handled, so not testing that
         # scenario: https://llvm.org/bugs/show_bug.cgi?id=23574
 
-    @skipIfDarwin  # darwin does not support real time signals
+    @requireNotDarwin  # darwin does not support real time signals
     @skipIfTargetAndroid()
     def test_sigsigrtmin(self):
         self.build()
diff --git 
a/lldb/test/API/functionalities/tail_call_frames/ambiguous_tail_call_seq1/TestAmbiguousTailCallSeq1.py
 
b/lldb/test/API/functionalities/tail_call_frames/ambiguous_tail_call_seq1/TestAmbiguousTailCallSeq1.py
index 6d53aa4449b93..be869a8cdc039 100644
--- 
a/lldb/test/API/functionalities/tail_call_frames/ambiguous_tail_call_seq1/TestAmbiguousTailCallSeq1.py
+++ 
b/lldb/test/API/functionalities/tail_call_frames/ambiguous_tail_call_seq1/TestAmbiguousTailCallSeq1.py
@@ -3,7 +3,7 @@
 
 decorators = [
     decorators.skipUnlessHasCallSiteInfo,
-    decorators.skipIfWasm,  # no unwinder support for tail-call frames
+    decorators.requireNotWasm,  # no unwinder support for tail-call frames
     decorators.skipIf(dwarf_version=["<", "4"]),
 ]
 lldbinline.MakeInlineTest(
diff --git 
a/lldb/test/API/functionalities/tail_call_frames/ambiguous_tail_call_seq2/TestAmbiguousTailCallSeq2.py
 
b/lldb/test/API/functionalities/tail_call_frames/ambiguous_tail_call_seq2/TestAmbiguousTailCallSeq2.py
index 37f015538813e..bb783fae80822 100644
--- 
a/lldb/test/API/functionalities/tail_call_frames/ambiguous_tail_call_seq2/TestAmbiguousTailCallSeq2.py
+++ 
b/lldb/test/API/functionalities/tail_call_frames/ambiguous_tail_call_seq2/TestAmbiguousTailCallSeq2.py
@@ -3,7 +3,7 @@
 
 decorators = [
     decorators.skipUnlessHasCallSiteInfo,
-    decorators.skipIfWasm,  # no unwinder support for tail-call frames
+    decorators.requireNotWasm,  # no unwinder support for tail-call frames
     decorators.skipIf(dwarf_version=["<", "4"]),
 ]
 lldbinline.MakeInlineTest(
diff --git 
a/lldb/test/API/functionalities/tail_call_frames/cross_object/TestCrossObjectTailCalls.py
 
b/lldb/test/API/functionalities/tail_call_frames/cross_object/TestCrossObjectTailCalls.py
index c91c86a24f928..ab3d939c25ce9 100644
--- 
a/lldb/test/API/functionalities/tail_call_frames/cross_object/TestCrossObjectTailCalls.py
+++ 
b/lldb/test/API/functionalities/tail_call_frames/cross_object/TestCrossObjectTailCalls.py
@@ -7,7 +7,7 @@
 from lldbsuite.test import lldbutil
 
 
-@skipIfWasm  # no unwinder support for tail-call frames
+@requireNotWasm  # no unwinder support for tail-call frames
 class TestCrossObjectTailCalls(TestBase):
     @skipIf(compiler="clang", compiler_version=["<", "22.0"])
     @skipIf(dwarf_version=["<", "4"])
diff --git 
a/lldb/test/API/functionalities/tail_call_frames/disambiguate_call_site/TestDisambiguateCallSite.py
 
b/lldb/test/API/functionalities/tail_call_frames/disambiguate_call_site/TestDisambiguateCallSite.py
index 5e0a048ed4b9e..1a610c57e319d 100644
--- 
a/lldb/test/API/functionalities/tail_call_frames/disambiguate_call_site/TestDisambiguateCallSite.py
+++ 
b/lldb/test/API/functionalities/tail_call_frames/disambiguate_call_site/TestDisambiguateCallSite.py
@@ -3,7 +3,7 @@
 
 decor = [
     decorators.skipUnlessHasCallSiteInfo,
-    decorators.skipIfWasm,  # no unwinder support for tail-call frames
+    decorators.requireNotWasm,  # no unwinder support for tail-call frames
     decorators.skipIf(dwarf_version=["<", "4"]),
     decorators.skipIf(compiler="clang", compiler_version=["<", "11.0"]),
 ]
diff --git 
a/lldb/test/API/functionalities/tail_call_frames/disambiguate_paths_to_common_sink/TestDisambiguatePathsToCommonSink.py
 
b/lldb/test/API/functionalities/tail_call_frames/disambiguate_paths_to_common_sink/TestDisambiguatePathsToCommonSink.py
index 93b317af5e863..3746fc62469d2 100644
--- 
a/lldb/test/API/functionalities/tail_call_frames/disambiguate_paths_to_common_sink/TestDisambiguatePathsToCommonSink.py
+++ 
b/lldb/test/API/functionalities/tail_call_frames/disambiguate_paths_to_common_sink/TestDisambiguatePathsToCommonSink.py
@@ -3,7 +3,7 @@
 
 decor = [
     decorators.skipUnlessHasCallSiteInfo,
-    decorators.skipIfWasm,  # no unwinder support for tail-call frames
+    decorators.requireNotWasm,  # no unwinder support for tail-call frames
     decorators.skipIf(dwarf_version=["<", "4"]),
     decorators.skipIf(compiler="clang", compiler_version=["<", "11.0"]),
 ]
diff --git 
a/lldb/test/API/functionalities/tail_call_frames/disambiguate_tail_call_seq/TestDisambiguateTailCallSeq.py
 
b/lldb/test/API/functionalities/tail_call_frames/disambiguate_tail_call_seq/TestDisambiguateTailCallSeq.py
index c52abf49ca42f..783511ae2b497 100644
--- 
a/lldb/test/API/functionalities/tail_call_frames/disambiguate_tail_call_seq/TestDisambiguateTailCallSeq.py
+++ 
b/lldb/test/API/functionalities/tail_call_frames/disambiguate_tail_call_seq/TestDisambiguateTailCallSeq.py
@@ -3,7 +3,7 @@
 
 decor = [
     decorators.skipUnlessHasCallSiteInfo,
-    decorators.skipIfWasm,  # no unwinder support for tail-call frames
+    decorators.requireNotWasm,  # no unwinder support for tail-call frames
     decorators.skipIf(dwarf_version=["<", "4"]),
     decorators.skipIf(compiler="clang", compiler_version=["<", "11.0"]),
 ]
diff --git 
a/lldb/test/API/functionalities/tail_call_frames/inlining_and_tail_calls/TestInliningAndTailCalls.py
 
b/lldb/test/API/functionalities/tail_call_frames/inlining_and_tail_calls/TestInliningAndTailCalls.py
index 8382870044bb6..ec4e08aaae767 100644
--- 
a/lldb/test/API/functionalities/tail_call_frames/inlining_and_tail_calls/TestInliningAndTailCalls.py
+++ 
b/lldb/test/API/functionalities/tail_call_frames/inlining_and_tail_calls/TestInliningAndTailCalls.py
@@ -3,7 +3,7 @@
 
 decor = [
     decorators.skipUnlessHasCallSiteInfo,
-    decorators.skipIfWasm,  # no unwinder support for tail-call frames
+    decorators.requireNotWasm,  # no unwinder support for tail-call frames
     decorators.skipIf(dwarf_version=["<", "4"]),
     decorators.skipIf(compiler="clang", compiler_version=["<", "11.0"]),
 ]
diff --git 
a/lldb/test/API/functionalities/tail_call_frames/sbapi_support/TestTailCallFrameSBAPI.py
 
b/lldb/test/API/functionalities/tail_call_frames/sbapi_support/TestTailCallFrameSBAPI.py
index 4c1649d603615..778d0628f6127 100644
--- 
a/lldb/test/API/functionalities/tail_call_frames/sbapi_support/TestTailCallFrameSBAPI.py
+++ 
b/lldb/test/API/functionalities/tail_call_frames/sbapi_support/TestTailCallFrameSBAPI.py
@@ -8,7 +8,7 @@
 from lldbsuite.test.lldbtest import *
 
 
-@skipIfWasm  # no unwinder support for tail-call frames
+@requireNotWasm  # no unwinder support for tail-call frames
 class TestTailCallFrameSBAPI(TestBase):
     @skipIf(compiler="clang", compiler_version=["<", "10.0"])
     @skipIf(dwarf_version=["<", "4"])
diff --git 
a/lldb/test/API/functionalities/tail_call_frames/thread_step_out_message/TestArtificialFrameStepOutMessage.py
 
b/lldb/test/API/functionalities/tail_call_frames/thread_step_out_message/TestArtificialFrameStepOutMessage.py
index 13482b58ae7c9..7f8a6f696c801 100644
--- 
a/lldb/test/API/functionalities/tail_call_frames/thread_step_out_message/TestArtificialFrameStepOutMessage.py
+++ 
b/lldb/test/API/functionalities/tail_call_frames/thread_step_out_message/TestArtificialFrameStepOutMessage.py
@@ -3,7 +3,7 @@
 
 decor = [
     decorators.skipUnlessHasCallSiteInfo,
-    decorators.skipIfWasm,  # no unwinder support for tail-call frames
+    decorators.requireNotWasm,  # no unwinder support for tail-call frames
     decorators.skipIf(dwarf_version=["<", "4"]),
     decorators.skipIf(compiler="clang", compiler_version=["<", "11.0"]),
 ]
diff --git 
a/lldb/test/API/functionalities/tail_call_frames/thread_step_out_or_return/TestSteppingOutWithArtificialFrames.py
 
b/lldb/test/API/functionalities/tail_call_frames/thread_step_out_or_return/TestSteppingOutWithArtificialFrames.py
index b3625398ccf33..73a07f1e35c63 100644
--- 
a/lldb/test/API/functionalities/tail_call_frames/thread_step_out_or_return/TestSteppingOutWithArtificialFrames.py
+++ 
b/lldb/test/API/functionalities/tail_call_frames/thread_step_out_or_return/TestSteppingOutWithArtificialFrames.py
@@ -8,7 +8,7 @@
 from lldbsuite.test.lldbtest import *
 
 
-@skipIfWasm  # no unwinder support for tail-call frames
+@requireNotWasm  # no unwinder support for tail-call frames
 class TestArtificialFrameThreadStepOut1(TestBase):
     # If your test case doesn't stress debug info, then
     # set this to true.  That way it won't be run once for
diff --git 
a/lldb/test/API/functionalities/tail_call_frames/unambiguous_sequence/TestUnambiguousTailCalls.py
 
b/lldb/test/API/functionalities/tail_call_frames/unambiguous_sequence/TestUnambiguousTailCalls.py
index c37279be0c41f..7518acf6ba855 100644
--- 
a/lldb/test/API/functionalities/tail_call_frames/unambiguous_sequence/TestUnambiguousTailCalls.py
+++ 
b/lldb/test/API/functionalities/tail_call_frames/unambiguous_sequence/TestUnambiguousTailCalls.py
@@ -3,7 +3,7 @@
 
 decor = [
     decorators.skipUnlessHasCallSiteInfo,
-    decorators.skipIfWasm,  # no unwinder support for tail-call frames
+    decorators.requireNotWasm,  # no unwinder support for tail-call frames
     decorators.skipIf(archs=["arm$"], oslist=["linux"]),
     decorators.skipIf(dwarf_version=["<", "4"]),
     decorators.skipIf(compiler="clang", compiler_version=["<", "11.0"]),
diff --git a/lldb/test/API/functionalities/type_lookup/TestTypeLookup.py 
b/lldb/test/API/functionalities/type_lookup/TestTypeLookup.py
index 330a5e8fe110d..0234c79c70b5d 100644
--- a/lldb/test/API/functionalities/type_lookup/TestTypeLookup.py
+++ b/lldb/test/API/functionalities/type_lookup/TestTypeLookup.py
@@ -16,7 +16,7 @@ def setUp(self):
         # Find the line number to break at.
         self.line = line_number("main.mm", "// break here")
 
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIf(archs=["i386"])
     def test_type_lookup(self):
         """Test type lookup command."""

>From b05fea060ae06e9b1e04f0794a056e36beb51766 Mon Sep 17 00:00:00 2001
From: Charles Zablit <[email protected]>
Date: Mon, 10 Aug 2026 15:46:26 +0200
Subject: [PATCH 2/2] fixup! [lldb] Convert functionalities test to use require
 decorator

---
 .../breakpoint/scripted_bkpt/was_hit/TestWasHit.py              | 2 +-
 lldb/test/API/functionalities/memory/find/TestMemoryFind.py     | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git 
a/lldb/test/API/functionalities/breakpoint/scripted_bkpt/was_hit/TestWasHit.py 
b/lldb/test/API/functionalities/breakpoint/scripted_bkpt/was_hit/TestWasHit.py
index 95eb7ea9c2a93..7db6b111f79e1 100644
--- 
a/lldb/test/API/functionalities/breakpoint/scripted_bkpt/was_hit/TestWasHit.py
+++ 
b/lldb/test/API/functionalities/breakpoint/scripted_bkpt/was_hit/TestWasHit.py
@@ -13,7 +13,7 @@ class TestWasHit(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
     @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24528")
-    @requireExpressionEvaluation (was_hit evaluates change_him())
+    @requireExpressionEvaluation  # (was_hit evaluates change_him())
     def test_was_hit_resolver(self):
         """Use facade breakpoints to emulate hitting some locations"""
         self.build()
diff --git a/lldb/test/API/functionalities/memory/find/TestMemoryFind.py 
b/lldb/test/API/functionalities/memory/find/TestMemoryFind.py
index 0ec9b0bd4296f..7d8bd6be8a656 100644
--- a/lldb/test/API/functionalities/memory/find/TestMemoryFind.py
+++ b/lldb/test/API/functionalities/memory/find/TestMemoryFind.py
@@ -16,7 +16,7 @@ def setUp(self):
         # Find the line number to break inside main().
         self.line = line_number("main.cpp", "// break here")
 
-    @requireExpressionEvaluation (memory find calls strlen())
+    @requireExpressionEvaluation  # (memory find calls strlen())
     def test_memory_find(self):
         """Test the 'memory find' command."""
         self.build()

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

Reply via email to