[lldb] [llvm] [lldb] Introduce the require decorator (PR #212753)

Charles Zablit via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 29 07:06:07 PDT 2026


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

>From 280b8b3293b25de6a08ff49a83466f7278dd2208 Mon Sep 17 00:00:00 2001
From: Charles Zablit <c_zablit at apple.com>
Date: Wed, 29 Jul 2026 13:03:50 +0100
Subject: [PATCH 1/2] [lldb] Introduce the require decorator

---
 lldb/docs/resources/test.md                   |  29 +++++
 .../Python/lldbsuite/test/decorators.py       | 122 ++++++++++++++++++
 lldb/packages/Python/lldbsuite/test/dotest.py |   6 +
 .../Python/lldbsuite/test/skip_reason.py      |  17 +++
 .../Python/lldbsuite/test/test_result.py      |  19 ++-
 .../API/attach/TestWindowsAttachBreakpoint.py |   2 +-
 .../TestAArch64LinuxAArch32Compat.py          |   2 +-
 .../aarch64/fpmr/TestAArch64LinuxFPMR.py      |   2 +-
 .../linux/aarch64/gcs/TestAArch64LinuxGCS.py  |  12 +-
 .../TestAArch64LinuxMTEMemoryRegion.py        |   2 +-
 .../TestAArch64LinuxMTEMemoryTagAccess.py     |  10 +-
 .../TestAArch64LinuxMTEMemoryTagFaults.py     |   4 +-
 .../TestAArch64LinuxNonAddressBitCodeBreak.py |   4 +-
 ...stAArch64LinuxNonAddressBitMemoryAccess.py |   8 +-
 .../permission_overlay/TestAArch64LinuxPOE.py |   2 +-
 .../TestAArch64LinuxTaggedMemoryAccess.py     |   4 +-
 .../TestAArch64LinuxTaggedMemoryRegion.py     |   2 +-
 .../TestAArch64LinuxTLSRegisters.py           |   6 +-
 .../aarch64/unwind_signal/TestUnwindSignal.py |   2 +-
 .../TestTargetSymbolsAddCommand.py            |   2 +-
 .../tls_register/TestArmLinuxTLSRegister.py   |   2 +-
 .../linux/linker-symbols/TestLinkerSymbols.py |   2 +-
 .../TestLoongArch64LinuxSIMDRegisters.py      |   4 +-
 .../TestMixedDwarfBinary.py                   |   2 +-
 .../TestTargetSymbolsSepDebugSymlink.py       |   2 +-
 .../TestCreateDuringInstructionStep.py        |   2 +-
 lldb/test/API/lldbtest.py                     |  11 +-
 .../macosx/add-dsym/TestAddDsymDownload.py    |   2 +-
 .../TestAddDsymMidExecutionCommand.py         |   2 +-
 .../TestArmPointerMetadataCFADwarfExpr.py     |   2 +-
 .../TestBSSOnlyDataSectionSliding.py          |   2 +-
 .../TestCorefileExceptionReason.py            |   2 +-
 lldb/test/API/macosx/ctf/TestCTF.py           |   4 +-
 .../TestDebugServerExitCode.py                |   2 +-
 .../TestDebugserverMultiMemRead.py            |   2 +-
 .../TestDelayInitDependency.py                |   2 +-
 .../API/macosx/deny-attach/TestDenyAttach.py  |   2 +-
 .../macosx/dsym_codesign/TestdSYMCodesign.py  |   2 +-
 .../macosx/dsym_modules/TestdSYMModuleInit.py |   2 +-
 .../dyld-trie-symbols/TestDyldTrieSymbols.py  |   2 +-
 .../TestEarlyProcessLaunch.py                 |   2 +-
 .../TestExpeditedStackMemory.py               |   8 +-
 .../TestExpeditedThreadPCs.py                 |   2 +-
 .../TestExtendedBacktraceAPI.py               |   2 +-
 .../find-app-in-bundle/TestFindAppInBundle.py |   2 +-
 .../TestBundleWithDotInFilename.py            |   2 +-
 .../find-dsym/deep-bundle/TestDeepBundle.py   |   2 +-
 .../format/TestFunctionNameWithoutArgs.py     |   2 +-
 .../function-starts/TestFunctionStarts.py     |   4 +-
 .../TestIgnoredExceptions.py                  |   2 +-
 .../indirect_symbol/TestIndirectSymbols.py    |   2 +-
 .../TestMetadataRegisters.py                  |   2 +-
 .../addrable-bits/TestAddrableBitsCorefile.py |   2 +-
 .../TestFirmwareCorefiles.py                  |   6 +-
 .../kern-ver-str/TestKernVerStrLCNOTE.py      |   2 +-
 .../TestMultipleBinaryCorefile.py             |   4 +-
 .../API/macosx/macCatalyst/TestMacCatalyst.py |   2 +-
 .../TestMacCatalystAppWithMacOSFramework.py   |   2 +-
 lldb/test/API/macosx/mte/TestDarwinMTE.py     |   2 +-
 .../TestNoNlistsDylib.py                      |   2 +-
 .../API/macosx/nslog/TestDarwinNSLogOutput.py |   4 +-
 .../TestObjCRecognizer.py                     |   4 +-
 lldb/test/API/macosx/order/TestOrderFile.py   |   2 +-
 .../TestLaunchProcessPosixSpawn.py            |   4 +-
 .../TestDetachVrsProfile.py                   |   2 +-
 lldb/test/API/macosx/queues/TestQueues.py     |   6 +-
 .../safe-to-func-call/TestSafeFuncCalls.py    |   2 +-
 .../macosx/save_crashlog/TestSaveCrashlog.py  |   2 +-
 .../TestSharedCacheHostMemory.py              |   2 +-
 .../TestSharedCacheVMRange.py                 |   2 +-
 .../macosx/simulator/TestSimulatorPlatform.py |   4 +-
 .../skinny-corefile/TestSkinnyCorefile.py     |   2 +-
 .../sme-registers/TestSMERegistersDarwin.py   |   2 +-
 .../stack-corefile/TestStackCorefile.py       |   2 +-
 .../TestMachExceptionData.py                  |   2 +-
 .../API/macosx/tbi-honored/TestTBIHonored.py  |   2 +-
 .../thread-names/TestInterruptThreadNames.py  |   2 +-
 .../TestBreakpointsThreadInit.py              |   4 +-
 .../TestInternalThreadSuspension.py           |   2 +-
 .../API/macosx/universal/TestUniversal.py     |   6 +-
 .../API/macosx/universal64/TestUniversal64.py |   4 +-
 .../TestUnregisteredMacho.py                  |   2 +-
 lldb/test/API/windows/conpty/TestConPTY.py    |   8 +-
 .../debug-heap/TestWindowsDebugHeap.py        |   2 +-
 .../launch/missing-dll/TestMissingDll.py      |   2 +-
 .../launch/replace-dll/TestReplaceDLL.py      |   2 +-
 .../windows/msvcrt/TestMSVCRTCException.py    |   2 +-
 .../test/API/windows/thread/TestThreadName.py |   2 +-
 llvm/utils/lit/lit/reports.py                 |   2 +-
 89 files changed, 322 insertions(+), 126 deletions(-)
 create mode 100644 lldb/packages/Python/lldbsuite/test/skip_reason.py

diff --git a/lldb/docs/resources/test.md b/lldb/docs/resources/test.md
index e3c02c25553f0..1277a7a5abb8c 100644
--- a/lldb/docs/resources/test.md
+++ b/lldb/docs/resources/test.md
@@ -137,6 +137,35 @@ the test should be run or not.
 @skipTestIfFn(checking_function_name)
 ```
 
+### Skipped versus unsupported
+
+A test that doesn't run does so for one of two very different reasons, and the
+decorator you pick says which:
+
+* The test **can never** run in this configuration. A test for Mach-O debug
+  maps has nothing to say on Linux; a test that calls `fork()` has nothing to
+  say on Windows. Use the `require*` family. These are reported as
+  **UNSUPPORTED**.
+
+* The test **ought to** run in this configuration but doesn't work yet. Use the
+  `skipIf*` / `skipUnless*` family. These are reported as **SKIPPED**, which
+  keeps them visible as work still to be done.
+
+```python
+ at requireDarwin      # inherently Darwin-only: reported UNSUPPORTED elsewhere
+ at skipIfWindows      # ought to work on Windows, currently broken: reported SKIPPED
+```
+
+The `require*` decorators mirror the `skip*` ones one-for-one:
+`requireDarwin` / `requireNotDarwin`, `requireLinux` / `requireNotLinux`,
+`requireWindows` / `requireNotWindows`, plus `requirePOSIX`, `requireSignals`,
+`requireNotWasm`, `requireDarwinHost`, and the general
+`requirePlatform(oslist)` / `requireNotPlatform(oslist)`.
+
+Reach for `require*` when the test is tied to a platform-specific file format,
+API, or OS feature. If the test is merely untested or broken somewhere, keep
+`skipIf*` so nobody mistakes a bug for a design decision.
+
 In addition to providing a lot more flexibility when it comes to writing the
 test, the API test also allow for much more complex scenarios when it comes to
 building inferiors. Every test has its own `Makefile`, most of them only a
diff --git a/lldb/packages/Python/lldbsuite/test/decorators.py b/lldb/packages/Python/lldbsuite/test/decorators.py
index 50eec24120c4c..906ade7d63fa3 100644
--- a/lldb/packages/Python/lldbsuite/test/decorators.py
+++ b/lldb/packages/Python/lldbsuite/test/decorators.py
@@ -30,6 +30,7 @@
 from lldbsuite.test import lldbplatform
 from lldbsuite.test import lldbplatformutil
 from lldbsuite.test.cpu_feature import CPUFeature
+from lldbsuite.test.skip_reason import UnsupportedReason
 
 
 class DecorateMode:
@@ -1123,6 +1124,127 @@ def skipUnlessPlatform(oslist):
     )
 
 
+##############################################################################
+# Platform *requirement* decorators.
+#
+# These express "this test can only ever run here", as opposed to the skipIf /
+# skipUnless family which means "this test ought to run here but is broken".
+# Tests turned off by a `require*` decorator are reported as UNSUPPORTED; tests
+# turned off by a `skip*` decorator are reported as SKIPPED. See
+# `lldbsuite.test.skip_reason` for how the distinction is carried.
+#
+# Reach for these when the test is inherently tied to a platform: it debugs a
+# platform-specific file format, drives a platform-specific API, or exercises
+# an OS feature that simply doesn't exist elsewhere. If the test is merely
+# untested or broken somewhere, keep using skipIf / skipUnless so it stays
+# visible as work to be done.
+##############################################################################
+
+
+def requirePlatform(oslist):
+    """Mark the item as runnable only on the listed target platforms.
+
+    Unlike `skipUnlessPlatform`, other platforms are reported as UNSUPPORTED
+    rather than SKIPPED.
+    """
+    return unittest.skipUnless(
+        lldbplatformutil.getPlatform() in oslist,
+        UnsupportedReason("requires one of %s" % (", ".join(oslist))),
+    )
+
+
+def requireNotPlatform(oslist):
+    """Mark the item as inherently inapplicable to the listed target platforms.
+
+    Unlike `skipIfPlatform`, the listed platforms are reported as UNSUPPORTED
+    rather than SKIPPED.
+    """
+    return unittest.skipIf(
+        lldbplatformutil.getPlatform() in oslist,
+        UnsupportedReason("unsupported on %s" % (", ".join(oslist))),
+    )
+
+
+def requireDarwin(func):
+    """Mark the item as inherently Darwin-only (Mach-O, debug maps, Darwin
+    kernel/runtime APIs, ...). Non-Darwin targets report UNSUPPORTED."""
+    return requirePlatform(lldbplatform.translate(lldbplatform.darwin_all))(func)
+
+
+def requireNotDarwin(func):
+    """Mark the item as inherently inapplicable to Darwin targets."""
+    return requireNotPlatform(lldbplatform.translate(lldbplatform.darwin_all))(func)
+
+
+def requireLinux(func):
+    """Mark the item as inherently Linux-only (procfs, Linux-specific syscalls,
+    ...). Other targets report UNSUPPORTED."""
+    return requirePlatform(["linux"])(func)
+
+
+def requireNotLinux(func):
+    """Mark the item as inherently inapplicable to Linux targets."""
+    return requireNotPlatform(["linux"])(func)
+
+
+def requireWindows(func):
+    """Mark the item as inherently Windows-only (PE/COFF, Win32 APIs, ...).
+    Other targets report UNSUPPORTED."""
+    return requirePlatform(["windows"])(func)
+
+
+def requireNotWindows(func):
+    """Mark the item as inherently inapplicable to Windows targets.
+
+    Use this for tests built on POSIX-only concepts: fork/exec semantics,
+    POSIX signals, ptrace, ELF/Mach-O specifics, shell pipelines, and so on.
+    """
+    return requireNotPlatform(["windows"])(func)
+
+
+def requirePOSIX(func):
+    """Mark the item as requiring a POSIX target.
+
+    A shorthand for `requireNotWindows` that reads better on tests whose
+    dependency is POSIX semantics generally rather than anything about
+    Windows specifically.
+    """
+    return requireNotPlatform(["windows"])(func)
+
+
+def requireSignals(func):
+    """Mark the item as requiring POSIX signal support on the target."""
+    return requireNotPlatform(["windows", "wasip1", "wasi"])(func)
+
+
+def requireNotWasm(func):
+    """Mark the item as inherently inapplicable to WebAssembly targets.
+
+    WebAssembly has no processes, no signals, no shared libraries and no
+    ptrace-style debugging, so a large amount of the test suite can never
+    apply to it.
+    """
+    return requireNotPlatform(["wasip1", "wasi"])(func)
+
+
+def requireHostPlatform(oslist):
+    """Mark the item as runnable only on the listed *host* platforms."""
+    return unittest.skipUnless(
+        lldbplatformutil.getHostPlatform() in oslist,
+        UnsupportedReason("requires one of %s as host" % (", ".join(oslist))),
+    )
+
+
+def requireDarwinHost(func):
+    """Mark the item as requiring a Darwin host, regardless of target.
+
+    Use for tests that drive host-side Darwin facilities: `xcrun`, the
+    simulator runtimes, dsymutil, the LLDB.framework layout, and so on.
+    """
+    return requireHostPlatform(lldbplatform.translate(lldbplatform.darwin_all))(func)
+
+
+
 def skipIfTargetDoesNotSupportThreads():
     """Skip tests that require thread support (e.g. pthreads)."""
     platform = lldbplatformutil.getPlatform()
diff --git a/lldb/packages/Python/lldbsuite/test/dotest.py b/lldb/packages/Python/lldbsuite/test/dotest.py
index caa5c81b82cbb..7f440654811ed 100644
--- a/lldb/packages/Python/lldbsuite/test/dotest.py
+++ b/lldb/packages/Python/lldbsuite/test/dotest.py
@@ -1255,6 +1255,12 @@ def run_suite():
 
     configuration.failed = not result.wasSuccessful()
 
+    if getattr(result, "skipped", None):
+        sys.stderr.write(
+            "Skip breakdown (unsupported=%d, skipped=%d)\n"
+            % (result.countUnsupported(), result.countSkipped())
+        )
+
     if configuration.sdir_has_content and configuration.verbose:
         sys.stderr.write(
             "Session logs for test failures/errors/unexpected successes"
diff --git a/lldb/packages/Python/lldbsuite/test/skip_reason.py b/lldb/packages/Python/lldbsuite/test/skip_reason.py
new file mode 100644
index 0000000000000..b1aece572f4f3
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/skip_reason.py
@@ -0,0 +1,17 @@
+"""
+Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+See https://llvm.org/LICENSE.txt for license information.
+SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+Distinguishes the two reasons a test can end up not running.
+"""
+
+
+class UnsupportedReason(str):
+    """A skip reason meaning "this test can never run here", not "this test is
+    broken here". Reported as UNSUPPORTED rather than SKIPPED."""
+
+
+def is_unsupported(reason):
+    """Return True if *reason* marks a test as unsupported rather than skipped."""
+    return isinstance(reason, UnsupportedReason)
diff --git a/lldb/packages/Python/lldbsuite/test/test_result.py b/lldb/packages/Python/lldbsuite/test/test_result.py
index 383135d5f67c9..ddd4d2ab3aaef 100644
--- a/lldb/packages/Python/lldbsuite/test/test_result.py
+++ b/lldb/packages/Python/lldbsuite/test/test_result.py
@@ -16,6 +16,7 @@
 
 # LLDB Modules
 from . import configuration
+from .skip_reason import UnsupportedReason, is_unsupported
 from lldbsuite.test_event import build_exception
 
 
@@ -162,10 +163,18 @@ def hardMarkAsSkipped(self, test):
         getattr(test, test._testMethodName).__func__.__unittest_skip__ = True
         getattr(
             test, test._testMethodName
-        ).__func__.__unittest_skip_why__ = (
+        ).__func__.__unittest_skip_why__ = UnsupportedReason(
             "test case does not fall in any category of interest for this run"
         )
 
+    def countUnsupported(self):
+        """Number of skipped tests that can never run in this configuration."""
+        return sum(1 for _, reason in self.skipped if is_unsupported(reason))
+
+    def countSkipped(self):
+        """Number of skipped tests that ought to run here but don't work yet."""
+        return len(self.skipped) - self.countUnsupported()
+
     def checkExclusion(self, exclusion_list, name):
         if exclusion_list:
             import re
@@ -282,9 +291,13 @@ def addSkip(self, test, reason):
         method = getattr(test, "markSkippedTest", None)
         if method:
             method()
+        # A test turned off by a `require*` decorator can never run in this
+        # configuration, so report it as UNSUPPORTED. Anything else is a test
+        # that ought to run here but doesn't work yet: report it as SKIPPED.
+        status = "UNSUPPORTED" if is_unsupported(reason) else "SKIPPED"
         self.stream.write(
-            "UNSUPPORTED: LLDB (%s) :: %s (%s) \n"
-            % (self._config_string(test), str(test), reason)
+            "%s: LLDB (%s) :: %s (%s) \n"
+            % (status, self._config_string(test), str(test), reason)
         )
 
     def addUnexpectedSuccess(self, test):
diff --git a/lldb/test/API/attach/TestWindowsAttachBreakpoint.py b/lldb/test/API/attach/TestWindowsAttachBreakpoint.py
index e40745c54bebf..83bc28e5f40c0 100644
--- a/lldb/test/API/attach/TestWindowsAttachBreakpoint.py
+++ b/lldb/test/API/attach/TestWindowsAttachBreakpoint.py
@@ -98,7 +98,7 @@ class PROCESS_INFORMATION(ctypes.Structure):
             process_information.hThread,
         )
 
-    @skipUnlessWindows
+    @requireWindows
     def test_attach_ignores_loader_breakpoint(self):
         """
         lldb must not report the loader's int3 (raised in a system module while
diff --git a/lldb/test/API/linux/aarch64/aarch32_compat/TestAArch64LinuxAArch32Compat.py b/lldb/test/API/linux/aarch64/aarch32_compat/TestAArch64LinuxAArch32Compat.py
index b9a83b06cb59d..f104b8b7ed2af 100644
--- a/lldb/test/API/linux/aarch64/aarch32_compat/TestAArch64LinuxAArch32Compat.py
+++ b/lldb/test/API/linux/aarch64/aarch32_compat/TestAArch64LinuxAArch32Compat.py
@@ -16,7 +16,7 @@ class AArch64LinuxAArch32Compat(TestBase):
     @skipIfRemote
     @skipUnlessArch("aarch64")
     @skipIfLLVMTargetMissing("ARM")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_aarch32_compat(self):
         self.build()
         test_program = self.getBuildArtifact("a.out")
diff --git a/lldb/test/API/linux/aarch64/fpmr/TestAArch64LinuxFPMR.py b/lldb/test/API/linux/aarch64/fpmr/TestAArch64LinuxFPMR.py
index 7f8dc811c5df3..ba547ab70f984 100644
--- a/lldb/test/API/linux/aarch64/fpmr/TestAArch64LinuxFPMR.py
+++ b/lldb/test/API/linux/aarch64/fpmr/TestAArch64LinuxFPMR.py
@@ -16,7 +16,7 @@ class AArch64LinuxFPMR(TestBase):
     EXPECTED_FPMR_FIELDS = ["LSCALE2 = 42", "F8S1 = FP8_E4M3 | 0x4"]
 
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_fpmr_register_live(self):
         if not self.isAArch64FPMR():
             self.skipTest("FPMR must be present.")
diff --git a/lldb/test/API/linux/aarch64/gcs/TestAArch64LinuxGCS.py b/lldb/test/API/linux/aarch64/gcs/TestAArch64LinuxGCS.py
index f5a2ca356bbe8..c413278742afc 100644
--- a/lldb/test/API/linux/aarch64/gcs/TestAArch64LinuxGCS.py
+++ b/lldb/test/API/linux/aarch64/gcs/TestAArch64LinuxGCS.py
@@ -13,7 +13,7 @@ class AArch64LinuxGCSTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_gcs_region(self):
         if not self.isAArch64GCS():
             self.skipTest("Target must support GCS.")
@@ -62,7 +62,7 @@ def test_gcs_region(self):
         # cleanly if GCS was manually enabled.
 
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_gcs_fault(self):
         if not self.isAArch64GCS():
             self.skipTest("Target must support GCS.")
@@ -118,7 +118,7 @@ def check_gcs_registers(
         return gcs_features_enabled, gcs_features_locked, gcspr_el0
 
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_gcs_registers(self):
         if not self.isAArch64GCS():
             self.skipTest("Target must support GCS.")
@@ -239,7 +239,7 @@ def test_gcs_registers(self):
             ],
         )
 
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_gcs_expression_simple(self):
         if not self.isAArch64GCS():
             self.skipTest("Target must support GCS.")
@@ -303,7 +303,7 @@ def test_gcs_expression_simple(self):
         self.expect(expr_cmd, substrs=["(unsigned long) 1"])
         self.check_gcs_registers(*before)
 
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_gcs_expression_disable_gcs(self):
         if not self.isAArch64GCS():
             self.skipTest("Target must support GCS.")
@@ -343,7 +343,7 @@ def test_gcs_expression_disable_gcs(self):
         enabled &= ~1
         self.check_gcs_registers(enabled, locked, spr_el0)
 
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_gcs_expression_enable_gcs(self):
         if not self.isAArch64GCS():
             self.skipTest("Target must support GCS.")
diff --git a/lldb/test/API/linux/aarch64/mte_memory_region/TestAArch64LinuxMTEMemoryRegion.py b/lldb/test/API/linux/aarch64/mte_memory_region/TestAArch64LinuxMTEMemoryRegion.py
index efc4734900551..fb55f8aab54ae 100644
--- a/lldb/test/API/linux/aarch64/mte_memory_region/TestAArch64LinuxMTEMemoryRegion.py
+++ b/lldb/test/API/linux/aarch64/mte_memory_region/TestAArch64LinuxMTEMemoryRegion.py
@@ -14,7 +14,7 @@ class AArch64LinuxMTEMemoryRegionTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     @skipUnlessAArch64MTELinuxCompiler
     def test_mte_regions(self):
         if not self.isAArch64MTE():
diff --git a/lldb/test/API/linux/aarch64/mte_tag_access/TestAArch64LinuxMTEMemoryTagAccess.py b/lldb/test/API/linux/aarch64/mte_tag_access/TestAArch64LinuxMTEMemoryTagAccess.py
index f5c49ec0dd38b..a5908bf224573 100644
--- a/lldb/test/API/linux/aarch64/mte_tag_access/TestAArch64LinuxMTEMemoryTagAccess.py
+++ b/lldb/test/API/linux/aarch64/mte_tag_access/TestAArch64LinuxMTEMemoryTagAccess.py
@@ -44,7 +44,7 @@ def setup_mte_test(self):
         )
 
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     @skipUnlessAArch64MTELinuxCompiler
     def test_mte_tag_read(self):
         self.setup_mte_test()
@@ -209,7 +209,7 @@ def test_mte_tag_read(self):
         )
 
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     @skipUnlessAArch64MTELinuxCompiler
     def test_mte_tag_write(self):
         self.setup_mte_test()
@@ -431,7 +431,7 @@ def test_mte_tag_write(self):
         )
 
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     @skipUnlessAArch64MTELinuxCompiler
     def test_mte_memory_read_tag_display(self):
         self.setup_mte_test()
@@ -588,7 +588,7 @@ def test_mte_memory_read_tag_display(self):
         )
 
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     @skipUnlessAArch64MTELinuxCompiler
     # Repeating options currently does not work, see
     # https://github.com/llvm/llvm-project/issues/192057.
@@ -631,7 +631,7 @@ def test_mte_memory_read_tag_display_repeated(self):
         )
 
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     @skipUnlessAArch64MTELinuxCompiler
     def test_mte_memory_find(self):
         """Test the --show-tags option with memory find."""
diff --git a/lldb/test/API/linux/aarch64/mte_tag_faults/TestAArch64LinuxMTEMemoryTagFaults.py b/lldb/test/API/linux/aarch64/mte_tag_faults/TestAArch64LinuxMTEMemoryTagFaults.py
index 331c32749e32c..55c1de50dfc92 100644
--- a/lldb/test/API/linux/aarch64/mte_tag_faults/TestAArch64LinuxMTEMemoryTagFaults.py
+++ b/lldb/test/API/linux/aarch64/mte_tag_faults/TestAArch64LinuxMTEMemoryTagFaults.py
@@ -38,7 +38,7 @@ def setup_mte_test(self, fault_type):
         )
 
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     @skipUnlessAArch64MTELinuxCompiler
     def test_mte_tag_fault_sync(self):
         self.setup_mte_test("sync")
@@ -57,7 +57,7 @@ def test_mte_tag_fault_sync(self):
         )
 
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     @skipUnlessAArch64MTELinuxCompiler
     def test_mte_tag_fault_async(self):
         self.setup_mte_test("async")
diff --git a/lldb/test/API/linux/aarch64/non_address_bit_code_break/TestAArch64LinuxNonAddressBitCodeBreak.py b/lldb/test/API/linux/aarch64/non_address_bit_code_break/TestAArch64LinuxNonAddressBitCodeBreak.py
index e6baa5d8f59d7..252fdaa22b2ea 100644
--- a/lldb/test/API/linux/aarch64/non_address_bit_code_break/TestAArch64LinuxNonAddressBitCodeBreak.py
+++ b/lldb/test/API/linux/aarch64/non_address_bit_code_break/TestAArch64LinuxNonAddressBitCodeBreak.py
@@ -54,11 +54,11 @@ def do_tagged_break(self, hardware):
 
     # AArch64 Linux always enables the top byte ignore feature
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_software_break(self):
         self.do_tagged_break(False)
 
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_hardware_break(self):
         self.do_tagged_break(True)
diff --git a/lldb/test/API/linux/aarch64/non_address_bit_memory_access/TestAArch64LinuxNonAddressBitMemoryAccess.py b/lldb/test/API/linux/aarch64/non_address_bit_memory_access/TestAArch64LinuxNonAddressBitMemoryAccess.py
index f27780358570b..67b1bae282ec2 100644
--- a/lldb/test/API/linux/aarch64/non_address_bit_memory_access/TestAArch64LinuxNonAddressBitMemoryAccess.py
+++ b/lldb/test/API/linux/aarch64/non_address_bit_memory_access/TestAArch64LinuxNonAddressBitMemoryAccess.py
@@ -45,7 +45,7 @@ def check_cmd_read_write(self, write_to, read_from, data):
         self.expect("memory read {}".format(read_from), substrs=[data])
 
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_non_address_bit_memory_read_write_cmds(self):
         self.setup_test()
 
@@ -82,7 +82,7 @@ def check_api_read_write(self, write_to, read_from, data):
         self.assertEqual(data, buf_content)
 
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_non_address_bit_memory_read_write_api_process(self):
         self.setup_test()
         buf, buf_with_non_address = self.get_ptr_values()
@@ -121,7 +121,7 @@ def test_non_address_bit_memory_read_write_api_process(self):
         self.assertEqual(0x5634120042444C4C, ptr)
 
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_non_address_bit_memory_read_write_api_target(self):
         self.setup_test()
         buf, buf_with_non_address = self.get_ptr_values()
@@ -147,7 +147,7 @@ def test_non_address_bit_memory_read_write_api_target(self):
         # Read<type>FromMemory are in Target but not SBTarget so no tests for those.
 
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_non_address_bit_memory_caching(self):
         # The read/write tests above do exercise the cache but this test
         # only cares that the cache sees buf and buf_with_non_address
diff --git a/lldb/test/API/linux/aarch64/permission_overlay/TestAArch64LinuxPOE.py b/lldb/test/API/linux/aarch64/permission_overlay/TestAArch64LinuxPOE.py
index 9832b30ed0087..90383e0b898b8 100644
--- a/lldb/test/API/linux/aarch64/permission_overlay/TestAArch64LinuxPOE.py
+++ b/lldb/test/API/linux/aarch64/permission_overlay/TestAArch64LinuxPOE.py
@@ -35,7 +35,7 @@ class AArch64LinuxPOE(TestBase):
     )
 
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_poe_live(self):
         if not self.isAArch64POE():
             self.skipTest("POE must be present.")
diff --git a/lldb/test/API/linux/aarch64/tagged_memory_access/TestAArch64LinuxTaggedMemoryAccess.py b/lldb/test/API/linux/aarch64/tagged_memory_access/TestAArch64LinuxTaggedMemoryAccess.py
index 1b52cd4b9c488..5d364b51c0ac3 100644
--- a/lldb/test/API/linux/aarch64/tagged_memory_access/TestAArch64LinuxTaggedMemoryAccess.py
+++ b/lldb/test/API/linux/aarch64/tagged_memory_access/TestAArch64LinuxTaggedMemoryAccess.py
@@ -38,7 +38,7 @@ def setup_test(self):
         )
 
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_tagged_memory_read(self):
         self.setup_test()
 
@@ -64,7 +64,7 @@ def test_tagged_memory_read(self):
         self.expect("memory read", patterns=[tagged_addr_pattern], matching=False)
 
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_tagged_memory_find(self):
         self.setup_test()
 
diff --git a/lldb/test/API/linux/aarch64/tagged_memory_region/TestAArch64LinuxTaggedMemoryRegion.py b/lldb/test/API/linux/aarch64/tagged_memory_region/TestAArch64LinuxTaggedMemoryRegion.py
index 509dae3aed855..509b50151b308 100644
--- a/lldb/test/API/linux/aarch64/tagged_memory_region/TestAArch64LinuxTaggedMemoryRegion.py
+++ b/lldb/test/API/linux/aarch64/tagged_memory_region/TestAArch64LinuxTaggedMemoryRegion.py
@@ -14,7 +14,7 @@ class AArch64LinuxTaggedMemoryRegionTestCase(TestBase):
 
     # AArch64 Linux always enables the top byte ignore feature
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_mte_regions(self):
         self.build()
         self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET)
diff --git a/lldb/test/API/linux/aarch64/tls_registers/TestAArch64LinuxTLSRegisters.py b/lldb/test/API/linux/aarch64/tls_registers/TestAArch64LinuxTLSRegisters.py
index 2fa963efcc8ff..4369110699b2c 100644
--- a/lldb/test/API/linux/aarch64/tls_registers/TestAArch64LinuxTLSRegisters.py
+++ b/lldb/test/API/linux/aarch64/tls_registers/TestAArch64LinuxTLSRegisters.py
@@ -96,7 +96,7 @@ def check_tls_reg(self, registers):
             self.expect("p {}_was_set".format(register), substrs=["true"])
 
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_tls_no_sme(self):
         if self.isAArch64SME():
             self.skipTest("SME must not be present.")
@@ -104,7 +104,7 @@ def test_tls_no_sme(self):
         self.check_tls_reg(["tpidr"])
 
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_tls_sme(self):
         if not self.isAArch64SME():
             self.skipTest("SME must be present.")
@@ -112,7 +112,7 @@ def test_tls_sme(self):
         self.check_tls_reg(["tpidr", "tpidr2"])
 
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_tpidr2_no_sme(self):
         if self.isAArch64SME():
             self.skipTest("SME must not be present.")
diff --git a/lldb/test/API/linux/aarch64/unwind_signal/TestUnwindSignal.py b/lldb/test/API/linux/aarch64/unwind_signal/TestUnwindSignal.py
index 46f05b8285a51..893cea72d05cc 100644
--- a/lldb/test/API/linux/aarch64/unwind_signal/TestUnwindSignal.py
+++ b/lldb/test/API/linux/aarch64/unwind_signal/TestUnwindSignal.py
@@ -12,7 +12,7 @@ class UnwindSignalTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
     @skipUnlessArch("aarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_unwind_signal(self):
         """Inferior calls sigill() and handles the resultant SIGILL.
         Stopped at a breakpoint in the handler, check that we can unwind
diff --git a/lldb/test/API/linux/add-symbols/TestTargetSymbolsAddCommand.py b/lldb/test/API/linux/add-symbols/TestTargetSymbolsAddCommand.py
index 318846afda412..57ecc08439298 100644
--- a/lldb/test/API/linux/add-symbols/TestTargetSymbolsAddCommand.py
+++ b/lldb/test/API/linux/add-symbols/TestTargetSymbolsAddCommand.py
@@ -11,7 +11,7 @@ def setUp(self):
         self.source = "main.c"
 
     @no_debug_info_test  # Prevent the genaration of the dwarf version of this test
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_target_symbols_add(self):
         """Test that 'target symbols add' can load the symbols
         even if gnu.build-id and gnu_debuglink are not present in the module.
diff --git a/lldb/test/API/linux/arm/tls_register/TestArmLinuxTLSRegister.py b/lldb/test/API/linux/arm/tls_register/TestArmLinuxTLSRegister.py
index a37c64353bc97..4d88e37c0fdb5 100644
--- a/lldb/test/API/linux/arm/tls_register/TestArmLinuxTLSRegister.py
+++ b/lldb/test/API/linux/arm/tls_register/TestArmLinuxTLSRegister.py
@@ -9,7 +9,7 @@
 
 
 @skipUnlessArch("arm")
- at skipUnlessPlatform(["linux"])
+ at requireLinux
 class ArmLinuxTLSRegister(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
diff --git a/lldb/test/API/linux/linker-symbols/TestLinkerSymbols.py b/lldb/test/API/linux/linker-symbols/TestLinkerSymbols.py
index a15ea75cd2a77..d1fe3de462674 100644
--- a/lldb/test/API/linux/linker-symbols/TestLinkerSymbols.py
+++ b/lldb/test/API/linux/linker-symbols/TestLinkerSymbols.py
@@ -15,7 +15,7 @@ class TestLinkerSymbols(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
     SHARED_BUILD_TESTCASE = False
 
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_linker_symbols(self):
         build_dict = dict(LD_EXTRAS="-Wl,-T," + self.getSourcePath("linker.script"))
         self.build(dictionary=build_dict)
diff --git a/lldb/test/API/linux/loongarch64/simd_registers/TestLoongArch64LinuxSIMDRegisters.py b/lldb/test/API/linux/loongarch64/simd_registers/TestLoongArch64LinuxSIMDRegisters.py
index 16b903dbbfc25..a7e94c7862f04 100644
--- a/lldb/test/API/linux/loongarch64/simd_registers/TestLoongArch64LinuxSIMDRegisters.py
+++ b/lldb/test/API/linux/loongarch64/simd_registers/TestLoongArch64LinuxSIMDRegisters.py
@@ -78,7 +78,7 @@ def simd_registers_impl(self, mode):
         self.expect("continue", substrs=["exited with status = 0"])
 
     @skipUnlessArch("loongarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_lsx(self):
         """Test read/write of LSX registers."""
         if not self.isLoongArchLSX():
@@ -86,7 +86,7 @@ def test_lsx(self):
         self.simd_registers_impl(Mode.LSX)
 
     @skipUnlessArch("loongarch64")
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_lasx(self):
         """Test read/write of LASX registers."""
         if not self.isLoongArchLASX():
diff --git a/lldb/test/API/linux/mix-dwo-and-regular-objects/TestMixedDwarfBinary.py b/lldb/test/API/linux/mix-dwo-and-regular-objects/TestMixedDwarfBinary.py
index bef43d9422f1d..18e2f3f5839b9 100644
--- a/lldb/test/API/linux/mix-dwo-and-regular-objects/TestMixedDwarfBinary.py
+++ b/lldb/test/API/linux/mix-dwo-and-regular-objects/TestMixedDwarfBinary.py
@@ -8,7 +8,7 @@
 class TestMixedDwarfBinary(TestBase):
     @no_debug_info_test  # Prevent the genaration of the dwarf version of this test
     @add_test_categories(["dwo"])
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     def test_mixed_dwarf(self):
         """Test that 'frame variable' works
         for the executable built from two source files compiled
diff --git a/lldb/test/API/linux/sepdebugsymlink/TestTargetSymbolsSepDebugSymlink.py b/lldb/test/API/linux/sepdebugsymlink/TestTargetSymbolsSepDebugSymlink.py
index 745d8d8025b63..afa8a0b558d80 100644
--- a/lldb/test/API/linux/sepdebugsymlink/TestTargetSymbolsSepDebugSymlink.py
+++ b/lldb/test/API/linux/sepdebugsymlink/TestTargetSymbolsSepDebugSymlink.py
@@ -7,7 +7,7 @@
 
 class TestTargetSymbolsSepDebugSymlink(TestBase):
     @no_debug_info_test  # Prevent the genaration of the dwarf version of this test
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     @skipIf(hostoslist=["windows"])
     @skipIfRemote  # llvm.org/pr36237
     def test_target_symbols_sepdebug_symlink_case(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 129a269760095..3816ba9164d6c 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
@@ -14,7 +14,7 @@
 class CreateDuringInstructionStepTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
-    @skipUnlessPlatform(["linux"])
+    @requireLinux
     @expectedFailureAndroid("llvm.org/pr24737", archs=["arm$"])
     @skipIf(oslist=["linux"], archs=["arm$", "aarch64"], bugnumber="llvm.org/pr24737")
     def test_step_inst(self):
diff --git a/lldb/test/API/lldbtest.py b/lldb/test/API/lldbtest.py
index 6dad5a412a5a5..77758f2612d78 100644
--- a/lldb/test/API/lldbtest.py
+++ b/lldb/test/API/lldbtest.py
@@ -127,6 +127,13 @@ def execute(self, test, litConfig):
         expected_failures = parsed_details["expected failures"]
         unexpected_successes = parsed_details["unexpected successes"]
 
+        only_skipped = 0
+        breakdown = re.search(
+            r"^Skip breakdown \(unsupported=(\d+), skipped=(\d+)\)\r?$", err, re.MULTILINE
+        )
+        if breakdown:
+            only_skipped = int(breakdown.group(2))
+
         non_pass = (
             failures + errors + skipped + expected_failures + unexpected_successes
         )
@@ -142,9 +149,11 @@ def execute(self, test, litConfig):
             return lit.Test.XPASS, output
         else:
             # Aggregate the tests results with the following precedence:
-            # PASS > XFAIL > UNSUPPORTED
+            # PASS > XFAIL > SKIPPED > UNSUPPORTED
             if passes > 0:
                 return lit.Test.PASS, output
             if expected_failures > 0:
                 return lit.Test.XFAIL, output
+            if only_skipped > 0:
+                return lit.Test.SKIPPED, output
             return lit.Test.UNSUPPORTED, output
diff --git a/lldb/test/API/macosx/add-dsym/TestAddDsymDownload.py b/lldb/test/API/macosx/add-dsym/TestAddDsymDownload.py
index 278ba48160715..253b26ff84a79 100644
--- a/lldb/test/API/macosx/add-dsym/TestAddDsymDownload.py
+++ b/lldb/test/API/macosx/add-dsym/TestAddDsymDownload.py
@@ -4,7 +4,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipUnlessDarwin
+ at requireDarwin
 class AddDsymDownload(TestBase):
     SHARED_BUILD_TESTCASE = False
 
diff --git a/lldb/test/API/macosx/add-dsym/TestAddDsymMidExecutionCommand.py b/lldb/test/API/macosx/add-dsym/TestAddDsymMidExecutionCommand.py
index 030e12afdc585..8faef87650de6 100644
--- a/lldb/test/API/macosx/add-dsym/TestAddDsymMidExecutionCommand.py
+++ b/lldb/test/API/macosx/add-dsym/TestAddDsymMidExecutionCommand.py
@@ -7,7 +7,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipUnlessDarwin
+ at requireDarwin
 class AddDsymMidExecutionCommandCase(TestBase):
     SHARED_BUILD_TESTCASE = False
 
diff --git a/lldb/test/API/macosx/arm-pointer-metadata-cfa-dwarf-expr/TestArmPointerMetadataCFADwarfExpr.py b/lldb/test/API/macosx/arm-pointer-metadata-cfa-dwarf-expr/TestArmPointerMetadataCFADwarfExpr.py
index 839e0e1a4fc4d..7e08b98d87f7d 100644
--- a/lldb/test/API/macosx/arm-pointer-metadata-cfa-dwarf-expr/TestArmPointerMetadataCFADwarfExpr.py
+++ b/lldb/test/API/macosx/arm-pointer-metadata-cfa-dwarf-expr/TestArmPointerMetadataCFADwarfExpr.py
@@ -4,7 +4,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipUnlessDarwin
+ at requireDarwin
 @skipIf(archs=no_match(["arm64"]))
 class TestArmPointerMetadataStripping(TestBase):
     def test(self):
diff --git a/lldb/test/API/macosx/bss-only-data-section-sliding/TestBSSOnlyDataSectionSliding.py b/lldb/test/API/macosx/bss-only-data-section-sliding/TestBSSOnlyDataSectionSliding.py
index bc7d69a592e3d..1547ac7aebc87 100644
--- a/lldb/test/API/macosx/bss-only-data-section-sliding/TestBSSOnlyDataSectionSliding.py
+++ b/lldb/test/API/macosx/bss-only-data-section-sliding/TestBSSOnlyDataSectionSliding.py
@@ -7,7 +7,7 @@
 
 
 class TestBSSOnlyDataSectionSliding(TestBase):
-    @skipUnlessDarwin
+    @requireDarwin
     def test_with_python_api(self):
         """Test that we get thread names when interrupting a process."""
         self.build()
diff --git a/lldb/test/API/macosx/corefile-exception-reason/TestCorefileExceptionReason.py b/lldb/test/API/macosx/corefile-exception-reason/TestCorefileExceptionReason.py
index e452bb564ea40..90082e8273076 100644
--- a/lldb/test/API/macosx/corefile-exception-reason/TestCorefileExceptionReason.py
+++ b/lldb/test/API/macosx/corefile-exception-reason/TestCorefileExceptionReason.py
@@ -12,7 +12,7 @@
 
 class TestCorefileExceptionReason(TestBase):
     @no_debug_info_test
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIf(archs=no_match(["arm64", "arm64e"]))
     @skipIfRemote
     def test(self):
diff --git a/lldb/test/API/macosx/ctf/TestCTF.py b/lldb/test/API/macosx/ctf/TestCTF.py
index c7c479b057d67..6f1f4354ecc7e 100644
--- a/lldb/test/API/macosx/ctf/TestCTF.py
+++ b/lldb/test/API/macosx/ctf/TestCTF.py
@@ -21,14 +21,14 @@ def no_objcopy(self):
 
     @skipTestIfFn(no_ctf_convert)
     @skipTestIfFn(no_objcopy)
-    @skipUnlessDarwin
+    @requireDarwin
     def test(self):
         self.build()
         self.do_test()
 
     @skipTestIfFn(no_ctf_convert)
     @skipTestIfFn(no_objcopy)
-    @skipUnlessDarwin
+    @requireDarwin
     def test_compressed(self):
         self.build(dictionary={"COMPRESS_CTF": "YES"})
         self.do_test()
diff --git a/lldb/test/API/macosx/debugserver-exit-code/TestDebugServerExitCode.py b/lldb/test/API/macosx/debugserver-exit-code/TestDebugServerExitCode.py
index 2d9c0f5f97773..56f653dab6567 100644
--- a/lldb/test/API/macosx/debugserver-exit-code/TestDebugServerExitCode.py
+++ b/lldb/test/API/macosx/debugserver-exit-code/TestDebugServerExitCode.py
@@ -10,7 +10,7 @@
 
 class TestCase(TestBase):
     @no_debug_info_test
-    @skipUnlessDarwin
+    @requireDarwin
     def test_abort(self):
         self.build()
         target = self.dbg.CreateTarget(self.getBuildArtifact("a.out"))
diff --git a/lldb/test/API/macosx/debugserver-multimemread/TestDebugserverMultiMemRead.py b/lldb/test/API/macosx/debugserver-multimemread/TestDebugserverMultiMemRead.py
index ab6e952fb7dd1..09dfbfe63216e 100644
--- a/lldb/test/API/macosx/debugserver-multimemread/TestDebugserverMultiMemRead.py
+++ b/lldb/test/API/macosx/debugserver-multimemread/TestDebugserverMultiMemRead.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipUnlessDarwin
+ at requireDarwin
 @skipIfOutOfTreeDebugserver
 class TestCase(TestBase):
     def check_invalid_packet(self, packet_str):
diff --git a/lldb/test/API/macosx/delay-init-dependency/TestDelayInitDependency.py b/lldb/test/API/macosx/delay-init-dependency/TestDelayInitDependency.py
index 74459999187f7..6c91ee48d2e5e 100644
--- a/lldb/test/API/macosx/delay-init-dependency/TestDelayInitDependency.py
+++ b/lldb/test/API/macosx/delay-init-dependency/TestDelayInitDependency.py
@@ -10,7 +10,7 @@
 class TestDelayInitDependencies(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIf(macos_version=["<", "15.0"])
     @skipIfRemote
     def test_delay_init_dependency(self):
diff --git a/lldb/test/API/macosx/deny-attach/TestDenyAttach.py b/lldb/test/API/macosx/deny-attach/TestDenyAttach.py
index f061bee51c31f..1abf5cb678378 100644
--- a/lldb/test/API/macosx/deny-attach/TestDenyAttach.py
+++ b/lldb/test/API/macosx/deny-attach/TestDenyAttach.py
@@ -8,7 +8,7 @@
 class DenyAttachTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIfDarwinEmbedded  # PT_DENY_ATTACH attach behavior differs on ios/tvos/etc
     @skipIfAsan  # Attach tests time out inconsistently under asan.
     def test_attach_to_deny_attach_process(self):
diff --git a/lldb/test/API/macosx/dsym_codesign/TestdSYMCodesign.py b/lldb/test/API/macosx/dsym_codesign/TestdSYMCodesign.py
index bceef9ee27ea6..971a6f006d47f 100644
--- a/lldb/test/API/macosx/dsym_codesign/TestdSYMCodesign.py
+++ b/lldb/test/API/macosx/dsym_codesign/TestdSYMCodesign.py
@@ -28,7 +28,7 @@ def has_lldb_codesign():
         return False
 
 
- at skipUnlessDarwin
+ at requireDarwin
 class TestdSYMCodesign(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
     SHARED_BUILD_TESTCASE = False
diff --git a/lldb/test/API/macosx/dsym_modules/TestdSYMModuleInit.py b/lldb/test/API/macosx/dsym_modules/TestdSYMModuleInit.py
index 77625356eb37e..c3ced18dcf049 100644
--- a/lldb/test/API/macosx/dsym_modules/TestdSYMModuleInit.py
+++ b/lldb/test/API/macosx/dsym_modules/TestdSYMModuleInit.py
@@ -11,7 +11,7 @@
 from lldbsuite.test.decorators import *
 
 
- at skipUnlessDarwin
+ at requireDarwin
 class TestdSYMModuleInit(TestBase):
     SHARED_BUILD_TESTCASE = False
 
diff --git a/lldb/test/API/macosx/dyld-trie-symbols/TestDyldTrieSymbols.py b/lldb/test/API/macosx/dyld-trie-symbols/TestDyldTrieSymbols.py
index 788cff92bdbaa..369d9dabbe240 100644
--- a/lldb/test/API/macosx/dyld-trie-symbols/TestDyldTrieSymbols.py
+++ b/lldb/test/API/macosx/dyld-trie-symbols/TestDyldTrieSymbols.py
@@ -12,7 +12,7 @@ class DyldTrieSymbolsTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
     @skipIfRemote
-    @skipUnlessDarwin
+    @requireDarwin
     def test_dyld_trie_symbols(self):
         """Test that we make create symbol table entries from the dyld trie data structure."""
         self.build()
diff --git a/lldb/test/API/macosx/early-process-launch/TestEarlyProcessLaunch.py b/lldb/test/API/macosx/early-process-launch/TestEarlyProcessLaunch.py
index 4c1bbe7490018..63a77b89c85de 100644
--- a/lldb/test/API/macosx/early-process-launch/TestEarlyProcessLaunch.py
+++ b/lldb/test/API/macosx/early-process-launch/TestEarlyProcessLaunch.py
@@ -10,7 +10,7 @@
 class TestEarlyProcessLaunch(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIfAsan  # rdar://103359354
     # until this feature is included in the system
     # debugserver.
diff --git a/lldb/test/API/macosx/expedited-stack-memory/TestExpeditedStackMemory.py b/lldb/test/API/macosx/expedited-stack-memory/TestExpeditedStackMemory.py
index e8c8076699af7..9dc9455625f28 100644
--- a/lldb/test/API/macosx/expedited-stack-memory/TestExpeditedStackMemory.py
+++ b/lldb/test/API/macosx/expedited-stack-memory/TestExpeditedStackMemory.py
@@ -34,18 +34,18 @@
 class TestExpeditedStackMemory(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_no_packets_during_backtrace(self):
         """With the memory cache on, the backtrace sends no packets at all."""
         self.check_packets_during_backtrace(disable_memory_cache=False)
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_memory_reads_during_backtrace_without_cache(self):
         """With the memory cache off, the backtrace reads the backchain from the
         stub, producing memory-read packets."""
         self.check_packets_during_backtrace(disable_memory_cache=True)
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_memory_reads_when_examining_frame0_locals(self):
         """Model an IDE stop: walk the whole stack (a backtrace / debug
         navigator) but examine the locals of only the selected frame 0.
@@ -54,7 +54,7 @@ def test_memory_reads_when_examining_frame0_locals(self):
         heap memory."""
         self.check_memory_reads_when_examining_locals(examine_all_frames=False)
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_memory_reads_when_examining_all_frames_locals(self):
         """Model "view all frames": walk the whole stack and examine every
         frame's locals.  This reads the same variety of memory across several
diff --git a/lldb/test/API/macosx/expedited-thread-pcs/TestExpeditedThreadPCs.py b/lldb/test/API/macosx/expedited-thread-pcs/TestExpeditedThreadPCs.py
index 7416268805460..c1871d0949833 100644
--- a/lldb/test/API/macosx/expedited-thread-pcs/TestExpeditedThreadPCs.py
+++ b/lldb/test/API/macosx/expedited-thread-pcs/TestExpeditedThreadPCs.py
@@ -12,7 +12,7 @@
 class TestExpeditedThreadPCs(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_expedited_thread_pcs(self):
         TestBase.setUp(self)
 
diff --git a/lldb/test/API/macosx/extended-backtrace-api/TestExtendedBacktraceAPI.py b/lldb/test/API/macosx/extended-backtrace-api/TestExtendedBacktraceAPI.py
index fb52ae2499a60..4f649ac43c91a 100644
--- a/lldb/test/API/macosx/extended-backtrace-api/TestExtendedBacktraceAPI.py
+++ b/lldb/test/API/macosx/extended-backtrace-api/TestExtendedBacktraceAPI.py
@@ -15,7 +15,7 @@ def setUp(self):
         TestBase.setUp(self)
         self.main_source = "main.m"
 
-    @skipUnlessDarwin
+    @requireDarwin
     @add_test_categories(["objc", "pyapi"])
     def test_extended_backtrace_thread_api(self):
         """Test GetExtendedBacktraceThread with queue debugging."""
diff --git a/lldb/test/API/macosx/find-app-in-bundle/TestFindAppInBundle.py b/lldb/test/API/macosx/find-app-in-bundle/TestFindAppInBundle.py
index 5b666797373be..af2a67e3332d0 100644
--- a/lldb/test/API/macosx/find-app-in-bundle/TestFindAppInBundle.py
+++ b/lldb/test/API/macosx/find-app-in-bundle/TestFindAppInBundle.py
@@ -9,7 +9,7 @@
 from lldbsuite.test.lldbtest import *
 
 
- at decorators.skipUnlessDarwin
+ at decorators.requireDarwin
 class FindAppInMacOSAppBundle(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
diff --git a/lldb/test/API/macosx/find-dsym/bundle-with-dot-in-filename/TestBundleWithDotInFilename.py b/lldb/test/API/macosx/find-dsym/bundle-with-dot-in-filename/TestBundleWithDotInFilename.py
index cecdfd2673e37..bbc1c42c69a59 100644
--- a/lldb/test/API/macosx/find-dsym/bundle-with-dot-in-filename/TestBundleWithDotInFilename.py
+++ b/lldb/test/API/macosx/find-dsym/bundle-with-dot-in-filename/TestBundleWithDotInFilename.py
@@ -26,7 +26,7 @@ def tearDown(self):
         TestBase.tearDown(self)
 
     @skipIfRemote
-    @skipUnlessDarwin
+    @requireDarwin
     # This test is explicitly a dSYM test, it doesn't need to run for any other config.
     @skipIf(debug_info=no_match(["dsym"]))
     def test_attach_and_check_dsyms(self):
diff --git a/lldb/test/API/macosx/find-dsym/deep-bundle/TestDeepBundle.py b/lldb/test/API/macosx/find-dsym/deep-bundle/TestDeepBundle.py
index b7df2845c0d11..6694211846782 100644
--- a/lldb/test/API/macosx/find-dsym/deep-bundle/TestDeepBundle.py
+++ b/lldb/test/API/macosx/find-dsym/deep-bundle/TestDeepBundle.py
@@ -25,7 +25,7 @@ def tearDown(self):
         TestBase.tearDown(self)
 
     @skipIfRemote
-    @skipUnlessDarwin
+    @requireDarwin
     # This test is explicitly a dSYM test, it doesn't need to run for any other config.
     @skipIf(debug_info=no_match(["dsym"]))
     def test_attach_and_check_dsyms(self):
diff --git a/lldb/test/API/macosx/format/TestFunctionNameWithoutArgs.py b/lldb/test/API/macosx/format/TestFunctionNameWithoutArgs.py
index 88d2e210bccf7..5ccc422563bf0 100644
--- a/lldb/test/API/macosx/format/TestFunctionNameWithoutArgs.py
+++ b/lldb/test/API/macosx/format/TestFunctionNameWithoutArgs.py
@@ -4,7 +4,7 @@
 
 
 class TestFunctionNameWithoutArgs(TestBase):
-    @skipUnlessDarwin
+    @requireDarwin
     @no_debug_info_test
     def test_function_name_without_args(self):
         self.build()
diff --git a/lldb/test/API/macosx/function-starts/TestFunctionStarts.py b/lldb/test/API/macosx/function-starts/TestFunctionStarts.py
index 9a3e6a6a9aad0..964df524c6be2 100644
--- a/lldb/test/API/macosx/function-starts/TestFunctionStarts.py
+++ b/lldb/test/API/macosx/function-starts/TestFunctionStarts.py
@@ -16,7 +16,7 @@ class FunctionStartsTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
     @skipIfRemote
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIf(compiler="clang", compiler_version=["<", "13.0"])
     def test_function_starts_binary(self):
         """Test that we make synthetic symbols when we have the binary."""
@@ -24,7 +24,7 @@ def test_function_starts_binary(self):
         self.do_function_starts(False)
 
     @skipIfRemote
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIf(compiler="clang", compiler_version=["<", "13.0"])
     def test_function_starts_no_binary(self):
         """Test that we make synthetic symbols when we don't have the binary"""
diff --git a/lldb/test/API/macosx/ignore_exceptions/TestIgnoredExceptions.py b/lldb/test/API/macosx/ignore_exceptions/TestIgnoredExceptions.py
index 8d2674f7bad30..a3c3c6f80b639 100644
--- a/lldb/test/API/macosx/ignore_exceptions/TestIgnoredExceptions.py
+++ b/lldb/test/API/macosx/ignore_exceptions/TestIgnoredExceptions.py
@@ -12,7 +12,7 @@
 class TestDarwinSignalHandlers(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_ignored_thread(self):
         """It isn't possible to convert an EXC_BAD_ACCESS to a signal when
         running under the debugger, which makes debugging SIGBUS handlers
diff --git a/lldb/test/API/macosx/indirect_symbol/TestIndirectSymbols.py b/lldb/test/API/macosx/indirect_symbol/TestIndirectSymbols.py
index c4bbedc928913..087c90a18b5a0 100644
--- a/lldb/test/API/macosx/indirect_symbol/TestIndirectSymbols.py
+++ b/lldb/test/API/macosx/indirect_symbol/TestIndirectSymbols.py
@@ -14,7 +14,7 @@ def setUp(self):
         # Find the line numbers that we will step to in main:
         self.main_source = "main.c"
 
-    @skipUnlessDarwin
+    @requireDarwin
     @add_test_categories(["pyapi"])
     @skipIf(bugnumber="rdar://120796553")
     def test_with_python_api(self):
diff --git a/lldb/test/API/macosx/lc-note/additional-registers/TestMetadataRegisters.py b/lldb/test/API/macosx/lc-note/additional-registers/TestMetadataRegisters.py
index cf9f055bd78fd..78046125860bf 100644
--- a/lldb/test/API/macosx/lc-note/additional-registers/TestMetadataRegisters.py
+++ b/lldb/test/API/macosx/lc-note/additional-registers/TestMetadataRegisters.py
@@ -13,7 +13,7 @@
 class TestMetadataRegisters(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIfRemote
     def test_add_registers_via_metadata(self):
         self.build()
diff --git a/lldb/test/API/macosx/lc-note/addrable-bits/TestAddrableBitsCorefile.py b/lldb/test/API/macosx/lc-note/addrable-bits/TestAddrableBitsCorefile.py
index e56ecfcb14d4b..7e1312a407dcb 100644
--- a/lldb/test/API/macosx/lc-note/addrable-bits/TestAddrableBitsCorefile.py
+++ b/lldb/test/API/macosx/lc-note/addrable-bits/TestAddrableBitsCorefile.py
@@ -20,7 +20,7 @@ def initial_setup(self):
         self.corefile = self.getBuildArtifact("corefile")
 
     @skipIf(archs=no_match(["arm64e"]))
-    @skipUnlessDarwin
+    @requireDarwin
     def test_lc_note_addrable_bits(self):
         self.initial_setup()
 
diff --git a/lldb/test/API/macosx/lc-note/firmware-corefile/TestFirmwareCorefiles.py b/lldb/test/API/macosx/lc-note/firmware-corefile/TestFirmwareCorefiles.py
index c941d7a61da05..14735a0052549 100644
--- a/lldb/test/API/macosx/lc-note/firmware-corefile/TestFirmwareCorefiles.py
+++ b/lldb/test/API/macosx/lc-note/firmware-corefile/TestFirmwareCorefiles.py
@@ -20,7 +20,7 @@ class TestFirmwareCorefiles(TestBase):
     )
     @skipIf(archs=no_match(["x86_64", "arm64", "arm64e", "aarch64"]))
     @skipIfRemote
-    @skipUnlessDarwin
+    @requireDarwin
     def test_lc_note_version_string(self):
         self.build()
         aout_exe_basename = "a.out"
@@ -120,7 +120,7 @@ def test_lc_note_version_string(self):
     )
     @skipIf(archs=no_match(["x86_64", "arm64", "arm64e", "aarch64"]))
     @skipIfRemote
-    @skipUnlessDarwin
+    @requireDarwin
     def test_lc_note_main_bin_spec(self):
         self.build()
         aout_exe_basename = "a.out"
@@ -233,7 +233,7 @@ def test_lc_note_main_bin_spec(self):
     )
     @skipIf(archs=no_match(["x86_64", "arm64", "arm64e", "aarch64"]))
     @skipIfRemote
-    @skipUnlessDarwin
+    @requireDarwin
     def test_lc_note_main_bin_spec_os_plugin(self):
         self.build()
         aout_exe = self.getBuildArtifact("a.out")
diff --git a/lldb/test/API/macosx/lc-note/kern-ver-str/TestKernVerStrLCNOTE.py b/lldb/test/API/macosx/lc-note/kern-ver-str/TestKernVerStrLCNOTE.py
index a3f9144572da5..b2d5dfe3e3b3f 100644
--- a/lldb/test/API/macosx/lc-note/kern-ver-str/TestKernVerStrLCNOTE.py
+++ b/lldb/test/API/macosx/lc-note/kern-ver-str/TestKernVerStrLCNOTE.py
@@ -17,7 +17,7 @@ class TestKernVerStrLCNOTE(TestBase):
         bugnumber="This test is looking explicitly for a dSYM",
     )
     @skipIf(archs=no_match(["x86_64"]))
-    @skipUnlessDarwin
+    @requireDarwin
     def test_lc_note(self):
         self.build()
         self.test_exe = self.getBuildArtifact("a.out")
diff --git a/lldb/test/API/macosx/lc-note/multiple-binary-corefile/TestMultipleBinaryCorefile.py b/lldb/test/API/macosx/lc-note/multiple-binary-corefile/TestMultipleBinaryCorefile.py
index 28472cb787d4a..8a35536b27301 100644
--- a/lldb/test/API/macosx/lc-note/multiple-binary-corefile/TestMultipleBinaryCorefile.py
+++ b/lldb/test/API/macosx/lc-note/multiple-binary-corefile/TestMultipleBinaryCorefile.py
@@ -82,7 +82,7 @@ def load_corefile_and_test(self):
 
     @skipIf(archs=no_match(["x86_64", "arm64", "arm64e", "aarch64"]))
     @skipIfRemote
-    @skipUnlessDarwin
+    @requireDarwin
     def test_corefile_binaries_dsymforuuid(self):
         self.initial_setup()
 
@@ -198,7 +198,7 @@ def test_corefile_binaries_dsymforuuid(self):
 
     @skipIf(archs=no_match(["x86_64", "arm64", "arm64e", "aarch64"]))
     @skipIfRemote
-    @skipUnlessDarwin
+    @requireDarwin
     def test_corefile_binaries_preloaded(self):
         self.initial_setup()
 
diff --git a/lldb/test/API/macosx/macCatalyst/TestMacCatalyst.py b/lldb/test/API/macosx/macCatalyst/TestMacCatalyst.py
index 1013976ef1b89..54a2596e85834 100644
--- a/lldb/test/API/macosx/macCatalyst/TestMacCatalyst.py
+++ b/lldb/test/API/macosx/macCatalyst/TestMacCatalyst.py
@@ -10,7 +10,7 @@ class TestMacCatalyst(TestBase):
     SHARED_BUILD_TESTCASE = False
 
     @skipIf(macos_version=["<", "10.15"])
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIfDarwinEmbedded
     def test_macabi(self):
         """Test the x86_64-apple-ios-macabi target linked against a macos dylib"""
diff --git a/lldb/test/API/macosx/macCatalystAppMacOSFramework/TestMacCatalystAppWithMacOSFramework.py b/lldb/test/API/macosx/macCatalystAppMacOSFramework/TestMacCatalystAppWithMacOSFramework.py
index 26b5c4354322f..3238d316d1ab5 100644
--- a/lldb/test/API/macosx/macCatalystAppMacOSFramework/TestMacCatalystAppWithMacOSFramework.py
+++ b/lldb/test/API/macosx/macCatalystAppMacOSFramework/TestMacCatalystAppWithMacOSFramework.py
@@ -7,7 +7,7 @@
 
 class TestMacCatalystAppWithMacOSFramework(TestBase):
     @skipIf(macos_version=["<", "10.15"])
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIfDarwinEmbedded
     # There is a Clang driver change missing on llvm.org.
     @expectedFailureAll(bugnumber="rdar://problem/54986190>")
diff --git a/lldb/test/API/macosx/mte/TestDarwinMTE.py b/lldb/test/API/macosx/mte/TestDarwinMTE.py
index d51c400922ab7..812d563b88f5c 100644
--- a/lldb/test/API/macosx/mte/TestDarwinMTE.py
+++ b/lldb/test/API/macosx/mte/TestDarwinMTE.py
@@ -11,7 +11,7 @@
 exe_name = "uaf"  # Must match Makefile
 
 
- at skipIfWasm  # memory tagging is a Darwin AArch64 feature
+ at requireNotWasm  # memory tagging is a Darwin AArch64 feature
 class TestDarwinMTE(TestBase):
     SHARED_BUILD_TESTCASE = False
     NO_DEBUG_INFO_TESTCASE = True
diff --git a/lldb/test/API/macosx/no-nlist-memory-module/TestNoNlistsDylib.py b/lldb/test/API/macosx/no-nlist-memory-module/TestNoNlistsDylib.py
index 9216cf2eab164..670722e91fb53 100644
--- a/lldb/test/API/macosx/no-nlist-memory-module/TestNoNlistsDylib.py
+++ b/lldb/test/API/macosx/no-nlist-memory-module/TestNoNlistsDylib.py
@@ -15,7 +15,7 @@ class NoNlistsTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
     @skipIfRemote
-    @skipUnlessDarwin
+    @requireDarwin
     def test_no_nlist_symbols(self):
         self.build()
 
diff --git a/lldb/test/API/macosx/nslog/TestDarwinNSLogOutput.py b/lldb/test/API/macosx/nslog/TestDarwinNSLogOutput.py
index 8ade2beee8de5..7e947935ffd56 100644
--- a/lldb/test/API/macosx/nslog/TestDarwinNSLogOutput.py
+++ b/lldb/test/API/macosx/nslog/TestDarwinNSLogOutput.py
@@ -120,7 +120,7 @@ def do_test(self, expect_regexes=None, settings_commands=None):
 
     @skipIfAsan # avoid dealing with pexpect timeout flakyness on bots
     @skipIf(oslist=["linux"], archs=["arm$", "aarch64"])
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIfRemote  # this test is currently written using lldb commands & assumes running on local system
     def test_nslog_output_is_displayed(self):
         """Test that NSLog() output shows up in the command-line debugger."""
@@ -136,7 +136,7 @@ def test_nslog_output_is_displayed(self):
 
     @skipIfAsan # avoid dealing with pexpect timeout flakyness on bots
     @skipIf(oslist=["linux"], archs=["arm$", "aarch64"])
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIfRemote  # this test is currently written using lldb commands & assumes running on local system
     def test_nslog_output_is_suppressed_with_env_var(self):
         """Test that NSLog() output does not show up with the ignore env var."""
diff --git a/lldb/test/API/macosx/objc_exception_recognizer/TestObjCRecognizer.py b/lldb/test/API/macosx/objc_exception_recognizer/TestObjCRecognizer.py
index f49e7ca0837bb..f973b7b9c09fc 100644
--- a/lldb/test/API/macosx/objc_exception_recognizer/TestObjCRecognizer.py
+++ b/lldb/test/API/macosx/objc_exception_recognizer/TestObjCRecognizer.py
@@ -11,14 +11,14 @@
 class TestObjCRecognizer(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_exception_recognizer_sub_class(self):
         """There can be many tests in a test case - describe this test here."""
         self.build()
         self.main_source_file = lldb.SBFileSpec("main.m")
         self.objc_recognizer_test(True)
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_exception_recognizer_plain(self):
         """There can be many tests in a test case - describe this test here."""
         self.build()
diff --git a/lldb/test/API/macosx/order/TestOrderFile.py b/lldb/test/API/macosx/order/TestOrderFile.py
index 77a7e7e2d6041..2f6f0e8f2d62e 100644
--- a/lldb/test/API/macosx/order/TestOrderFile.py
+++ b/lldb/test/API/macosx/order/TestOrderFile.py
@@ -11,7 +11,7 @@
 
 
 class OrderFileTestCase(TestBase):
-    @skipUnlessDarwin
+    @requireDarwin
     def test(self):
         """Test debug symbols follow the correct order by the order file."""
         self.build()
diff --git a/lldb/test/API/macosx/posix_spawn/TestLaunchProcessPosixSpawn.py b/lldb/test/API/macosx/posix_spawn/TestLaunchProcessPosixSpawn.py
index c5d1574adabf6..a74f34154bf92 100644
--- a/lldb/test/API/macosx/posix_spawn/TestLaunchProcessPosixSpawn.py
+++ b/lldb/test/API/macosx/posix_spawn/TestLaunchProcessPosixSpawn.py
@@ -49,7 +49,7 @@ def run_arch(self, exe, arch):
         self.assertState(process.GetState(), lldb.eStateExited)
         self.assertIn("slice: {}".format(arch), process.GetSTDOUT(1000))
 
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIfDarwinEmbedded
     @skipIfLLVMTargetMissing("AArch64")
     @skipIfLLVMTargetMissing("X86")
@@ -60,7 +60,7 @@ def test_haswell(self):
         self.run_arch(exe, "x86_64")
         self.run_arch(exe, "x86_64h")
 
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIf(bugnumber="rdar://170040996")
     @skipIfDarwinEmbedded
     @skipIfLLVMTargetMissing("AArch64")
diff --git a/lldb/test/API/macosx/profile_vrs_detach/TestDetachVrsProfile.py b/lldb/test/API/macosx/profile_vrs_detach/TestDetachVrsProfile.py
index b558b6215ceda..ca740a1771cd0 100644
--- a/lldb/test/API/macosx/profile_vrs_detach/TestDetachVrsProfile.py
+++ b/lldb/test/API/macosx/profile_vrs_detach/TestDetachVrsProfile.py
@@ -18,7 +18,7 @@
 class TestDetachVrsProfile(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIfRemote
     def test_profile_and_detach(self):
         """There can be many tests in a test case - describe this test here."""
diff --git a/lldb/test/API/macosx/queues/TestQueues.py b/lldb/test/API/macosx/queues/TestQueues.py
index a1e1aae4f45c1..91f9c5b15146b 100644
--- a/lldb/test/API/macosx/queues/TestQueues.py
+++ b/lldb/test/API/macosx/queues/TestQueues.py
@@ -9,20 +9,20 @@
 
 
 class TestQueues(TestBase):
-    @skipUnlessDarwin
+    @requireDarwin
     @add_test_categories(["pyapi"])
     def test_with_python_api_queues(self):
         """Test queues inspection SB APIs."""
         self.build()
         self.queues()
 
-    @skipUnlessDarwin
+    @requireDarwin
     @add_test_categories(["pyapi"])
     def test_queue_specific_breakpoints(self):
         self.build()
         self.queue_specific_breakpoints()
 
-    @skipUnlessDarwin
+    @requireDarwin
     @add_test_categories(["pyapi"])
     def test_with_python_api_queues_with_backtrace(self):
         """Test queues inspection SB APIs."""
diff --git a/lldb/test/API/macosx/safe-to-func-call/TestSafeFuncCalls.py b/lldb/test/API/macosx/safe-to-func-call/TestSafeFuncCalls.py
index 551cab1269c51..789bb4bc11bd9 100644
--- a/lldb/test/API/macosx/safe-to-func-call/TestSafeFuncCalls.py
+++ b/lldb/test/API/macosx/safe-to-func-call/TestSafeFuncCalls.py
@@ -8,7 +8,7 @@
 
 
 class TestSafeFuncCalls(TestBase):
-    @skipUnlessDarwin
+    @requireDarwin
     @add_test_categories(["pyapi"])
     def test_with_python_api(self):
         """Test function call thread safety."""
diff --git a/lldb/test/API/macosx/save_crashlog/TestSaveCrashlog.py b/lldb/test/API/macosx/save_crashlog/TestSaveCrashlog.py
index 5d9a46efc290a..7c4a94b495ca7 100644
--- a/lldb/test/API/macosx/save_crashlog/TestSaveCrashlog.py
+++ b/lldb/test/API/macosx/save_crashlog/TestSaveCrashlog.py
@@ -16,7 +16,7 @@ class TestSaveCrashlog(TestBase):
     # each debug info format.
     NO_DEBUG_INFO_TESTCASE = True
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_save_crashlog(self):
         """There can be many tests in a test case - describe this test here."""
         self.build()
diff --git a/lldb/test/API/macosx/shared-cache-host-memory/TestSharedCacheHostMemory.py b/lldb/test/API/macosx/shared-cache-host-memory/TestSharedCacheHostMemory.py
index f45bf89b99444..87d632bff64cf 100644
--- a/lldb/test/API/macosx/shared-cache-host-memory/TestSharedCacheHostMemory.py
+++ b/lldb/test/API/macosx/shared-cache-host-memory/TestSharedCacheHostMemory.py
@@ -7,7 +7,7 @@
 class SharedCacheHostMemoryTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIfRemote
     def test_host_lldb_memory(self):
         """Stop in a shared cache binary loaded from lldb's own memory and
diff --git a/lldb/test/API/macosx/shared-cache-vm-range/TestSharedCacheVMRange.py b/lldb/test/API/macosx/shared-cache-vm-range/TestSharedCacheVMRange.py
index c196d3042e4e9..f823ef6b24e1b 100644
--- a/lldb/test/API/macosx/shared-cache-vm-range/TestSharedCacheVMRange.py
+++ b/lldb/test/API/macosx/shared-cache-vm-range/TestSharedCacheVMRange.py
@@ -14,7 +14,7 @@ class SharedCacheVMRangeTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
     @skipIfRemote
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIfOutOfTreeDebugserver  # debugserver returns shared_cache_size
     def test_shared_cache_vm_range(self):
         """Test that the shared cache VM range contains a known libc function"""
diff --git a/lldb/test/API/macosx/simulator/TestSimulatorPlatform.py b/lldb/test/API/macosx/simulator/TestSimulatorPlatform.py
index 7a87db0940e32..14d3f0ba511df 100644
--- a/lldb/test/API/macosx/simulator/TestSimulatorPlatform.py
+++ b/lldb/test/API/macosx/simulator/TestSimulatorPlatform.py
@@ -99,7 +99,7 @@ def run_with(self, arch, os, vers, env, expected_platform=None):
             )
 
     @skipIfAsan
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIfDarwinEmbedded
     @apple_simulator_test("iphone")
     @skipIf(archs=["x86_64"])
@@ -114,7 +114,7 @@ def test_ios(self):
         )
 
     @skipIfAsan
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIfDarwinEmbedded
     @apple_simulator_test("appletv")
     @skipIf(archs=["x86_64"])
diff --git a/lldb/test/API/macosx/skinny-corefile/TestSkinnyCorefile.py b/lldb/test/API/macosx/skinny-corefile/TestSkinnyCorefile.py
index 66a3cba83ff45..2a4654c66e4c2 100644
--- a/lldb/test/API/macosx/skinny-corefile/TestSkinnyCorefile.py
+++ b/lldb/test/API/macosx/skinny-corefile/TestSkinnyCorefile.py
@@ -18,7 +18,7 @@ class TestSkinnyCorefile(TestBase):
         debug_info=no_match(["dsym"]),
         bugnumber="This test is looking explicitly for a dSYM",
     )
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIfRemote
     def test_lc_note(self):
         self.build()
diff --git a/lldb/test/API/macosx/sme-registers/TestSMERegistersDarwin.py b/lldb/test/API/macosx/sme-registers/TestSMERegistersDarwin.py
index c762c8da78ca8..14588478300cc 100644
--- a/lldb/test/API/macosx/sme-registers/TestSMERegistersDarwin.py
+++ b/lldb/test/API/macosx/sme-registers/TestSMERegistersDarwin.py
@@ -10,7 +10,7 @@ class TestSMERegistersDarwin(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
     mydir = TestBase.compute_mydir(__file__)
 
-    @skipUnlessDarwin
+    @requireDarwin
     @skipUnlessFeature(cpu_feature.AArch64.SME)
     @skipUnlessFeature(cpu_feature.AArch64.SME2)
     # thread_set_state/thread_get_state only avail in macOS 15.4+
diff --git a/lldb/test/API/macosx/stack-corefile/TestStackCorefile.py b/lldb/test/API/macosx/stack-corefile/TestStackCorefile.py
index b96bfe87ad48f..de79e4a79b190 100644
--- a/lldb/test/API/macosx/stack-corefile/TestStackCorefile.py
+++ b/lldb/test/API/macosx/stack-corefile/TestStackCorefile.py
@@ -12,7 +12,7 @@
 
 class TestStackCorefile(TestBase):
     @no_debug_info_test
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIfRemote
     def test(self):
         corefile = self.getBuildArtifact("process.core")
diff --git a/lldb/test/API/macosx/stop-reason-exception/TestMachExceptionData.py b/lldb/test/API/macosx/stop-reason-exception/TestMachExceptionData.py
index 36b1c21feefee..a069cf35f889c 100644
--- a/lldb/test/API/macosx/stop-reason-exception/TestMachExceptionData.py
+++ b/lldb/test/API/macosx/stop-reason-exception/TestMachExceptionData.py
@@ -12,7 +12,7 @@
 class TestMachExceptionData(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_exc_bad_access(self):
         """Test that we get type 1, code 1 and the right address for
         a EXC_BAD_ACCESS mach exception."""
diff --git a/lldb/test/API/macosx/tbi-honored/TestTBIHonored.py b/lldb/test/API/macosx/tbi-honored/TestTBIHonored.py
index a5c0abd70e5a9..f7d33ed5c8c6d 100644
--- a/lldb/test/API/macosx/tbi-honored/TestTBIHonored.py
+++ b/lldb/test/API/macosx/tbi-honored/TestTBIHonored.py
@@ -27,7 +27,7 @@ def do_variable_access_tests(self, frame):
     # This test is valid on AArch64 systems with TBI mode enabled,
     # and an address mask that clears the top byte before reading
     # from memory.
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIf(archs=no_match(["arm64", "arm64e"]))
     @skipIfRemote
     def test(self):
diff --git a/lldb/test/API/macosx/thread-names/TestInterruptThreadNames.py b/lldb/test/API/macosx/thread-names/TestInterruptThreadNames.py
index 9b99aae8214ae..053e8ca8ac39a 100644
--- a/lldb/test/API/macosx/thread-names/TestInterruptThreadNames.py
+++ b/lldb/test/API/macosx/thread-names/TestInterruptThreadNames.py
@@ -11,7 +11,7 @@
 class TestInterruptThreadNames(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
-    @skipUnlessDarwin
+    @requireDarwin
     @add_test_categories(["pyapi"])
     def test_with_python_api(self):
         """Test that we get thread names when interrupting a process."""
diff --git a/lldb/test/API/macosx/thread_start_bps/TestBreakpointsThreadInit.py b/lldb/test/API/macosx/thread_start_bps/TestBreakpointsThreadInit.py
index bf667f6f7d336..17880ff926318 100644
--- a/lldb/test/API/macosx/thread_start_bps/TestBreakpointsThreadInit.py
+++ b/lldb/test/API/macosx/thread_start_bps/TestBreakpointsThreadInit.py
@@ -8,7 +8,7 @@
 
 
 class TestInterruptThreadNames(TestBase):
-    @skipUnlessDarwin
+    @requireDarwin
     def test_internal_bps_resolved(self):
         self.build()
 
@@ -36,7 +36,7 @@ def test_internal_bps_resolved(self):
             num_resolved += bp.GetNumResolvedLocations()
         self.assertGreater(num_resolved, 0)
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_internal_bps_deleted_on_relaunch(self):
         self.build()
 
diff --git a/lldb/test/API/macosx/thread_suspend/TestInternalThreadSuspension.py b/lldb/test/API/macosx/thread_suspend/TestInternalThreadSuspension.py
index b41c2ae0976a2..cbc70150862d2 100644
--- a/lldb/test/API/macosx/thread_suspend/TestInternalThreadSuspension.py
+++ b/lldb/test/API/macosx/thread_suspend/TestInternalThreadSuspension.py
@@ -12,7 +12,7 @@
 class TestSuspendedThreadHandling(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_suspended_threads(self):
         """Test that debugserver doesn't disturb the suspend count of a thread
         that has been suspended from within a program, when navigating breakpoints
diff --git a/lldb/test/API/macosx/universal/TestUniversal.py b/lldb/test/API/macosx/universal/TestUniversal.py
index 3c043df641978..2fe3ec115759a 100644
--- a/lldb/test/API/macosx/universal/TestUniversal.py
+++ b/lldb/test/API/macosx/universal/TestUniversal.py
@@ -23,7 +23,7 @@ def setUp(self):
         self.line = line_number("main.c", "// Set break point at this line.")
 
     @add_test_categories(["pyapi"])
-    @skipUnlessDarwin
+    @requireDarwin
     @unittest.skipUnless(
         hasattr(os, "uname") and os.uname()[4] in ["x86_64"], "requires x86_64"
     )
@@ -49,7 +49,7 @@ def test_sbdebugger_create_target_with_file_and_target_triple(self):
         process = target.LaunchSimple(None, None, self.get_process_working_directory())
         self.assertTrue(process, PROCESS_IS_VALID)
 
-    @skipUnlessDarwin
+    @requireDarwin
     @unittest.skipUnless(
         hasattr(os, "uname") and os.uname()[4] in ["x86_64"], "requires x86_64"
     )
@@ -112,7 +112,7 @@ def test_process_launch_for_universal(self):
         self.expect("image list -A -b", substrs=["x86_64h testit"])
         self.runCmd("continue")
 
-    @skipUnlessDarwin
+    @requireDarwin
     @unittest.skipUnless(
         hasattr(os, "uname") and os.uname()[4] in ["x86_64"], "requires x86_64"
     )
diff --git a/lldb/test/API/macosx/universal64/TestUniversal64.py b/lldb/test/API/macosx/universal64/TestUniversal64.py
index 3467aa1754e4b..f5a6a4cef9621 100644
--- a/lldb/test/API/macosx/universal64/TestUniversal64.py
+++ b/lldb/test/API/macosx/universal64/TestUniversal64.py
@@ -20,7 +20,7 @@ def do_test(self):
     # The Makefile manually invokes clang.
     @skipIfLLVMTargetMissing("X86")
     @skipIfAsan
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIfDarwinEmbedded
     def test_universal64_executable(self):
         """Test fat64 universal executable"""
@@ -30,7 +30,7 @@ def test_universal64_executable(self):
     # The Makefile manually invokes clang.
     @skipIfLLVMTargetMissing("X86")
     @skipIfAsan
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIfDarwinEmbedded
     def test_universal64_dsym(self):
         """Test fat64 universal dSYM"""
diff --git a/lldb/test/API/macosx/unregistered-macho/TestUnregisteredMacho.py b/lldb/test/API/macosx/unregistered-macho/TestUnregisteredMacho.py
index d887d55f11612..11ff1d4e1efa7 100644
--- a/lldb/test/API/macosx/unregistered-macho/TestUnregisteredMacho.py
+++ b/lldb/test/API/macosx/unregistered-macho/TestUnregisteredMacho.py
@@ -14,7 +14,7 @@ class TestUnregisteredMacho(TestBase):
     # newer debugserver required for jGetLoadedDynamicLibrariesInfos
     # to support this
     @no_debug_info_test
-    @skipUnlessDarwin
+    @requireDarwin
     def test(self):
         self.build()
         target, process, thread, bkpt = lldbutil.run_to_source_breakpoint(
diff --git a/lldb/test/API/windows/conpty/TestConPTY.py b/lldb/test/API/windows/conpty/TestConPTY.py
index f192367a801f6..455263eb0d962 100644
--- a/lldb/test/API/windows/conpty/TestConPTY.py
+++ b/lldb/test/API/windows/conpty/TestConPTY.py
@@ -61,7 +61,7 @@ def _run_to_exit(self, mode):
 
         return process.GetSTDOUT(1 << 20)
 
-    @skipUnlessWindows
+    @requireWindows
     @skipUnlessWindowsConPTY2022
     @skipIf(oslist=["windows"], archs=["aarch64"], bugnumber="#194069")
     def test_stdout_delivery(self):
@@ -72,7 +72,7 @@ def test_stdout_delivery(self):
         output = self._strip_output(output)
         self.assertIn("Hello from ConPTY\r\n", output)
 
-    @skipUnlessWindows
+    @requireWindows
     @skipUnlessWindowsConPTY2022
     @skipIf(oslist=["windows"], archs=["aarch64"], bugnumber="#194069")
     def test_large_output(self):
@@ -90,7 +90,7 @@ def test_large_output(self):
         for i, line in enumerate(output_lines):
             self.assertEqual("line %04d" % i, line)
 
-    @skipUnlessWindows
+    @requireWindows
     @skipUnlessWindowsConPTY
     @skipIf(oslist=["windows"], archs=["aarch64"], bugnumber="#194069")
     def test_basic_output_without_vt_check(self):
@@ -107,7 +107,7 @@ def test_basic_output_without_vt_check(self):
         stripped = re.sub(r"\x1b\[[0-9;?]*[A-Za-z]", "", output)
         self.assertIn("Hello from ConPTY", stripped)
 
-    @skipUnlessWindows
+    @requireWindows
     @skipUnlessWindowsConPTY2022
     @skipIf(oslist=["windows"], archs=["aarch64"], bugnumber="#194069")
     def test_no_screen_clear_on_init(self):
diff --git a/lldb/test/API/windows/debug-heap/TestWindowsDebugHeap.py b/lldb/test/API/windows/debug-heap/TestWindowsDebugHeap.py
index 0d5ba5dc40f13..69bb22da366ea 100644
--- a/lldb/test/API/windows/debug-heap/TestWindowsDebugHeap.py
+++ b/lldb/test/API/windows/debug-heap/TestWindowsDebugHeap.py
@@ -8,7 +8,7 @@
 from typing import List
 
 
- at skipUnlessWindows
+ at requireWindows
 class DebugHeapTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
diff --git a/lldb/test/API/windows/launch/missing-dll/TestMissingDll.py b/lldb/test/API/windows/launch/missing-dll/TestMissingDll.py
index d1e972c7f0bcb..5d51e0bd6b1ee 100644
--- a/lldb/test/API/windows/launch/missing-dll/TestMissingDll.py
+++ b/lldb/test/API/windows/launch/missing-dll/TestMissingDll.py
@@ -6,7 +6,7 @@
 
 @skipIfTargetDoesNotSupportSharedLibraries()
 class MissingDllTestCase(TestBase):
-    @skipUnlessWindows
+    @requireWindows
     def test(self):
         """
         Test that lldb reports the application's exit code (STATUS_DLL_NOT_FOUND),
diff --git a/lldb/test/API/windows/launch/replace-dll/TestReplaceDLL.py b/lldb/test/API/windows/launch/replace-dll/TestReplaceDLL.py
index 91111702169ae..83250f1700666 100644
--- a/lldb/test/API/windows/launch/replace-dll/TestReplaceDLL.py
+++ b/lldb/test/API/windows/launch/replace-dll/TestReplaceDLL.py
@@ -10,7 +10,7 @@
 class ReplaceDllTestCase(TestBase):
     SHARED_BUILD_TESTCASE = False
 
-    @skipUnlessWindows
+    @requireWindows
     def test(self):
         """
         Test that LLDB unlocks module files once all references are released.
diff --git a/lldb/test/API/windows/msvcrt/TestMSVCRTCException.py b/lldb/test/API/windows/msvcrt/TestMSVCRTCException.py
index 63727c37b1ae3..b379e50d48cbd 100644
--- a/lldb/test/API/windows/msvcrt/TestMSVCRTCException.py
+++ b/lldb/test/API/windows/msvcrt/TestMSVCRTCException.py
@@ -9,7 +9,7 @@
 class TestMSVCRTCException(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
-    @skipUnlessPlatform(["windows"])
+    @requireWindows
     @skipUnlessMSVC
     def test_msvc_runtime_checks(self):
         """Test that lldb prints MSVC's runtime checks exceptions as stop reasons."""
diff --git a/lldb/test/API/windows/thread/TestThreadName.py b/lldb/test/API/windows/thread/TestThreadName.py
index 590b936191a22..7680790a6d49f 100644
--- a/lldb/test/API/windows/thread/TestThreadName.py
+++ b/lldb/test/API/windows/thread/TestThreadName.py
@@ -9,7 +9,7 @@
 
 
 class TestThreadName(TestBase):
-    @skipUnlessWindows
+    @requireWindows
     @skipIfWindows(windows_version=["<", "10.0.14393"])
     def test_with_thread_description(self):
         """SBThread.GetName() reflects SetThreadDescription on Windows."""
diff --git a/llvm/utils/lit/lit/reports.py b/llvm/utils/lit/lit/reports.py
index c5b09fe81bb21..4a166e16c500a 100755
--- a/llvm/utils/lit/lit/reports.py
+++ b/llvm/utils/lit/lit/reports.py
@@ -183,7 +183,7 @@ def _get_skip_reason(self, test):
         if code == lit.Test.EXCLUDED:
             return "Test not selected (--filter, --max-tests)"
         if code == lit.Test.SKIPPED:
-            return "User interrupt"
+            return "Skipped"
 
         assert code == lit.Test.UNSUPPORTED
         features = test.getMissingRequiredFeatures()

>From b97a51343ed25fdeee807ea8fb0e6c83681594f9 Mon Sep 17 00:00:00 2001
From: Charles Zablit <c_zablit at apple.com>
Date: Wed, 29 Jul 2026 15:05:50 +0100
Subject: [PATCH 2/2] follow up

---
 .../add-dsym/uuid/TestAddDsymCommand.py       |  2 +-
 .../language/TestFrameLanguageCommands.py     |  2 +-
 .../API/commands/dwim-print/TestDWIMPrint.py  |  2 +-
 .../dwim-print/objc/TestDWIMPrintObjC.py      |  4 +--
 .../TestCallUserAnonTypedef.py                |  2 +-
 .../TestArgumentPassingRestrictions.py        |  2 +-
 .../TestCallStdStringFunction.py              |  2 +-
 .../call-function/TestCallStopAndContinue.py  |  2 +-
 .../TestCallUserDefinedFunction.py            |  2 +-
 .../call-restarts/TestCallThatRestarts.py     |  4 +--
 ...emplateSpecializationParametersHandling.py |  2 +-
 .../context-object/TestContextObject.py       |  2 +-
 .../expr-with-fork/TestExprWithFork.py        | 32 +++++++++----------
 .../TestExprInsideLambdas.py                  |  2 +-
 .../expression/formatters/TestFormatters.py   |  2 +-
 .../inline-namespace/TestInlineNamespace.py   |  2 +-
 .../TestInlineNamespaceAlias.py               |  2 +-
 .../TestNestedPersistentTypes.py              |  2 +-
 .../persistent_types/TestPersistentTypes.py   |  2 +-
 .../TestPoPersistentResult.py                 |  6 ++--
 .../expression/pr35310/TestExprsBug35310.py   |  2 +-
 .../radar_9531204/TestPrintfAfterUp.py        |  2 +-
 .../radar_9673664/TestExprHelpExamples.py     |  2 +-
 .../result_numbering/TestResultNumbering.py   |  2 +-
 .../API/commands/expression/test/TestExprs.py |  2 +-
 .../expression/timeout/TestCallWithTimeout.py |  2 +-
 .../unwind_expression/TestUnwindExpression.py |  2 +-
 .../weak_symbols/TestWeakSymbols.py           |  2 +-
 .../expression/xvalue/TestXValuePrinting.py   |  2 +-
 .../frame/recognizer/TestFrameRecognizer.py   |  2 +-
 .../API/commands/frame/var/TestFrameVar.py    |  4 +--
 .../objc/TestFrameVarDirectIvarObjC.py        |  4 +--
 .../TestFrameVarDirectIvarObjCPlusPlus.py     |  6 ++--
 .../platform/basic/TestPlatformPython.py      |  2 +-
 .../platform/connect/TestPlatformConnect.py   |  2 +-
 .../TestPlatformLaunchGDBServer.py            |  2 +-
 .../platform/process/list/TestProcessList.py  |  2 +-
 .../commands/platform/sdk/TestPlatformSDK.py  |  2 +-
 .../process/attach/TestProcessAttach.py       |  2 +-
 .../attach/attach_denied/TestAttachDenied.py  |  4 +--
 .../process/handle/TestProcessHandle.py       |  2 +-
 .../TestLaunchWithShellExpand.py              |  2 +-
 .../reverse-continue/TestReverseContinue.py   |  2 +-
 .../commands/protocol/TestMCPUnixSocket.py    |  2 +-
 .../register_command/TestRegisters.py         |  2 +-
 .../commands/statistics/basic/TestStats.py    |  6 ++--
 .../TestAutoInstallMainExecutable.py          |  2 +-
 .../target/dump-pcm-info/TestDumpPCMInfo.py   |  2 +-
 .../oso/TestDumpOso.py                        | 10 +++---
 .../target/stop-hooks/TestStopHooks.py        |  2 +-
 .../API/driver/batch_mode/TestBatchMode.py    |  2 +-
 .../API/driver/longpath/TestLongPathDriver.py |  2 +-
 .../archives/TestBSDArchives.py               |  6 ++--
 .../functionalities/asan/TestMemoryHistory.py |  4 +--
 .../functionalities/asan/TestReportData.py    |  2 +-
 .../TestCrashingCondition.py                  |  2 +-
 .../TestLocationsAfterRebuild.py              |  4 +--
 .../cpp/TestCPPBreakpointLocations.py         |  2 +-
 .../TestCPPExceptionBreakpoint.py             |  2 +-
 .../TestDelayedBreakpoint.py                  |  2 +-
 .../TestRequireHWBreakpoints.py               |  2 +-
 .../TestSimpleHWBreakpoints.py                |  2 +-
 .../scripted_bkpt/was_hit/TestWasHit.py       |  2 +-
 .../builtin-debugtrap/TestBuiltinDebugTrap.py |  2 +-
 .../completion/TestCompletion.py              |  2 +-
 .../boolreference/TestFormattersBoolRefPtr.py |  2 +-
 .../builtin-formats/TestBuiltinFormats.py     |  2 +-
 .../compactvectors/TestCompactVectors.py      |  2 +-
 .../TestDataFormatterCpp.py                   |  2 +-
 .../TestDataFormatterObjCNSBundle.py          |  2 +-
 .../TestDataFormatterObjCNSData.py            |  2 +-
 .../TestDataFormatterObjCNSError.py           |  2 +-
 .../TestDataFormatterObjCNSNumber.py          |  4 +--
 .../TestDataFormatterObjCNSURL.py             |  2 +-
 .../TestDataFormatterObjNSException.py        |  2 +-
 .../cmtime/TestDataFormatterCMTime.py         |  2 +-
 .../TestDataFormatterNSIndexPath.py           |  2 +-
 .../nsstring/TestDataFormatterNSString.py     |  6 ++--
 .../TestFormattersOneIsSingular.py            |  2 +-
 .../TestDataFormatterSynthVal.py              |  2 +-
 .../TestEmbeddedTypeSummary.py                |  2 +-
 .../nsarraysynth/TestNSArraySynthetic.py      |  2 +-
 .../TestNSDictionarySynthetic.py              |  4 +--
 .../nssetsynth/TestNSSetSynthetic.py          |  4 +--
 .../ostypeformatting/TestFormattersOsType.py  |  2 +-
 .../poarray/TestPrintObjectArray.py           |  4 +--
 .../TestSetValueFromCString.py                |  2 +-
 .../TestSyntheticFilterRecompute.py           |  2 +-
 .../TestDeletedExecutable.py                  |  4 +--
 .../TestVariableAnnotationsDisassembler.py    |  2 +-
 .../test/API/functionalities/exec/TestExec.py |  8 ++---
 .../fat_archives/TestFatArchives.py           |  2 +-
 .../resumes-child/TestForkResumesChild.py     |  4 +--
 .../TestDynamicLoaderDarwin.py                |  2 +-
 .../gdb_remote_client/TestPlatformKill.py     |  2 +-
 .../gdb_remote_client/TestPlatformMacOSX.py   |  2 +-
 .../inferior-changed/TestInferiorChanged.py   |  2 +-
 .../inferior-crashing/TestInferiorCrashing.py |  2 +-
 .../TestInferiorCrashingStep.py               |  2 +-
 .../TestRecursiveInferior.py                  |  2 +-
 .../TestRecursiveInferiorStep.py              |  2 +-
 .../load_unload/TestLoadUnload.py             |  4 +--
 .../load_using_paths/TestLoadUsingPaths.py    |  2 +-
 .../functionalities/longjmp/TestLongjmp.py    |  2 +-
 .../functionalities/longpath/TestLongPath.py  |  2 +-
 .../memory/find/TestMemoryFind.py             |  2 +-
 .../memory/holes/TestMemoryHoles.py           |  2 +-
 .../module_cache/bsd/TestModuleCacheBSD.py    |  2 +-
 .../simple_exe/TestModuleCacheSimple.py       |  2 +-
 .../mtc/simple/TestMTCSimple.py               |  2 +-
 .../API/functionalities/paths/TestPaths.py    |  2 +-
 .../os_plugin_in_dsym/TestOSIndSYM.py         |  2 +-
 .../TestFreeBSDKernelVMCore.py                |  2 +-
 .../TestProcessCrashInfo.py                   |  4 +--
 .../process_group/TestChangeProcessGroup.py   |  4 +--
 .../process_save_core/TestProcessSaveCore.py  |  2 +-
 .../functionalities/ptr_refs/TestPtrRefs.py   |  2 +-
 .../rerun_and_expr/TestRerunAndExpr.py        |  2 +-
 .../TestRerunAndExprDylib.py                  |  2 +-
 .../return-value/TestReturnValue.py           |  2 +-
 .../TestReverseContinueBreakpoints.py         |  2 +-
 .../TestReverseContinueWatchpoints.py         |  2 +-
 .../TestScriptedFrameProvider.py              |  2 +-
 .../TestFrameProviderThreadFilter.py          |  2 +-
 .../scripted_process/TestScriptedProcess.py   |  2 +-
 .../functionalities/signal/TestSendSignal.py  |  4 +--
 .../signal/handle-abrt/TestHandleAbort.py     |  2 +-
 .../signal/handle-segv/TestHandleSegv.py      |  2 +-
 .../functionalities/signal/raise/TestRaise.py |  4 +--
 .../TestAmbiguousTailCallSeq1.py              |  2 +-
 .../TestAmbiguousTailCallSeq2.py              |  2 +-
 .../cross_object/TestCrossObjectTailCalls.py  |  2 +-
 .../TestDisambiguateCallSite.py               |  2 +-
 .../TestDisambiguatePathsToCommonSink.py      |  2 +-
 .../TestDisambiguateTailCallSeq.py            |  2 +-
 .../TestInliningAndTailCalls.py               |  2 +-
 .../sbapi_support/TestTailCallFrameSBAPI.py   |  2 +-
 .../TestArtificialFrameStepOutMessage.py      |  2 +-
 .../TestSteppingOutWithArtificialFrames.py    |  2 +-
 .../TestUnambiguousTailCalls.py               |  2 +-
 .../type_lookup/TestTypeLookup.py             |  2 +-
 .../sigint/TestIOHandlerPythonREPLSigint.py   |  4 +--
 .../sigint/TestProcessIOHandlerInterrupt.py   |  2 +-
 .../API/lang/c/anonymous/TestAnonymous.py     |  2 +-
 lldb/test/API/lang/c/blocks/TestBlocks.py     |  6 ++--
 .../TestCCallingConventions.py                |  2 +-
 .../API/lang/c/enum_types/TestEnumTypes.py    |  2 +-
 lldb/test/API/lang/c/fpeval/TestFPEval.py     |  2 +-
 .../full_lto_stepping/TestFullLtoStepping.py  |  2 +-
 .../c/function_types/TestFunctionTypes.py     |  2 +-
 .../API/lang/c/libc_calls/TestLibcCalls.py    |  4 +--
 lldb/test/API/lang/c/modules/TestCModules.py  |  2 +-
 lldb/test/API/lang/c/sizeof/TestCSizeof.py    |  2 +-
 lldb/test/API/lang/c/strings/TestCStrings.py  |  2 +-
 .../lang/c/struct_types/TestStructTypes.py    |  2 +-
 .../abi_tag_structors/TestAbiTagStructors.py  |  6 ++--
 .../accelerator-table/TestCPPAccelerator.py   |  2 +-
 lldb/test/API/lang/cpp/auto/TestCPPAuto.py    |  2 +-
 .../cpp/call-function/TestCallCPPFunction.py  |  2 +-
 .../cpp/chained-calls/TestCppChainedCalls.py  |  2 +-
 .../TestClassTemplateParameterPack.py         |  2 +-
 .../TestConstStaticIntegralMember.py          |  2 +-
 .../TestConstStaticIntegralMemberInt128.py    |  2 +-
 .../cpp/constructors/TestCppConstructors.py   |  2 +-
 .../TestCovariantReturnTypes.py               |  2 +-
 .../TestDeclFromSubmodule.py                  |  2 +-
 .../TestDefaultTemplateArgs.py                |  2 +-
 .../lang/cpp/enum-limits/TestCPPEnumLimits.py |  2 +-
 .../exceptions/TestCPPExceptionBreakpoints.py |  2 +-
 .../const_method/TestExprInConstMethod.py     |  2 +-
 .../TestExprInConstVolatileMethod.py          |  2 +-
 .../TestExprOnCVQualifiedObjects.py           |  2 +-
 .../TestExprInNonConstMethod.py               |  2 +-
 .../TestExprInTemplateConstMethod.py          |  2 +-
 .../TestExprInTemplateNonConstMethod.py       |  2 +-
 .../TestCppFloatingTypesSpecialization.py     |  2 +-
 .../TestFunctionCallFromObjectFile.py         |  2 +-
 .../TestCppFunctionQualifiers.py              |  2 +-
 .../TestCppFunctionRefQualifiers.py           |  2 +-
 .../TestCppGlobalOperators.py                 |  2 +-
 .../API/lang/cpp/llvm-style/TestLLVMStyle.py  |  2 +-
 .../modules-import/TestCXXModulesImport.py    |  4 +--
 .../TestCppMultipleInheritance.py             |  2 +-
 .../API/lang/cpp/namespace/TestNamespace.py   |  4 +--
 .../lang/cpp/namespace/TestNamespaceLookup.py |  6 ++--
 .../TestNamespaceConflicts.py                 |  2 +-
 .../lang/cpp/operators/TestCppOperators.py    |  2 +-
 .../TestOverloadedFunctions.py                |  2 +-
 ...ointerToMemberTypeDependingOnParentSize.py |  2 +-
 lldb/test/API/lang/cpp/printf/TestPrintf.py   |  2 +-
 .../rvalue-references/TestRvalueReferences.py |  2 +-
 lldb/test/API/lang/cpp/scope/TestCppScope.py  |  2 +-
 .../static_members/TestCPPStaticMembers.py    |  6 ++--
 .../static_methods/TestCPPStaticMethods.py    |  2 +-
 lldb/test/API/lang/cpp/symbols/TestSymbols.py |  2 +-
 .../TestTemplateDiagnosticHint.py             |  2 +-
 .../TestTemplateFunctions.py                  |  2 +-
 lldb/test/API/lang/cpp/this/TestCPPThis.py    |  2 +-
 .../TestThisClassTypeMixing.py                |  2 +-
 .../lang/cpp/thread_local/TestThreadLocal.py  |  2 +-
 .../lang/cpp/trivial_abi/TestTrivialABI.py    |  2 +-
 .../API/lang/cpp/typedef/TestCppTypedef.py    |  2 +-
 .../unicode-literals/TestUnicodeLiterals.py   |  2 +-
 .../TestCppUnionStaticMembers.py              |  2 +-
 .../cpp/unique-types4/TestUniqueTypes4.py     |  2 +-
 .../TestCppVirtualFunctions.py                |  2 +-
 .../TestObjCIsTypeComplete.py                 |  2 +-
 .../TestObjCClassListFunctionFromUser.py      |  2 +-
 .../TestCppKeywordsAsObjCIdentifiers.py       |  2 +-
 .../TestObjCLanguageSpecificData.py           |  2 +-
 .../TestClangModuleImportLog.py               |  2 +-
 .../objc-class-method/TestObjCClassMethod.py  |  2 +-
 .../objc/objc-optimized/TestObjcOptimized.py  |  2 +-
 .../lang/objc/orderedset/TestOrderedSet.py    |  2 +-
 .../TestObjCSingleEntryDictionary.py          |  4 +--
 .../TestTaggedPointerChildren.py              |  4 +--
 .../TestObjCWarningsInExprParser.py           |  2 +-
 .../TestObjCppKeywordsEnabled.py              |  2 +-
 .../class_members/TestSBTypeClassMembers.py   |  2 +-
 .../TestExprPathRegisters.py                  |  2 +-
 .../TestExprPathSynthetic.py                  |  2 +-
 .../TestGlobalModuleCache.py                  |  2 +-
 .../python_api/hello_world/TestHelloWorld.py  |  4 +--
 .../process/address-masks/TestAddressMasks.py |  2 +-
 .../read-mem-cstring/TestReadMemCString.py    |  2 +-
 .../sbenvironment/TestSBEnvironment.py        |  2 +-
 .../TestSBModuleSeparateDebugInfo.py          |  2 +-
 .../python_api/sbplatform/TestSBPlatform.py   |  2 +-
 .../API/python_api/signals/TestSignalsAPI.py  |  2 +-
 .../TestTargetArchFromModule.py               |  2 +-
 .../TestModuleUnifiedSectionList.py           |  2 +-
 lldb/test/API/qemu/TestQemuLaunch.py          |  2 +-
 .../tools/lldb-dap/attach/TestDAP_attach.py   |  4 +--
 .../tools/lldb-dap/console/TestDAP_console.py |  2 +-
 .../TestDAP_setDataBreakpoints.py             |  2 +-
 .../lldb-dap/disconnect/TestDAP_disconnect.py |  2 +-
 .../lldb-dap/exception/TestDAP_exception.py   |  4 +--
 .../exception/objc/TestDAP_exception_objc.py  |  6 ++--
 .../TestDAP_extendedStackTrace.py             |  4 +--
 .../launch/TestDAP_launch_win_debug_heap.py   |  4 +--
 .../longpath/TestDAP_launch_longPath.py       |  2 +-
 .../tools/lldb-dap/module/TestDAP_module.py   |  4 +--
 .../tools/lldb-dap/server/TestDAP_server.py   |  2 +-
 .../lldb-dap/variables/TestDAP_variables.py   |  6 ++--
 .../lldb-server/TestGdbRemoteAuxvSupport.py   | 10 +++---
 .../lldb-server/TestGdbRemoteHostInfo.py      |  2 +-
 .../tools/lldb-server/TestLldbGdbServer.py    |  2 +-
 .../test/API/tools/lldb-server/TestNonStop.py |  2 +-
 .../lldb-server/commandline/TestStubSetSID.py |  6 ++--
 .../inferior-crash/TestGdbRemoteAbort.py      |  2 +-
 .../inferior-crash/TestGdbRemoteSegFault.py   |  2 +-
 .../TestGdbRemote_QPassSignals.py             |  2 +-
 .../lldb-server/vCont-threads/TestSignal.py   | 16 +++++-----
 lldb/test/API/types/TestCharType.py           |  4 +--
 lldb/test/API/types/TestCharTypeExpr.py       |  4 +--
 lldb/test/API/types/TestDoubleTypes.py        |  2 +-
 lldb/test/API/types/TestDoubleTypesExpr.py    |  2 +-
 lldb/test/API/types/TestFloatTypes.py         |  2 +-
 lldb/test/API/types/TestFloatTypesExpr.py     |  2 +-
 lldb/test/API/types/TestIntegerType.py        |  4 +--
 lldb/test/API/types/TestIntegerTypeExpr.py    |  6 ++--
 lldb/test/API/types/TestLongTypes.py          |  8 ++---
 lldb/test/API/types/TestLongTypesExpr.py      |  8 ++---
 lldb/test/API/types/TestShortType.py          |  4 +--
 lldb/test/API/types/TestShortTypeExpr.py      |  4 +--
 265 files changed, 365 insertions(+), 365 deletions(-)

diff --git a/lldb/test/API/commands/add-dsym/uuid/TestAddDsymCommand.py b/lldb/test/API/commands/add-dsym/uuid/TestAddDsymCommand.py
index ba03f397277fc..f9490e40298a2 100644
--- a/lldb/test/API/commands/add-dsym/uuid/TestAddDsymCommand.py
+++ b/lldb/test/API/commands/add-dsym/uuid/TestAddDsymCommand.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipUnlessDarwin
+ at requireDarwin
 class AddDsymCommandCase(TestBase):
     SHARED_BUILD_TESTCASE = False
 
diff --git a/lldb/test/API/commands/command/language/TestFrameLanguageCommands.py b/lldb/test/API/commands/command/language/TestFrameLanguageCommands.py
index b02ffd079ebd2..f8e6c17ae34d7 100644
--- a/lldb/test/API/commands/command/language/TestFrameLanguageCommands.py
+++ b/lldb/test/API/commands/command/language/TestFrameLanguageCommands.py
@@ -5,7 +5,7 @@
 
 
 class TestCase(TestBase):
-    @skipUnlessDarwin
+    @requireDarwin
     def test(self):
         self.build()
         _, _, thread, _ = lldbutil.run_to_source_breakpoint(
diff --git a/lldb/test/API/commands/dwim-print/TestDWIMPrint.py b/lldb/test/API/commands/dwim-print/TestDWIMPrint.py
index 68b93d4a445ab..a5b051ef517f1 100644
--- a/lldb/test/API/commands/dwim-print/TestDWIMPrint.py
+++ b/lldb/test/API/commands/dwim-print/TestDWIMPrint.py
@@ -9,7 +9,7 @@
 import lldbsuite.test.lldbutil as lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestCase(TestBase):
     def _run_cmd(self, cmd: str) -> str:
         """Run the given lldb command and return its output."""
diff --git a/lldb/test/API/commands/dwim-print/objc/TestDWIMPrintObjC.py b/lldb/test/API/commands/dwim-print/objc/TestDWIMPrintObjC.py
index 616d049459ab9..a25a192527293 100644
--- a/lldb/test/API/commands/dwim-print/objc/TestDWIMPrintObjC.py
+++ b/lldb/test/API/commands/dwim-print/objc/TestDWIMPrintObjC.py
@@ -9,7 +9,7 @@
 
 
 class TestCase(TestBase):
-    @skipUnlessDarwin
+    @requireDarwin
     def test(self):
         self.build()
         lldbutil.run_to_source_breakpoint(self, "break here", lldb.SBFileSpec("main.m"))
@@ -18,7 +18,7 @@ def test(self):
             "dwim-print parent.child", patterns=[r'_name = 0x[0-9a-f]+ @"Seven"']
         )
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_with_summary(self):
         self.build()
         lldbutil.run_to_source_breakpoint(self, "break here", lldb.SBFileSpec("main.m"))
diff --git a/lldb/test/API/commands/expression/anonymous-struct/TestCallUserAnonTypedef.py b/lldb/test/API/commands/expression/anonymous-struct/TestCallUserAnonTypedef.py
index fd2c1c50a08d9..a2b2134a32330 100644
--- a/lldb/test/API/commands/expression/anonymous-struct/TestCallUserAnonTypedef.py
+++ b/lldb/test/API/commands/expression/anonymous-struct/TestCallUserAnonTypedef.py
@@ -13,7 +13,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestExprLookupAnonStructTypedef(TestBase):
     def test(self):
         """Test typedeffed untagged struct arguments for function call expressions"""
diff --git a/lldb/test/API/commands/expression/argument_passing_restrictions/TestArgumentPassingRestrictions.py b/lldb/test/API/commands/expression/argument_passing_restrictions/TestArgumentPassingRestrictions.py
index 526bfb27ce8ac..38115a76e4b91 100644
--- a/lldb/test/API/commands/expression/argument_passing_restrictions/TestArgumentPassingRestrictions.py
+++ b/lldb/test/API/commands/expression/argument_passing_restrictions/TestArgumentPassingRestrictions.py
@@ -15,7 +15,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestArgumentPassingRestrictions(TestBase):
     @skipIf(compiler="clang", compiler_version=["<", "7.0"])
     def test_argument_passing_restrictions(self):
diff --git a/lldb/test/API/commands/expression/call-function/TestCallStdStringFunction.py b/lldb/test/API/commands/expression/call-function/TestCallStdStringFunction.py
index 847839aec0be1..24da3287d99dd 100644
--- a/lldb/test/API/commands/expression/call-function/TestCallStdStringFunction.py
+++ b/lldb/test/API/commands/expression/call-function/TestCallStdStringFunction.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class ExprCommandCallFunctionTestCase(TestBase):
     @expectedFailureAll(
         compiler="icc", bugnumber="llvm.org/pr14437, fails with ICC 13.1"
diff --git a/lldb/test/API/commands/expression/call-function/TestCallStopAndContinue.py b/lldb/test/API/commands/expression/call-function/TestCallStopAndContinue.py
index 24529d02132ba..a71de3dd7d9b7 100644
--- a/lldb/test/API/commands/expression/call-function/TestCallStopAndContinue.py
+++ b/lldb/test/API/commands/expression/call-function/TestCallStopAndContinue.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class ExprCommandCallStopContinueTestCase(TestBase):
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/API/commands/expression/call-function/TestCallUserDefinedFunction.py b/lldb/test/API/commands/expression/call-function/TestCallUserDefinedFunction.py
index 0ce0585953541..10687557cc017 100644
--- a/lldb/test/API/commands/expression/call-function/TestCallUserDefinedFunction.py
+++ b/lldb/test/API/commands/expression/call-function/TestCallUserDefinedFunction.py
@@ -13,7 +13,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class ExprCommandCallUserDefinedFunction(TestBase):
     def test(self):
         """Test return values of user defined function calls."""
diff --git a/lldb/test/API/commands/expression/call-restarts/TestCallThatRestarts.py b/lldb/test/API/commands/expression/call-restarts/TestCallThatRestarts.py
index 54b0ba9c191d4..2597d310c59d1 100644
--- a/lldb/test/API/commands/expression/call-restarts/TestCallThatRestarts.py
+++ b/lldb/test/API/commands/expression/call-restarts/TestCallThatRestarts.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfNoSignals
+ at requireSignals
 class ExprCommandThatRestartsTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
@@ -21,7 +21,7 @@ def setUp(self):
         self.main_source_spec = lldb.SBFileSpec(self.main_source)
 
     @skipIfDarwin  # llvm.org/pr19246: intermittent failure
-    @skipIfWindows  # Test relies on signals, unsupported on Windows
+    @requireNotWindows  # Test relies on signals, unsupported on Windows
     @expectedFlakeyAndroid(bugnumber="llvm.org/pr19246")
     @expectedFlakeyNetBSD
     def test(self):
diff --git a/lldb/test/API/commands/expression/class_template_specialization_empty_pack/TestClassTemplateSpecializationParametersHandling.py b/lldb/test/API/commands/expression/class_template_specialization_empty_pack/TestClassTemplateSpecializationParametersHandling.py
index b378e9829869b..0ccd832bd5991 100644
--- a/lldb/test/API/commands/expression/class_template_specialization_empty_pack/TestClassTemplateSpecializationParametersHandling.py
+++ b/lldb/test/API/commands/expression/class_template_specialization_empty_pack/TestClassTemplateSpecializationParametersHandling.py
@@ -11,7 +11,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestClassTemplateSpecializationParametersHandling(TestBase):
     def test_class_template_specialization(self):
         self.build()
diff --git a/lldb/test/API/commands/expression/context-object/TestContextObject.py b/lldb/test/API/commands/expression/context-object/TestContextObject.py
index 0d9b1161f33a5..34a2686c102fb 100644
--- a/lldb/test/API/commands/expression/context-object/TestContextObject.py
+++ b/lldb/test/API/commands/expression/context-object/TestContextObject.py
@@ -8,7 +8,7 @@
 from lldbsuite.test.lldbtest import *
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class ContextObjectTestCase(TestBase):
     def test_context_object(self):
         """Tests expression evaluation in context of an object."""
diff --git a/lldb/test/API/commands/expression/expr-with-fork/TestExprWithFork.py b/lldb/test/API/commands/expression/expr-with-fork/TestExprWithFork.py
index d279295a5acac..b1b838bf0024a 100644
--- a/lldb/test/API/commands/expression/expr-with-fork/TestExprWithFork.py
+++ b/lldb/test/API/commands/expression/expr-with-fork/TestExprWithFork.py
@@ -18,7 +18,7 @@ class ExprWithForkTestCase(TestBase):
 
     # --- Basic expression evaluation across fork/vfork ---
 
-    @skipIfWindows
+    @requirePOSIX
     @add_test_categories(["fork"])
     def test_expr_with_fork(self):
         """Test that expression evaluation succeeds when the expression calls fork()."""
@@ -31,7 +31,7 @@ def test_expr_with_fork(self):
             "fork_and_return(42, false)", result_type="int", result_value="42"
         )
 
-    @skipIfWindows
+    @requirePOSIX
     @add_test_categories(["fork"])
     def test_expr_with_vfork(self):
         """Test that expression evaluation succeeds when the expression calls vfork()."""
@@ -44,7 +44,7 @@ def test_expr_with_vfork(self):
             "fork_and_return(42, true)", result_type="int", result_value="42"
         )
 
-    @skipIfWindows
+    @requirePOSIX
     @add_test_categories(["fork"])
     def test_expr_with_fork_trap(self):
         """Test that expression evaluation handles a child process that triggers a SIGTRAP."""
@@ -59,7 +59,7 @@ def test_expr_with_fork_trap(self):
 
     # --- follow-fork-mode child override during expression evaluation ---
 
-    @skipIfWindows
+    @requirePOSIX
     @add_test_categories(["fork"])
     def test_expr_with_fork_follow_child(self):
         """Test that expression evaluation succeeds with follow-fork-mode child."""
@@ -80,7 +80,7 @@ def test_expr_with_fork_follow_child(self):
         # Verify we are still debugging the original process.
         self.assertEqual(process.GetProcessID(), original_pid)
 
-    @skipIfWindows
+    @requirePOSIX
     @add_test_categories(["fork"])
     def test_expr_with_vfork_follow_child(self):
         """Test that expression evaluation succeeds with vfork and follow-fork-mode child."""
@@ -100,7 +100,7 @@ def test_expr_with_vfork_follow_child(self):
 
     # --- stop-on-fork: fork interrupts expression immediately ---
 
-    @skipIfWindows
+    @requirePOSIX
     @add_test_categories(["fork"])
     def test_expr_with_fork_stop_on_fork(self):
         """Test that stop-on-fork interrupts expression evaluation on fork."""
@@ -119,7 +119,7 @@ def test_expr_with_fork_stop_on_fork(self):
         # The expression should be interrupted due to the fork.
         self.assertTrue(value.GetError().Fail())
 
-    @skipIfWindows
+    @requirePOSIX
     @add_test_categories(["fork"])
     def test_expr_with_fork_stop_on_fork_process_state(self):
         """Test that process state is valid after stop-on-fork interrupts on fork."""
@@ -143,7 +143,7 @@ def test_expr_with_fork_stop_on_fork_process_state(self):
 
     # --- stop-on-fork with vfork: deferred to vforkdone ---
 
-    @skipIfWindows
+    @requirePOSIX
     @add_test_categories(["fork"])
     def test_expr_with_vfork_stop_on_fork(self):
         """Test that stop-on-fork with vfork defers to vforkdone and interrupts."""
@@ -163,7 +163,7 @@ def test_expr_with_vfork_stop_on_fork(self):
         # vfork) because stop-on-fork is set.
         self.assertTrue(value.GetError().Fail())
 
-    @skipIfWindows
+    @requirePOSIX
     @add_test_categories(["fork"])
     def test_expr_with_vfork_stop_on_fork_process_state(self):
         """Test that process state is clean after vfork stop-on-fork interruption.
@@ -189,7 +189,7 @@ def test_expr_with_vfork_stop_on_fork_process_state(self):
         self.assertEqual(process.GetProcessID(), original_pid)
         self.assertEqual(process.GetState(), lldb.eStateStopped)
 
-    @skipIfWindows
+    @requirePOSIX
     @add_test_categories(["fork"])
     def test_expr_with_vfork_stop_on_fork_breakpoints_work(self):
         """Test that breakpoints are functional after vfork stop-on-fork.
@@ -219,7 +219,7 @@ def test_expr_with_vfork_stop_on_fork_breakpoints_work(self):
 
     # --- stop-on-fork=false (default): no interruption ---
 
-    @skipIfWindows
+    @requirePOSIX
     @add_test_categories(["fork"])
     def test_expr_with_fork_stop_on_fork_false(self):
         """Test that stop-on-fork=false allows fork expression to complete."""
@@ -239,7 +239,7 @@ def test_expr_with_fork_stop_on_fork_false(self):
         self.assertSuccess(value.GetError())
         self.assertEqual(value.GetValueAsSigned(), 42)
 
-    @skipIfWindows
+    @requirePOSIX
     @add_test_categories(["fork"])
     def test_expr_with_vfork_stop_on_fork_false(self):
         """Test that stop-on-fork=false allows vfork expression to complete."""
@@ -278,7 +278,7 @@ def test_stop_on_fork_set_get(self):
 
     # --- stop-on-fork with follow-fork-mode child ---
 
-    @skipIfWindows
+    @requirePOSIX
     @add_test_categories(["fork"])
     def test_expr_with_fork_stop_on_fork_follow_child(self):
         """Test stop-on-fork + follow-child: expression interrupted, still on parent."""
@@ -302,7 +302,7 @@ def test_expr_with_fork_stop_on_fork_follow_child(self):
         self.assertTrue(value.GetError().Fail())
         self.assertEqual(process.GetProcessID(), original_pid)
 
-    @skipIfWindows
+    @requirePOSIX
     @add_test_categories(["fork"])
     def test_expr_with_vfork_stop_on_fork_follow_child(self):
         """Test stop-on-fork + vfork + follow-child: interrupted at vforkdone, still on parent."""
@@ -328,7 +328,7 @@ def test_expr_with_vfork_stop_on_fork_follow_child(self):
 
     # --- concurrent fork on another thread during expression ---
 
-    @skipIfWindows
+    @requirePOSIX
     @add_test_categories(["fork"])
     def test_expr_concurrent_fork_other_thread(self):
         """Test that a fork on another thread during expression is handled correctly.
@@ -366,7 +366,7 @@ def test_expr_concurrent_fork_other_thread(self):
         # Breakpoints should still be functional.
         self.expect_expr("x", result_type="int", result_value="42")
 
-    @skipIfWindows
+    @requirePOSIX
     @add_test_categories(["fork"])
     def test_expr_concurrent_fork_other_thread_follow_child(self):
         """Test that follow-fork-mode child is overridden during expression evaluation.
diff --git a/lldb/test/API/commands/expression/expr_inside_lambda/TestExprInsideLambdas.py b/lldb/test/API/commands/expression/expr_inside_lambda/TestExprInsideLambdas.py
index f284dbc206b65..85a76c856800a 100644
--- a/lldb/test/API/commands/expression/expr_inside_lambda/TestExprInsideLambdas.py
+++ b/lldb/test/API/commands/expression/expr_inside_lambda/TestExprInsideLambdas.py
@@ -10,7 +10,7 @@
 from lldbsuite.test.lldbtest import *
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class ExprInsideLambdaTestCase(TestBase):
     TEST_WITH_PDB_DEBUG_INFO = True
     SHARED_BUILD_TESTCASE = False
diff --git a/lldb/test/API/commands/expression/formatters/TestFormatters.py b/lldb/test/API/commands/expression/formatters/TestFormatters.py
index f520c408af171..e2744564fb647 100644
--- a/lldb/test/API/commands/expression/formatters/TestFormatters.py
+++ b/lldb/test/API/commands/expression/formatters/TestFormatters.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class ExprFormattersTestCase(TestBase):
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/API/commands/expression/inline-namespace/TestInlineNamespace.py b/lldb/test/API/commands/expression/inline-namespace/TestInlineNamespace.py
index a2d6eef63c1a5..eee218faa6b8c 100644
--- a/lldb/test/API/commands/expression/inline-namespace/TestInlineNamespace.py
+++ b/lldb/test/API/commands/expression/inline-namespace/TestInlineNamespace.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestInlineNamespace(TestBase):
     def test(self):
         self.build()
diff --git a/lldb/test/API/commands/expression/namespace-alias/TestInlineNamespaceAlias.py b/lldb/test/API/commands/expression/namespace-alias/TestInlineNamespaceAlias.py
index eede597a57fca..765fe918d4241 100644
--- a/lldb/test/API/commands/expression/namespace-alias/TestInlineNamespaceAlias.py
+++ b/lldb/test/API/commands/expression/namespace-alias/TestInlineNamespaceAlias.py
@@ -11,7 +11,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestInlineNamespace(TestBase):
     @skipIf(compiler="clang", compiler_version=["<", "16.0"])
     def test(self):
diff --git a/lldb/test/API/commands/expression/persistent_types/TestNestedPersistentTypes.py b/lldb/test/API/commands/expression/persistent_types/TestNestedPersistentTypes.py
index fc85305ff32cf..39d01f4925e4b 100644
--- a/lldb/test/API/commands/expression/persistent_types/TestNestedPersistentTypes.py
+++ b/lldb/test/API/commands/expression/persistent_types/TestNestedPersistentTypes.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class NestedPersistentTypesTestCase(TestBase):
     def test_persistent_types(self):
         """Test that nested persistent types work."""
diff --git a/lldb/test/API/commands/expression/persistent_types/TestPersistentTypes.py b/lldb/test/API/commands/expression/persistent_types/TestPersistentTypes.py
index 7defad224fab8..463ddbe8b5bcb 100644
--- a/lldb/test/API/commands/expression/persistent_types/TestPersistentTypes.py
+++ b/lldb/test/API/commands/expression/persistent_types/TestPersistentTypes.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class PersistenttypesTestCase(TestBase):
     def test_persistent_types(self):
         """Test that lldb persistent types works correctly."""
diff --git a/lldb/test/API/commands/expression/po_persistent_result/TestPoPersistentResult.py b/lldb/test/API/commands/expression/po_persistent_result/TestPoPersistentResult.py
index a5b48a1bf3972..8f4bba421579d 100644
--- a/lldb/test/API/commands/expression/po_persistent_result/TestPoPersistentResult.py
+++ b/lldb/test/API/commands/expression/po_persistent_result/TestPoPersistentResult.py
@@ -14,12 +14,12 @@ def setUp(self):
         self.build()
         lldbutil.run_to_source_breakpoint(self, "break here", lldb.SBFileSpec("main.m"))
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_po_does_not_print_persistent_result(self):
         """Test `po` doesn't advertise a persistent result variable."""
         self.expect("po obj", matching=False, substrs=["$0 = "])
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_po_does_not_keep_persistent_result(self):
         """Test `po` doesn't leak a persistent result variable."""
         self.expect("po obj")
@@ -28,7 +28,7 @@ def test_po_does_not_keep_persistent_result(self):
         self.expect("expression $0", error=True)
         self.expect("expression obj", substrs=["$0 = "])
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_expression_description_verbosity(self):
         """Test printing object description _and_ opt-in to persistent results."""
         self.expect("expression -O -vfull -- obj", substrs=["$0 = "])
diff --git a/lldb/test/API/commands/expression/pr35310/TestExprsBug35310.py b/lldb/test/API/commands/expression/pr35310/TestExprsBug35310.py
index 2bf1b866c22f7..76a7ada8eb8aa 100644
--- a/lldb/test/API/commands/expression/pr35310/TestExprsBug35310.py
+++ b/lldb/test/API/commands/expression/pr35310/TestExprsBug35310.py
@@ -4,7 +4,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class ExprBug35310(TestBase):
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/API/commands/expression/radar_9531204/TestPrintfAfterUp.py b/lldb/test/API/commands/expression/radar_9531204/TestPrintfAfterUp.py
index 57d2eeec19a0b..1e982da903793 100644
--- a/lldb/test/API/commands/expression/radar_9531204/TestPrintfAfterUp.py
+++ b/lldb/test/API/commands/expression/radar_9531204/TestPrintfAfterUp.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class Radar9531204TestCase(TestBase):
     # rdar://problem/9531204
     def test_expr_commands(self):
diff --git a/lldb/test/API/commands/expression/radar_9673664/TestExprHelpExamples.py b/lldb/test/API/commands/expression/radar_9673664/TestExprHelpExamples.py
index a2467ecc3d7a7..e7d2bee862bbd 100644
--- a/lldb/test/API/commands/expression/radar_9673664/TestExprHelpExamples.py
+++ b/lldb/test/API/commands/expression/radar_9673664/TestExprHelpExamples.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class Radar9673644TestCase(TestBase):
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/API/commands/expression/result_numbering/TestResultNumbering.py b/lldb/test/API/commands/expression/result_numbering/TestResultNumbering.py
index 928461c5c2fc0..7582224de9b02 100644
--- a/lldb/test/API/commands/expression/result_numbering/TestResultNumbering.py
+++ b/lldb/test/API/commands/expression/result_numbering/TestResultNumbering.py
@@ -10,7 +10,7 @@
 from lldbsuite.test.lldbtest import *
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestExpressionResultNumbering(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
diff --git a/lldb/test/API/commands/expression/test/TestExprs.py b/lldb/test/API/commands/expression/test/TestExprs.py
index e76457a1f9bbe..da2ac97e9baaa 100644
--- a/lldb/test/API/commands/expression/test/TestExprs.py
+++ b/lldb/test/API/commands/expression/test/TestExprs.py
@@ -19,7 +19,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class BasicExprCommandsTestCase(TestBase):
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/API/commands/expression/timeout/TestCallWithTimeout.py b/lldb/test/API/commands/expression/timeout/TestCallWithTimeout.py
index 900f06756f1bb..0c7795497bb40 100644
--- a/lldb/test/API/commands/expression/timeout/TestCallWithTimeout.py
+++ b/lldb/test/API/commands/expression/timeout/TestCallWithTimeout.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class ExprCommandWithTimeoutsTestCase(TestBase):
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/API/commands/expression/unwind_expression/TestUnwindExpression.py b/lldb/test/API/commands/expression/unwind_expression/TestUnwindExpression.py
index dfaad8cf6c281..c5793542c6f98 100644
--- a/lldb/test/API/commands/expression/unwind_expression/TestUnwindExpression.py
+++ b/lldb/test/API/commands/expression/unwind_expression/TestUnwindExpression.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class UnwindFromExpressionTest(TestBase):
     main_spec = lldb.SBFileSpec("main.cpp", False)
 
diff --git a/lldb/test/API/commands/expression/weak_symbols/TestWeakSymbols.py b/lldb/test/API/commands/expression/weak_symbols/TestWeakSymbols.py
index 4783dd98aa829..ce6d8064ae45e 100644
--- a/lldb/test/API/commands/expression/weak_symbols/TestWeakSymbols.py
+++ b/lldb/test/API/commands/expression/weak_symbols/TestWeakSymbols.py
@@ -15,7 +15,7 @@ class TestWeakSymbolsInExpressions(TestBase):
     SHARED_BUILD_TESTCASE = False
     NO_DEBUG_INFO_TESTCASE = True
 
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIf(compiler="clang", compiler_version=["<", "19.0"])
     def test_weak_symbol_in_expr(self):
         """Tests that we can refer to weak symbols in expressions."""
diff --git a/lldb/test/API/commands/expression/xvalue/TestXValuePrinting.py b/lldb/test/API/commands/expression/xvalue/TestXValuePrinting.py
index fd8246feb91cc..ba9a3863546d5 100644
--- a/lldb/test/API/commands/expression/xvalue/TestXValuePrinting.py
+++ b/lldb/test/API/commands/expression/xvalue/TestXValuePrinting.py
@@ -4,7 +4,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class ExprXValuePrintingTestCase(TestBase):
     def test(self):
         """Printing an xvalue should work."""
diff --git a/lldb/test/API/commands/frame/recognizer/TestFrameRecognizer.py b/lldb/test/API/commands/frame/recognizer/TestFrameRecognizer.py
index 1f943c634df6d..dc7a52ce3646c 100644
--- a/lldb/test/API/commands/frame/recognizer/TestFrameRecognizer.py
+++ b/lldb/test/API/commands/frame/recognizer/TestFrameRecognizer.py
@@ -372,7 +372,7 @@ def test_frame_recognizer_target_specific(self):
             substrs=["frame 0 is recognized by recognizer.MyFrameRecognizer"],
         )
 
-    @skipIfWasm  # $arg1/$arg2 need argument registers, unsupported on WebAssembly.
+    @requireNotWasm  # $arg1/$arg2 need argument registers, unsupported on WebAssembly.
     def test_frame_recognizer_not_only_first_instruction(self):
         self.build()
         exe = self.getBuildArtifact("a.out")
diff --git a/lldb/test/API/commands/frame/var/TestFrameVar.py b/lldb/test/API/commands/frame/var/TestFrameVar.py
index 18c67b291c77a..bf8cea9e74542 100644
--- a/lldb/test/API/commands/frame/var/TestFrameVar.py
+++ b/lldb/test/API/commands/frame/var/TestFrameVar.py
@@ -112,7 +112,7 @@ def check_frame_variable_errors(self, thread, error_strings):
             self.assertIn(s, message)
 
     @skipIfRemote
-    @skipUnlessDarwin
+    @requireDarwin
     def test_darwin_dwarf_missing_obj(self):
         """
         Test that if we build a binary with DWARF in .o files and we remove
@@ -136,7 +136,7 @@ def test_darwin_dwarf_missing_obj(self):
         self.check_frame_variable_errors(thread, error_strings)
 
     @skipIfRemote
-    @skipUnlessDarwin
+    @requireDarwin
     def test_darwin_dwarf_obj_mod_time_mismatch(self):
         """
         Test that if we build a binary with DWARF in .o files and we update
diff --git a/lldb/test/API/commands/frame/var/direct-ivar/objc/TestFrameVarDirectIvarObjC.py b/lldb/test/API/commands/frame/var/direct-ivar/objc/TestFrameVarDirectIvarObjC.py
index 5ef1cb43cccfb..a6dc7cbf777e3 100644
--- a/lldb/test/API/commands/frame/var/direct-ivar/objc/TestFrameVarDirectIvarObjC.py
+++ b/lldb/test/API/commands/frame/var/direct-ivar/objc/TestFrameVarDirectIvarObjC.py
@@ -5,7 +5,7 @@
 
 
 class TestCase(TestBase):
-    @skipUnlessDarwin
+    @requireDarwin
     def test_objc_self(self):
         self.build()
         lldbutil.run_to_source_breakpoint(
@@ -13,7 +13,7 @@ def test_objc_self(self):
         )
         self.expect("frame variable _ivar", startstr="(int) _ivar = 30")
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_objc_self_capture_idiom(self):
         self.build()
         lldbutil.run_to_source_breakpoint(
diff --git a/lldb/test/API/commands/frame/var/direct-ivar/objcpp/TestFrameVarDirectIvarObjCPlusPlus.py b/lldb/test/API/commands/frame/var/direct-ivar/objcpp/TestFrameVarDirectIvarObjCPlusPlus.py
index 63076f082ad22..efc95144fba8e 100644
--- a/lldb/test/API/commands/frame/var/direct-ivar/objcpp/TestFrameVarDirectIvarObjCPlusPlus.py
+++ b/lldb/test/API/commands/frame/var/direct-ivar/objcpp/TestFrameVarDirectIvarObjCPlusPlus.py
@@ -5,7 +5,7 @@
 
 
 class TestCase(TestBase):
-    @skipUnlessDarwin
+    @requireDarwin
     def test_objc_self(self):
         self.build()
         lldbutil.run_to_source_breakpoint(
@@ -13,7 +13,7 @@ def test_objc_self(self):
         )
         self.expect("frame variable _ivar", startstr="(int) _ivar = 30")
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_objc_explicit_self(self):
         self.build()
         lldbutil.run_to_source_breakpoint(
@@ -21,7 +21,7 @@ def test_objc_explicit_self(self):
         )
         self.expect("frame variable _ivar", startstr="(int) _ivar = 30")
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_cpp_this(self):
         self.build()
         lldbutil.run_to_source_breakpoint(
diff --git a/lldb/test/API/commands/platform/basic/TestPlatformPython.py b/lldb/test/API/commands/platform/basic/TestPlatformPython.py
index 56397e330d083..24a95211597a9 100644
--- a/lldb/test/API/commands/platform/basic/TestPlatformPython.py
+++ b/lldb/test/API/commands/platform/basic/TestPlatformPython.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # platform shell needs a connected remote
+ at requireNotWasm  # platform shell needs a connected remote
 class PlatformPythonTestCase(TestBase):
     @add_test_categories(["pyapi"])
     @no_debug_info_test
diff --git a/lldb/test/API/commands/platform/connect/TestPlatformConnect.py b/lldb/test/API/commands/platform/connect/TestPlatformConnect.py
index e3cf03ef45f44..2b1f62824d714 100644
--- a/lldb/test/API/commands/platform/connect/TestPlatformConnect.py
+++ b/lldb/test/API/commands/platform/connect/TestPlatformConnect.py
@@ -5,7 +5,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no remote platform to connect to
+ at requireNotWasm  # no remote platform to connect to
 class TestPlatformProcessConnect(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
     SHARED_BUILD_TESTCASE = False
diff --git a/lldb/test/API/commands/platform/launchgdbserver/TestPlatformLaunchGDBServer.py b/lldb/test/API/commands/platform/launchgdbserver/TestPlatformLaunchGDBServer.py
index 93f9d9a4f6948..150c22f8b6070 100644
--- a/lldb/test/API/commands/platform/launchgdbserver/TestPlatformLaunchGDBServer.py
+++ b/lldb/test/API/commands/platform/launchgdbserver/TestPlatformLaunchGDBServer.py
@@ -6,7 +6,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # cannot launch a gdbserver
+ at requireNotWasm  # cannot launch a gdbserver
 class TestPlatformProcessLaunchGDBServer(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
     SHARED_BUILD_TESTCASE = False
diff --git a/lldb/test/API/commands/platform/process/list/TestProcessList.py b/lldb/test/API/commands/platform/process/list/TestProcessList.py
index 5c73cc4e4fe19..af21f1e348346 100644
--- a/lldb/test/API/commands/platform/process/list/TestProcessList.py
+++ b/lldb/test/API/commands/platform/process/list/TestProcessList.py
@@ -11,7 +11,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # attaching requires launching the inferior as a host process
+ at requireNotWasm  # attaching requires launching the inferior as a host process
 class ProcessListTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
diff --git a/lldb/test/API/commands/platform/sdk/TestPlatformSDK.py b/lldb/test/API/commands/platform/sdk/TestPlatformSDK.py
index 6af5767e26d3e..3bffdd5e35836 100644
--- a/lldb/test/API/commands/platform/sdk/TestPlatformSDK.py
+++ b/lldb/test/API/commands/platform/sdk/TestPlatformSDK.py
@@ -38,7 +38,7 @@ def port_not_available(self):
         return None
 
     @no_debug_info_test
-    @skipUnlessDarwin
+    @requireDarwin
     @skipTestIfFn(no_debugserver)
     @skipTestIfFn(port_not_available)
     @skipIfRemote
diff --git a/lldb/test/API/commands/process/attach/TestProcessAttach.py b/lldb/test/API/commands/process/attach/TestProcessAttach.py
index f0fa9af4e4d0d..5be6a3f6cf077 100644
--- a/lldb/test/API/commands/process/attach/TestProcessAttach.py
+++ b/lldb/test/API/commands/process/attach/TestProcessAttach.py
@@ -13,7 +13,7 @@
 exe_name = "ProcessAttach"  # Must match Makefile
 
 
- at skipIfWasm  # attaching requires launching the inferior as a host process
+ at requireNotWasm  # attaching requires launching the inferior as a host process
 class ProcessAttachTestCase(TestBase):
     SHARED_BUILD_TESTCASE = False
     NO_DEBUG_INFO_TESTCASE = True
diff --git a/lldb/test/API/commands/process/attach/attach_denied/TestAttachDenied.py b/lldb/test/API/commands/process/attach/attach_denied/TestAttachDenied.py
index 2fbd5c710cd27..f22bcac38bee6 100644
--- a/lldb/test/API/commands/process/attach/attach_denied/TestAttachDenied.py
+++ b/lldb/test/API/commands/process/attach/attach_denied/TestAttachDenied.py
@@ -12,11 +12,11 @@
 exe_name = "AttachDenied"  # Must match Makefile
 
 
- at skipIfNoSignals
+ at requireSignals
 class AttachDeniedTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
-    @skipIfWindows
+    @requirePOSIX
     @skipIfiOSSimulator
     @skipIfDarwinEmbedded  # ptrace(ATTACH_REQUEST...) won't work on ios/tvos/etc
     @skipIfAsan # Times out inconsistently under asan
diff --git a/lldb/test/API/commands/process/handle/TestProcessHandle.py b/lldb/test/API/commands/process/handle/TestProcessHandle.py
index 9dc73b9d6b5c3..87d2cc9ed1f0a 100644
--- a/lldb/test/API/commands/process/handle/TestProcessHandle.py
+++ b/lldb/test/API/commands/process/handle/TestProcessHandle.py
@@ -6,7 +6,7 @@
 
 class TestProcessHandle(TestBase):
     @no_debug_info_test
-    @skipIfWindows
+    @requireNotWindows
     def test_process_handle(self):
         """Test that calling process handle before we have a target, and before we
         have a process will affect the process.  Also that the signal settings
diff --git a/lldb/test/API/commands/process/launch-with-shellexpand/TestLaunchWithShellExpand.py b/lldb/test/API/commands/process/launch-with-shellexpand/TestLaunchWithShellExpand.py
index 8362945ee6c80..750970d3275c3 100644
--- a/lldb/test/API/commands/process/launch-with-shellexpand/TestLaunchWithShellExpand.py
+++ b/lldb/test/API/commands/process/launch-with-shellexpand/TestLaunchWithShellExpand.py
@@ -10,7 +10,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no host shell to expand arguments
+ at requireNotWasm  # no host shell to expand arguments
 class LaunchWithShellExpandTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
diff --git a/lldb/test/API/commands/process/reverse-continue/TestReverseContinue.py b/lldb/test/API/commands/process/reverse-continue/TestReverseContinue.py
index aba0ac7e6a765..0bd8b99205d6d 100644
--- a/lldb/test/API/commands/process/reverse-continue/TestReverseContinue.py
+++ b/lldb/test/API/commands/process/reverse-continue/TestReverseContinue.py
@@ -11,7 +11,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no reverse execution
+ at requireNotWasm  # no reverse execution
 class TestReverseContinue(ReverseTestBase):
     @skipIfRemote
     def test_reverse_continue(self):
diff --git a/lldb/test/API/commands/protocol/TestMCPUnixSocket.py b/lldb/test/API/commands/protocol/TestMCPUnixSocket.py
index 9edb97eb791b9..b0d7981a4751a 100644
--- a/lldb/test/API/commands/protocol/TestMCPUnixSocket.py
+++ b/lldb/test/API/commands/protocol/TestMCPUnixSocket.py
@@ -11,7 +11,7 @@
 
 
 class MCPUnixSocketCommandTestCase(TestBase):
-    @skipIfWindows
+    @requirePOSIX
     @skipIfRemote
     @no_debug_info_test
     def test_unix_socket(self):
diff --git a/lldb/test/API/commands/register/register_command/TestRegisters.py b/lldb/test/API/commands/register/register_command/TestRegisters.py
index 8707d59675cf1..74f86fb5cd925 100644
--- a/lldb/test/API/commands/register/register_command/TestRegisters.py
+++ b/lldb/test/API/commands/register/register_command/TestRegisters.py
@@ -702,7 +702,7 @@ def test_fs_gs_base(self):
             "fs_base does not equal to pthread_self() value.",
         )
 
-    @skipIfWasm  # attaching requires launching the inferior as a host process
+    @requireNotWasm  # attaching requires launching the inferior as a host process
     def test_process_must_be_stopped(self):
         """Check that all register commands error when the process is not stopped."""
         self.build()
diff --git a/lldb/test/API/commands/statistics/basic/TestStats.py b/lldb/test/API/commands/statistics/basic/TestStats.py
index a32b8feecc5cf..20a41d50c3899 100644
--- a/lldb/test/API/commands/statistics/basic/TestStats.py
+++ b/lldb/test/API/commands/statistics/basic/TestStats.py
@@ -756,7 +756,7 @@ def test_dwo_id_mismatch_error_stats(self):
         self.assertIn("dwoErrorCount", debug_stats["modules"][0])
         self.assertEqual(debug_stats["modules"][0]["dwoErrorCount"], 1)
 
-    @skipUnlessDarwin
+    @requireDarwin
     @no_debug_info_test
     def test_dsym_binary_has_symfile_in_stats(self):
         """
@@ -800,7 +800,7 @@ def test_dsym_binary_has_symfile_in_stats(self):
         # statistics.
         self.assertNotIn("symbolFileModuleIdentifiers", exe_stats)
 
-    @skipUnlessDarwin
+    @requireDarwin
     @no_debug_info_test
     def test_no_dsym_binary_has_symfile_identifiers_in_stats(self):
         """
@@ -859,7 +859,7 @@ def test_no_dsym_binary_has_symfile_identifiers_in_stats(self):
             # Make sure each .o file has some debug info bytes.
             self.assertGreater(o_module["debugInfoByteSize"], 0)
 
-    @skipUnlessDarwin
+    @requireDarwin
     @no_debug_info_test
     def test_had_frame_variable_errors(self):
         """
diff --git a/lldb/test/API/commands/target/auto-install-main-executable/TestAutoInstallMainExecutable.py b/lldb/test/API/commands/target/auto-install-main-executable/TestAutoInstallMainExecutable.py
index 72143837f711f..c994c24481e52 100644
--- a/lldb/test/API/commands/target/auto-install-main-executable/TestAutoInstallMainExecutable.py
+++ b/lldb/test/API/commands/target/auto-install-main-executable/TestAutoInstallMainExecutable.py
@@ -10,7 +10,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no remote platform to auto-install onto
+ at requireNotWasm  # no remote platform to auto-install onto
 class TestAutoInstallMainExecutable(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
     SHARED_BUILD_TESTCASE = False
diff --git a/lldb/test/API/commands/target/dump-pcm-info/TestDumpPCMInfo.py b/lldb/test/API/commands/target/dump-pcm-info/TestDumpPCMInfo.py
index e00ed4aa90ff1..7e35d719e46f8 100644
--- a/lldb/test/API/commands/target/dump-pcm-info/TestDumpPCMInfo.py
+++ b/lldb/test/API/commands/target/dump-pcm-info/TestDumpPCMInfo.py
@@ -13,7 +13,7 @@
 
 class TestCase(TestBase):
     @no_debug_info_test
-    @skipUnlessDarwin
+    @requireDarwin
     def test(self):
         self.build()
 
diff --git a/lldb/test/API/commands/target/dump-separate-debug-info/oso/TestDumpOso.py b/lldb/test/API/commands/target/dump-separate-debug-info/oso/TestDumpOso.py
index 9be36f9811f47..b0af84cc53a31 100644
--- a/lldb/test/API/commands/target/dump-separate-debug-info/oso/TestDumpOso.py
+++ b/lldb/test/API/commands/target/dump-separate-debug-info/oso/TestDumpOso.py
@@ -25,7 +25,7 @@ def get_osos_from_json_output(self):
         return result
 
     @skipIfRemote
-    @skipUnlessDarwin
+    @requireDarwin
     def test_shows_oso_loaded_json_output(self):
         self.build(debug_info="dwarf")
         exe = self.getBuildArtifact("a.out")
@@ -47,7 +47,7 @@ def test_shows_oso_loaded_json_output(self):
         self.assertTrue(osos[exe][foo_o]["loaded"])
 
     @skipIfRemote
-    @skipUnlessDarwin
+    @requireDarwin
     def test_shows_oso_not_loaded_json_output(self):
         self.build(debug_info="dwarf")
         exe = self.getBuildArtifact("a.out")
@@ -77,7 +77,7 @@ def test_shows_oso_not_loaded_json_output(self):
         self.assertNotIn(foo_o, output[exe])
 
     @skipIfRemote
-    @skipUnlessDarwin
+    @requireDarwin
     def test_shows_oso_loaded_table_output(self):
         self.build(debug_info="dwarf")
         exe = self.getBuildArtifact("a.out")
@@ -103,7 +103,7 @@ def test_shows_oso_loaded_table_output(self):
         )
 
     @skipIfRemote
-    @skipUnlessDarwin
+    @requireDarwin
     def test_shows_oso_not_loaded_table_output(self):
         self.build(debug_info="dwarf")
         exe = self.getBuildArtifact("a.out")
@@ -129,7 +129,7 @@ def test_shows_oso_not_loaded_table_output(self):
         )
 
     @skipIfRemote
-    @skipUnlessDarwin
+    @requireDarwin
     def test_osos_loaded_symbols_on_demand(self):
         self.build(debug_info="dwarf")
         exe = self.getBuildArtifact("a.out")
diff --git a/lldb/test/API/commands/target/stop-hooks/TestStopHooks.py b/lldb/test/API/commands/target/stop-hooks/TestStopHooks.py
index 466aefa904014..2daa065d1d4b5 100644
--- a/lldb/test/API/commands/target/stop-hooks/TestStopHooks.py
+++ b/lldb/test/API/commands/target/stop-hooks/TestStopHooks.py
@@ -9,7 +9,7 @@
 from lldbsuite.test.lldbtest import *
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestStopHooks(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
diff --git a/lldb/test/API/driver/batch_mode/TestBatchMode.py b/lldb/test/API/driver/batch_mode/TestBatchMode.py
index 47822b81b61e7..38b0871178395 100644
--- a/lldb/test/API/driver/batch_mode/TestBatchMode.py
+++ b/lldb/test/API/driver/batch_mode/TestBatchMode.py
@@ -11,7 +11,7 @@
 from lldbsuite.test.lldbpexpect import PExpectTest
 
 
- at skipIfWasm  # driver cannot launch a Wasm inferior
+ at requireNotWasm  # driver cannot launch a Wasm inferior
 class DriverBatchModeTest(PExpectTest):
     source = "main.c"
 
diff --git a/lldb/test/API/driver/longpath/TestLongPathDriver.py b/lldb/test/API/driver/longpath/TestLongPathDriver.py
index c74229b860367..7779e934efdae 100644
--- a/lldb/test/API/driver/longpath/TestLongPathDriver.py
+++ b/lldb/test/API/driver/longpath/TestLongPathDriver.py
@@ -15,7 +15,7 @@
 MAX_PATH = 260
 
 
- at skipUnlessWindows
+ at requireWindows
 class DriverLongPathTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
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..a32b17a894788 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 *
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 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 b0d00d49d4839..26d97ffd90096 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 skipIfWindows
+from lldbsuite.test.decorators import requireNotWindows
 import os
 
 
@@ -19,7 +19,7 @@ class TestLocationsAfterRebuild(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
     # On Windows we cannot remove a file that lldb is debugging.
-    @skipIfWindows
+    @requireNotWindows
     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
 
 
- at skipIfWasm  # wasm inferiors are built with -fno-exceptions
+ at 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
- at skipIfWasm  # iwasm gdb stub lacks the needed packets
+ at 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 *
 
 
- at skipIfWasm  # no hardware breakpoints
+ at 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 *
 
 
- at skipIfWasm  # no hardware breakpoints
+ at 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..f54f64fec1df1 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())
+    @requireNotWasm  # no expression evaluation (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
 
 
- at skipIfWasm  # driver cannot launch a Wasm inferior
+ at 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..bcfe435127518 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 *
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 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..2b3c64e07f6ce 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
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 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..33f73b67c9411 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
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 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
 
 
- at skipIfWasm  # attaching requires launching the inferior as a host process
+ at 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.
- at skipUnlessPlatform(["linux", "android", "freebsd", "netbsd"])
+ at 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
 
 
- at skipIfWasm  # no exec() on WebAssembly
+ at 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 *
 
 
- at skipIfWasm  # no fork() on WebAssembly
+ at 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"
 
 
- at skipIfWasm  # exercises the Darwin dynamic loader
+ at 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
 
 
- at skipIfWasm  # attaching requires launching the inferior as a host process
+ at 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
 
 
- at skipIfWasm  # wasm has no memory-protection faults/signals
+ at 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 *
 
 
- at skipIfWasm  # wasm has no memory-protection faults/signals
+ at 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 *
 
 
- at skipIfWasm  # wasm has no memory-protection faults/signals
+ at 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
 
 
- at skipIfWasm  # wasm has no memory-protection faults/signals
+ at 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
 
 
- at skipIfWasm  # wasm has no memory-protection faults/signals
+ at 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
 
 
- at skipIfWasm  # setjmp/longjmp on wasm requires exception-handling support
+ at 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
 
 
- at skipUnlessWindows
+ at 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..49368b2adec47 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())
+    @requireNotWasm  # no expression evaluation (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 *
 
 
- at skipIfWasm  # WASI has no mmap
+ at 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
 
 
- at skipIfWasm  # modules carry no build ID to cache on
+ at 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 11ecfb988d017..46141f5aed595 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
     def test_python_os_plugin(self):
         """Test that the OS plugin in a dSYM works on attach."""
         executable = self.build_dsym("my_binary")
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
 
 
- at skipUnlessPlatform(["freebsd"])
+ at 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
 
 
- at skipIfWasm  # no fork()/setpgid() on WebAssembly
+ at 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..b6846789730bc 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 *
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 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..eaa4b999a7344 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
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 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
 
 
- at skipIfWasm  # return value is unrecoverable from the operand stack at a step-out
+ at 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
 
 
- at skipIfWasm  # no reverse execution
+ at 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
 
 
- at skipIfWasm  # no reverse execution
+ at 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 ddd9b68a632bb..3d2517a522567 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
 
- at skipIfWasm  # multithreaded C++ inferior; wasm has no threads or exceptions
+ at 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
 
 
- at skipIfWasm  # multithreaded C++ inferior; wasm has no threads or exceptions
+ at 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 e8449c0faa928..68f099996c81b 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
 
 
- at skipIfNoSignals
+ at 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
 
 
- at skipIfNoSignals
+ at 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
 
 
- at skipIfNoSignals
+ at 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
 
 
- at skipIfNoSignals
+ at 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
 
 
- at skipIfWasm  # no unwinder support for tail-call frames
+ at 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 *
 
 
- at skipIfWasm  # no unwinder support for tail-call frames
+ at 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 *
 
 
- at skipIfWasm  # no unwinder support for tail-call frames
+ at 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."""
diff --git a/lldb/test/API/iohandler/sigint/TestIOHandlerPythonREPLSigint.py b/lldb/test/API/iohandler/sigint/TestIOHandlerPythonREPLSigint.py
index 1532d7942dfe3..e7e7534b40c02 100644
--- a/lldb/test/API/iohandler/sigint/TestIOHandlerPythonREPLSigint.py
+++ b/lldb/test/API/iohandler/sigint/TestIOHandlerPythonREPLSigint.py
@@ -22,7 +22,7 @@ def start_python_repl(self):
     # PExpect uses many timeouts internally and doesn't play well
     # under ASAN on a loaded machine..
     @skipIfAsan
-    @skipIfWindows
+    @requirePOSIX
     @skipIf(oslist=["linux"], archs=["arm$", "aarch64"])
     def test_while_evaluating_code(self):
         """Tests SIGINT handling while Python code is being evaluated."""
@@ -56,7 +56,7 @@ def test_while_evaluating_code(self):
     # FIXME: On Linux the Python code that reads from stdin seems to block until
     # it has finished reading a line before handling any queued signals.
     @skipIf(hostoslist=["linux"])
-    @skipIfWindows
+    @requirePOSIX
     def test_while_waiting_on_input(self):
         """Tests SIGINT handling while the REPL is waiting on input from
         stdin."""
diff --git a/lldb/test/API/iohandler/sigint/TestProcessIOHandlerInterrupt.py b/lldb/test/API/iohandler/sigint/TestProcessIOHandlerInterrupt.py
index 3e9733f403f96..149a759c5d4e1 100644
--- a/lldb/test/API/iohandler/sigint/TestProcessIOHandlerInterrupt.py
+++ b/lldb/test/API/iohandler/sigint/TestProcessIOHandlerInterrupt.py
@@ -10,7 +10,7 @@
 from lldbsuite.test.lldbpexpect import PExpectTest
 
 
- at skipIfNoSignals  # no signal support
+ at requireSignals  # no signal support
 class TestCase(PExpectTest):
     SHARED_BUILD_TESTCASE = False
 
diff --git a/lldb/test/API/lang/c/anonymous/TestAnonymous.py b/lldb/test/API/lang/c/anonymous/TestAnonymous.py
index 8e74a72326bdb..644c82c8e4438 100644
--- a/lldb/test/API/lang/c/anonymous/TestAnonymous.py
+++ b/lldb/test/API/lang/c/anonymous/TestAnonymous.py
@@ -74,7 +74,7 @@ def test_expr_parent(self):
             substrs=["(type_y) $", "dummy = 2"],
         )
 
-    @skipIfWasm  # no expression evaluation
+    @requireNotWasm  # no expression evaluation
     def test_expr_null(self):
         self.build()
         self.common_setup(self.line2)
diff --git a/lldb/test/API/lang/c/blocks/TestBlocks.py b/lldb/test/API/lang/c/blocks/TestBlocks.py
index f16e35a09adcf..0f9e2d402e5cf 100644
--- a/lldb/test/API/lang/c/blocks/TestBlocks.py
+++ b/lldb/test/API/lang/c/blocks/TestBlocks.py
@@ -6,9 +6,9 @@
 import lldbsuite.test.lldbutil as lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class BlocksTestCase(TestBase):
-    @skipUnlessDarwin
+    @requireDarwin
     def test(self):
         self.build()
         src = lldb.SBFileSpec("main.c")
@@ -52,7 +52,7 @@ def test(self):
         self.expect_expr("*captured_ptr", result_type="int", result_value="42")
         self.expect_expr("captured_struct.x", result_type="int", result_value="10")
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_define(self):
         """Test defining and calling a block from the expression evaluator."""
         self.build()
diff --git a/lldb/test/API/lang/c/calling-conventions/TestCCallingConventions.py b/lldb/test/API/lang/c/calling-conventions/TestCCallingConventions.py
index 00917c5230e20..4c922c91c60c0 100644
--- a/lldb/test/API/lang/c/calling-conventions/TestCCallingConventions.py
+++ b/lldb/test/API/lang/c/calling-conventions/TestCCallingConventions.py
@@ -87,7 +87,7 @@ def test_pascal(self):
             return
         self.expect_expr("func(1, 2, 3, 4)", result_type="int", result_value="10")
 
-    @skipIfWasm  # no expression evaluation
+    @requireNotWasm  # no expression evaluation
     def test_sysv_abi(self):
         if not self.build_and_run("sysv_abi.c"):
             return
diff --git a/lldb/test/API/lang/c/enum_types/TestEnumTypes.py b/lldb/test/API/lang/c/enum_types/TestEnumTypes.py
index e8d29d23cdaa2..b072f8ad23eee 100644
--- a/lldb/test/API/lang/c/enum_types/TestEnumTypes.py
+++ b/lldb/test/API/lang/c/enum_types/TestEnumTypes.py
@@ -14,7 +14,7 @@ def setUp(self):
         # Find the line number to break inside main().
         self.line = line_number("main.c", "// Set break point at this line.")
 
-    @skipIfWasm  # no expression evaluation
+    @requireNotWasm  # no expression evaluation
     def test_command_line(self):
         """Test 'image lookup -t enum_test_days' and check for correct display and enum value printing."""
         self.build()
diff --git a/lldb/test/API/lang/c/fpeval/TestFPEval.py b/lldb/test/API/lang/c/fpeval/TestFPEval.py
index 1b5f4e7199a07..c518cdb32777d 100644
--- a/lldb/test/API/lang/c/fpeval/TestFPEval.py
+++ b/lldb/test/API/lang/c/fpeval/TestFPEval.py
@@ -6,7 +6,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class FPEvalTestCase(TestBase):
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/API/lang/c/full_lto_stepping/TestFullLtoStepping.py b/lldb/test/API/lang/c/full_lto_stepping/TestFullLtoStepping.py
index 95c174c5efb33..24d0105895021 100644
--- a/lldb/test/API/lang/c/full_lto_stepping/TestFullLtoStepping.py
+++ b/lldb/test/API/lang/c/full_lto_stepping/TestFullLtoStepping.py
@@ -11,7 +11,7 @@ class TestFullLtoStepping(TestBase):
     @skipIfAsan
     @skipIf(compiler=no_match("clang"))
     @skipIf(compiler="clang", compiler_version=["<", "13.0"])
-    @skipUnlessDarwin
+    @requireDarwin
     def test(self):
         self.build()
         _, _, thread, _ = lldbutil.run_to_name_breakpoint(self, "main")
diff --git a/lldb/test/API/lang/c/function_types/TestFunctionTypes.py b/lldb/test/API/lang/c/function_types/TestFunctionTypes.py
index ad47504e00b88..4a4dee16d1e66 100644
--- a/lldb/test/API/lang/c/function_types/TestFunctionTypes.py
+++ b/lldb/test/API/lang/c/function_types/TestFunctionTypes.py
@@ -7,7 +7,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class FunctionTypesTestCase(TestBase):
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/API/lang/c/libc_calls/TestLibcCalls.py b/lldb/test/API/lang/c/libc_calls/TestLibcCalls.py
index 8ed468f570155..5bfd7232f13bb 100644
--- a/lldb/test/API/lang/c/libc_calls/TestLibcCalls.py
+++ b/lldb/test/API/lang/c/libc_calls/TestLibcCalls.py
@@ -15,7 +15,7 @@
 class LibcCallsTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIfRemote
     def test_libc_funcs_do_not_resolve_to_dyld(self):
         """The JIT-resolved address of each libc function must not lie in
@@ -54,7 +54,7 @@ def test_libc_funcs_do_not_resolve_to_dyld(self):
                     resolved_module_name, "dyld", f"Called dyld version of {symbol}"
                 )
 
-    @skipIfWasm  # no expression evaluation
+    @requireNotWasm  # no expression evaluation
     def test_libc_calls_succeed(self):
         """Calling memset/memcpy/memmove/memcmp from expressions must
         execute without trapping."""
diff --git a/lldb/test/API/lang/c/modules/TestCModules.py b/lldb/test/API/lang/c/modules/TestCModules.py
index 152ace6abb12f..349e0d5b09829 100644
--- a/lldb/test/API/lang/c/modules/TestCModules.py
+++ b/lldb/test/API/lang/c/modules/TestCModules.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class CModulesTestCase(TestBase):
     @expectedFailureAll(
         oslist=["freebsd", "linux"],
diff --git a/lldb/test/API/lang/c/sizeof/TestCSizeof.py b/lldb/test/API/lang/c/sizeof/TestCSizeof.py
index acb1872cf32b0..ee5ff57388b7b 100644
--- a/lldb/test/API/lang/c/sizeof/TestCSizeof.py
+++ b/lldb/test/API/lang/c/sizeof/TestCSizeof.py
@@ -4,7 +4,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestCase(TestBase):
     def test(self):
         self.build()
diff --git a/lldb/test/API/lang/c/strings/TestCStrings.py b/lldb/test/API/lang/c/strings/TestCStrings.py
index 86668a6e3c238..19ae41335984e 100644
--- a/lldb/test/API/lang/c/strings/TestCStrings.py
+++ b/lldb/test/API/lang/c/strings/TestCStrings.py
@@ -7,7 +7,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class CStringsTestCase(TestBase):
     def test_with_run_command(self):
         """Tests that C strings work as expected in expressions"""
diff --git a/lldb/test/API/lang/c/struct_types/TestStructTypes.py b/lldb/test/API/lang/c/struct_types/TestStructTypes.py
index 0dcbd0979d5a3..ba20388ea8d26 100644
--- a/lldb/test/API/lang/c/struct_types/TestStructTypes.py
+++ b/lldb/test/API/lang/c/struct_types/TestStructTypes.py
@@ -1,4 +1,4 @@
 from lldbsuite.test import lldbinline
 from lldbsuite.test import decorators
 
-lldbinline.MakeInlineTest(__file__, globals(), [decorators.skipIfWasm])
+lldbinline.MakeInlineTest(__file__, globals(), [decorators.requireNotWasm])
diff --git a/lldb/test/API/lang/cpp/abi_tag_structors/TestAbiTagStructors.py b/lldb/test/API/lang/cpp/abi_tag_structors/TestAbiTagStructors.py
index 94923046e0ba4..1eac857773024 100644
--- a/lldb/test/API/lang/cpp/abi_tag_structors/TestAbiTagStructors.py
+++ b/lldb/test/API/lang/cpp/abi_tag_structors/TestAbiTagStructors.py
@@ -18,7 +18,7 @@ class AbiTagStructorsTestCase(TestBase):
         bugnumber="Required Clang flag not supported",
     )
     @expectedFailureAll(oslist=["windows"])
-    @skipIfWasm  # no expression evaluation
+    @requireNotWasm  # no expression evaluation
     def test_with_structor_linkage_names(self):
         self.build(dictionary={"CXXFLAGS_EXTRAS": "-gstructor-decl-linkage-names"})
 
@@ -124,13 +124,13 @@ def do_nested_structor_test(self):
 
     @skipIf(compiler="clang", compiler_version=["<", "22"])
     @expectedFailureAll(oslist=["windows"])
-    @skipIfWasm  # no expression evaluation
+    @requireNotWasm  # no expression evaluation
     def test_nested_with_structor_linkage_names(self):
         self.build(dictionary={"CXXFLAGS_EXTRAS": "-gstructor-decl-linkage-names"})
         self.do_nested_structor_test()
 
     @expectedFailureAll(oslist=["windows"])
-    @skipIfWasm  # no expression evaluation
+    @requireNotWasm  # no expression evaluation
     def test_nested_no_structor_linkage_names(self):
         # In older versions of Clang the -gno-structor-decl-linkage-names
         # behaviour was the default.
diff --git a/lldb/test/API/lang/cpp/accelerator-table/TestCPPAccelerator.py b/lldb/test/API/lang/cpp/accelerator-table/TestCPPAccelerator.py
index 0f21806da6bd3..dc015f1946ed2 100644
--- a/lldb/test/API/lang/cpp/accelerator-table/TestCPPAccelerator.py
+++ b/lldb/test/API/lang/cpp/accelerator-table/TestCPPAccelerator.py
@@ -5,7 +5,7 @@
 
 
 class CPPAcceleratorTableTestCase(TestBase):
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIf(debug_info=no_match(["dwarf"]))
     @skipIf(dwarf_version=[">=", "5"])
     def test(self):
diff --git a/lldb/test/API/lang/cpp/auto/TestCPPAuto.py b/lldb/test/API/lang/cpp/auto/TestCPPAuto.py
index 3b1445897481e..860b83e2a0a85 100644
--- a/lldb/test/API/lang/cpp/auto/TestCPPAuto.py
+++ b/lldb/test/API/lang/cpp/auto/TestCPPAuto.py
@@ -7,7 +7,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class CPPAutoTestCase(TestBase):
     def test_with_run_command(self):
         """Test that auto types work in the expression parser"""
diff --git a/lldb/test/API/lang/cpp/call-function/TestCallCPPFunction.py b/lldb/test/API/lang/cpp/call-function/TestCallCPPFunction.py
index f422bc691e225..6f4933fbe7cb8 100644
--- a/lldb/test/API/lang/cpp/call-function/TestCallCPPFunction.py
+++ b/lldb/test/API/lang/cpp/call-function/TestCallCPPFunction.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class CallCPPFunctionTestCase(TestBase):
     def setUp(self):
         TestBase.setUp(self)
diff --git a/lldb/test/API/lang/cpp/chained-calls/TestCppChainedCalls.py b/lldb/test/API/lang/cpp/chained-calls/TestCppChainedCalls.py
index 0765a66bfefc5..161cdf1611408 100644
--- a/lldb/test/API/lang/cpp/chained-calls/TestCppChainedCalls.py
+++ b/lldb/test/API/lang/cpp/chained-calls/TestCppChainedCalls.py
@@ -4,7 +4,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestCppChainedCalls(TestBase):
     def test_with_run_command(self):
         self.build()
diff --git a/lldb/test/API/lang/cpp/class-template-parameter-pack/TestClassTemplateParameterPack.py b/lldb/test/API/lang/cpp/class-template-parameter-pack/TestClassTemplateParameterPack.py
index 57cda83f94502..819d2174de641 100644
--- a/lldb/test/API/lang/cpp/class-template-parameter-pack/TestClassTemplateParameterPack.py
+++ b/lldb/test/API/lang/cpp/class-template-parameter-pack/TestClassTemplateParameterPack.py
@@ -4,7 +4,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestCase(TestBase):
     def test(self):
         self.build()
diff --git a/lldb/test/API/lang/cpp/const_static_integral_member/TestConstStaticIntegralMember.py b/lldb/test/API/lang/cpp/const_static_integral_member/TestConstStaticIntegralMember.py
index 6558e8a88c044..eb3b8c85c2b44 100644
--- a/lldb/test/API/lang/cpp/const_static_integral_member/TestConstStaticIntegralMember.py
+++ b/lldb/test/API/lang/cpp/const_static_integral_member/TestConstStaticIntegralMember.py
@@ -11,7 +11,7 @@
 class TestCase(TestBase):
     SHARED_BUILD_TESTCASE = False
 
-    @skipIfWasm  # no expression evaluation
+    @requireNotWasm  # no expression evaluation
     def test(self):
         self.build()
         lldbutil.run_to_source_breakpoint(
diff --git a/lldb/test/API/lang/cpp/const_static_integral_member_int128/TestConstStaticIntegralMemberInt128.py b/lldb/test/API/lang/cpp/const_static_integral_member_int128/TestConstStaticIntegralMemberInt128.py
index c36154e5770ed..6c6ec6aeb490b 100644
--- a/lldb/test/API/lang/cpp/const_static_integral_member_int128/TestConstStaticIntegralMemberInt128.py
+++ b/lldb/test/API/lang/cpp/const_static_integral_member_int128/TestConstStaticIntegralMemberInt128.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestCase(TestBase):
     # int128 is not available on 32-bit ARM.
     @skipIf(archs=["arm$"])
diff --git a/lldb/test/API/lang/cpp/constructors/TestCppConstructors.py b/lldb/test/API/lang/cpp/constructors/TestCppConstructors.py
index 1f7e25517e765..83b20812e1205 100644
--- a/lldb/test/API/lang/cpp/constructors/TestCppConstructors.py
+++ b/lldb/test/API/lang/cpp/constructors/TestCppConstructors.py
@@ -4,7 +4,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestCase(TestBase):
     @expectedFailureAll(bugnumber="llvm.org/pr50814", compiler="gcc")
     def test_constructors(self):
diff --git a/lldb/test/API/lang/cpp/covariant-return-types/TestCovariantReturnTypes.py b/lldb/test/API/lang/cpp/covariant-return-types/TestCovariantReturnTypes.py
index 2dcba86f2d352..d7c992beb6181 100644
--- a/lldb/test/API/lang/cpp/covariant-return-types/TestCovariantReturnTypes.py
+++ b/lldb/test/API/lang/cpp/covariant-return-types/TestCovariantReturnTypes.py
@@ -4,7 +4,7 @@
 import lldbsuite.test.lldbutil as lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
diff --git a/lldb/test/API/lang/cpp/decl-from-submodule/TestDeclFromSubmodule.py b/lldb/test/API/lang/cpp/decl-from-submodule/TestDeclFromSubmodule.py
index 590524147bbb5..ed2f85877514c 100644
--- a/lldb/test/API/lang/cpp/decl-from-submodule/TestDeclFromSubmodule.py
+++ b/lldb/test/API/lang/cpp/decl-from-submodule/TestDeclFromSubmodule.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class DeclFromSubmoduleTestCase(TestBase):
     # Requires DWARF debug info which is not retained when linking with link.exe.
     @skipIfWindows
diff --git a/lldb/test/API/lang/cpp/default-template-args/TestDefaultTemplateArgs.py b/lldb/test/API/lang/cpp/default-template-args/TestDefaultTemplateArgs.py
index 7b5417b60040b..72f44079e56e5 100644
--- a/lldb/test/API/lang/cpp/default-template-args/TestDefaultTemplateArgs.py
+++ b/lldb/test/API/lang/cpp/default-template-args/TestDefaultTemplateArgs.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestDefaultTemplateArgs(TestBase):
     @no_debug_info_test
     def test(self):
diff --git a/lldb/test/API/lang/cpp/enum-limits/TestCPPEnumLimits.py b/lldb/test/API/lang/cpp/enum-limits/TestCPPEnumLimits.py
index 4e0c0a088c909..a380d6bdcf53d 100644
--- a/lldb/test/API/lang/cpp/enum-limits/TestCPPEnumLimits.py
+++ b/lldb/test/API/lang/cpp/enum-limits/TestCPPEnumLimits.py
@@ -56,7 +56,7 @@ def test(self):
         self.build()
         self.check_all(self.dbg.CreateTarget(self.getBuildArtifact("a.out")))
 
-    @skipUnlessPlatform(["windows"])
+    @requireWindows
     @skipUnlessMSVC
     @no_debug_info_test  # We only test MSVC
     def test_msvc(self):
diff --git a/lldb/test/API/lang/cpp/exceptions/TestCPPExceptionBreakpoints.py b/lldb/test/API/lang/cpp/exceptions/TestCPPExceptionBreakpoints.py
index 22db417e862ea..27b690605cca8 100644
--- a/lldb/test/API/lang/cpp/exceptions/TestCPPExceptionBreakpoints.py
+++ b/lldb/test/API/lang/cpp/exceptions/TestCPPExceptionBreakpoints.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # wasm inferiors are built with -fno-exceptions
+ at requireNotWasm  # wasm inferiors are built with -fno-exceptions
 class CPPBreakpointTestCase(TestBase):
     def setUp(self):
         # Call super's setUp().
diff --git a/lldb/test/API/lang/cpp/expression-context-qualifiers/const_method/TestExprInConstMethod.py b/lldb/test/API/lang/cpp/expression-context-qualifiers/const_method/TestExprInConstMethod.py
index a830bbc7fd6d8..0ce0ff8f9d86f 100644
--- a/lldb/test/API/lang/cpp/expression-context-qualifiers/const_method/TestExprInConstMethod.py
+++ b/lldb/test/API/lang/cpp/expression-context-qualifiers/const_method/TestExprInConstMethod.py
@@ -4,7 +4,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestCase(TestBase):
     def test(self):
         self.build()
diff --git a/lldb/test/API/lang/cpp/expression-context-qualifiers/const_volatile_method/TestExprInConstVolatileMethod.py b/lldb/test/API/lang/cpp/expression-context-qualifiers/const_volatile_method/TestExprInConstVolatileMethod.py
index aacac82d2d7bc..4ffedb33c42f9 100644
--- a/lldb/test/API/lang/cpp/expression-context-qualifiers/const_volatile_method/TestExprInConstVolatileMethod.py
+++ b/lldb/test/API/lang/cpp/expression-context-qualifiers/const_volatile_method/TestExprInConstVolatileMethod.py
@@ -4,7 +4,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestCase(TestBase):
     def test(self):
         self.build()
diff --git a/lldb/test/API/lang/cpp/expression-context-qualifiers/cv_qualified_objects/TestExprOnCVQualifiedObjects.py b/lldb/test/API/lang/cpp/expression-context-qualifiers/cv_qualified_objects/TestExprOnCVQualifiedObjects.py
index ce1a19d896c59..31b7fb0982359 100644
--- a/lldb/test/API/lang/cpp/expression-context-qualifiers/cv_qualified_objects/TestExprOnCVQualifiedObjects.py
+++ b/lldb/test/API/lang/cpp/expression-context-qualifiers/cv_qualified_objects/TestExprOnCVQualifiedObjects.py
@@ -4,7 +4,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestCase(TestBase):
     def test(self):
         self.build()
diff --git a/lldb/test/API/lang/cpp/expression-context-qualifiers/non_const_method/TestExprInNonConstMethod.py b/lldb/test/API/lang/cpp/expression-context-qualifiers/non_const_method/TestExprInNonConstMethod.py
index f75b800e0ef95..b30c23ed49aee 100644
--- a/lldb/test/API/lang/cpp/expression-context-qualifiers/non_const_method/TestExprInNonConstMethod.py
+++ b/lldb/test/API/lang/cpp/expression-context-qualifiers/non_const_method/TestExprInNonConstMethod.py
@@ -4,7 +4,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestCase(TestBase):
     def test(self):
         self.build()
diff --git a/lldb/test/API/lang/cpp/expression-context-qualifiers/template_const_method/TestExprInTemplateConstMethod.py b/lldb/test/API/lang/cpp/expression-context-qualifiers/template_const_method/TestExprInTemplateConstMethod.py
index cb07bbe23582d..3fd749d785eab 100644
--- a/lldb/test/API/lang/cpp/expression-context-qualifiers/template_const_method/TestExprInTemplateConstMethod.py
+++ b/lldb/test/API/lang/cpp/expression-context-qualifiers/template_const_method/TestExprInTemplateConstMethod.py
@@ -4,7 +4,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestCase(TestBase):
     def test(self):
         self.build()
diff --git a/lldb/test/API/lang/cpp/expression-context-qualifiers/template_non_const_method/TestExprInTemplateNonConstMethod.py b/lldb/test/API/lang/cpp/expression-context-qualifiers/template_non_const_method/TestExprInTemplateNonConstMethod.py
index 264451c017b58..1dd8c3816df3b 100644
--- a/lldb/test/API/lang/cpp/expression-context-qualifiers/template_non_const_method/TestExprInTemplateNonConstMethod.py
+++ b/lldb/test/API/lang/cpp/expression-context-qualifiers/template_non_const_method/TestExprInTemplateNonConstMethod.py
@@ -4,7 +4,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestCase(TestBase):
     def test(self):
         self.build()
diff --git a/lldb/test/API/lang/cpp/floating-types-specialization/TestCppFloatingTypesSpecialization.py b/lldb/test/API/lang/cpp/floating-types-specialization/TestCppFloatingTypesSpecialization.py
index 9d7c9e072c81c..1a0e7055c85cf 100644
--- a/lldb/test/API/lang/cpp/floating-types-specialization/TestCppFloatingTypesSpecialization.py
+++ b/lldb/test/API/lang/cpp/floating-types-specialization/TestCppFloatingTypesSpecialization.py
@@ -5,7 +5,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # _Float16/__bf16 are unsupported on the wasm target
+ at requireNotWasm  # _Float16/__bf16 are unsupported on the wasm target
 class TestCase(TestBase):
     @skipIf(compiler="clang", compiler_version=["<", "17.0"])
     def test(self):
diff --git a/lldb/test/API/lang/cpp/function-call-from-object-file/TestFunctionCallFromObjectFile.py b/lldb/test/API/lang/cpp/function-call-from-object-file/TestFunctionCallFromObjectFile.py
index 3ea5482120c63..97480c85bd37f 100644
--- a/lldb/test/API/lang/cpp/function-call-from-object-file/TestFunctionCallFromObjectFile.py
+++ b/lldb/test/API/lang/cpp/function-call-from-object-file/TestFunctionCallFromObjectFile.py
@@ -15,7 +15,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestFunctionCallFromObjectFile(TestBase):
     def test_lib1(self):
         self.build()
diff --git a/lldb/test/API/lang/cpp/function-qualifiers/TestCppFunctionQualifiers.py b/lldb/test/API/lang/cpp/function-qualifiers/TestCppFunctionQualifiers.py
index 1f556c811decc..1335d5d3cc7db 100644
--- a/lldb/test/API/lang/cpp/function-qualifiers/TestCppFunctionQualifiers.py
+++ b/lldb/test/API/lang/cpp/function-qualifiers/TestCppFunctionQualifiers.py
@@ -4,7 +4,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestFunctionQualifiers(TestBase):
     def test(self):
         self.build()
diff --git a/lldb/test/API/lang/cpp/function-ref-qualifiers/TestCppFunctionRefQualifiers.py b/lldb/test/API/lang/cpp/function-ref-qualifiers/TestCppFunctionRefQualifiers.py
index 1ad689891c8cd..cd0ee33cbee2f 100644
--- a/lldb/test/API/lang/cpp/function-ref-qualifiers/TestCppFunctionRefQualifiers.py
+++ b/lldb/test/API/lang/cpp/function-ref-qualifiers/TestCppFunctionRefQualifiers.py
@@ -10,7 +10,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestFunctionRefQualifiers(TestBase):
     def test(self):
         self.build()
diff --git a/lldb/test/API/lang/cpp/global_operators/TestCppGlobalOperators.py b/lldb/test/API/lang/cpp/global_operators/TestCppGlobalOperators.py
index b8c23d50b4d3c..bed8a7b4e5a52 100644
--- a/lldb/test/API/lang/cpp/global_operators/TestCppGlobalOperators.py
+++ b/lldb/test/API/lang/cpp/global_operators/TestCppGlobalOperators.py
@@ -7,7 +7,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestCppGlobalOperators(TestBase):
     def prepare_executable_and_get_frame(self):
         self.build()
diff --git a/lldb/test/API/lang/cpp/llvm-style/TestLLVMStyle.py b/lldb/test/API/lang/cpp/llvm-style/TestLLVMStyle.py
index 0dcbd0979d5a3..ba20388ea8d26 100644
--- a/lldb/test/API/lang/cpp/llvm-style/TestLLVMStyle.py
+++ b/lldb/test/API/lang/cpp/llvm-style/TestLLVMStyle.py
@@ -1,4 +1,4 @@
 from lldbsuite.test import lldbinline
 from lldbsuite.test import decorators
 
-lldbinline.MakeInlineTest(__file__, globals(), [decorators.skipIfWasm])
+lldbinline.MakeInlineTest(__file__, globals(), [decorators.requireNotWasm])
diff --git a/lldb/test/API/lang/cpp/modules-import/TestCXXModulesImport.py b/lldb/test/API/lang/cpp/modules-import/TestCXXModulesImport.py
index 040d44eb8bdcb..3dfd65308aa20 100644
--- a/lldb/test/API/lang/cpp/modules-import/TestCXXModulesImport.py
+++ b/lldb/test/API/lang/cpp/modules-import/TestCXXModulesImport.py
@@ -19,7 +19,7 @@ def build(self):
             )
         super(CXXModulesImportTestCase, self).build()
 
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIf(macos_version=["<", "10.12"])
     @skipIf(compiler="clang", compiler_version=["<", "14.0"])
     def test_expr(self):
@@ -34,7 +34,7 @@ def test_expr(self):
             "expr -l Objective-C++ -- @import THIS_MODULE_DOES_NOT_EXIST", error=True
         )
 
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIf(macos_version=["<", "10.12"])
     @skipIf(compiler="clang", compiler_version=["<", "14.0"])
     def test_expr_failing_import(self):
diff --git a/lldb/test/API/lang/cpp/multiple-inheritance/TestCppMultipleInheritance.py b/lldb/test/API/lang/cpp/multiple-inheritance/TestCppMultipleInheritance.py
index 9c50881f682a0..f072bb98f3f10 100644
--- a/lldb/test/API/lang/cpp/multiple-inheritance/TestCppMultipleInheritance.py
+++ b/lldb/test/API/lang/cpp/multiple-inheritance/TestCppMultipleInheritance.py
@@ -4,7 +4,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestCase(TestBase):
     def test(self):
         self.build()
diff --git a/lldb/test/API/lang/cpp/namespace/TestNamespace.py b/lldb/test/API/lang/cpp/namespace/TestNamespace.py
index 0121932dc257b..0a853f401415b 100644
--- a/lldb/test/API/lang/cpp/namespace/TestNamespace.py
+++ b/lldb/test/API/lang/cpp/namespace/TestNamespace.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class NamespaceBreakpointTestCase(TestBase):
     @expectedFailureAll(bugnumber="llvm.org/pr28548", compiler="gcc")
     @expectedFailureAll(oslist=["windows"])
@@ -133,7 +133,7 @@ def runToBkpt(self, command):
 
     # rdar://problem/8668674
     @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24764")
-    @skipIfWasm  # no expression evaluation
+    @requireNotWasm  # no expression evaluation
     def test_with_run_command(self):
         """Test that anonymous and named namespace variables display correctly."""
         self.build()
diff --git a/lldb/test/API/lang/cpp/namespace/TestNamespaceLookup.py b/lldb/test/API/lang/cpp/namespace/TestNamespaceLookup.py
index eefbb4c6e7819..c55f3e8bbaae1 100644
--- a/lldb/test/API/lang/cpp/namespace/TestNamespaceLookup.py
+++ b/lldb/test/API/lang/cpp/namespace/TestNamespaceLookup.py
@@ -100,7 +100,7 @@ def test_scope_lookup_with_run_command_globals(self):
         self.expect_expr("::func()", result_type="int", result_value="1")
 
     @skipIfWindows  # This is flakey on Windows: llvm.org/pr38373
-    @skipIfWasm  # no expression evaluation
+    @requireNotWasm  # no expression evaluation
     def test_scope_lookup_with_run_command(self):
         """Test scope lookup of functions in lldb."""
         self.build()
@@ -259,7 +259,7 @@ def test_function_scope_lookup_with_run_command(self):
     # NOTE: this test may fail on older systems that don't emit import
     # entries in DWARF - may need to add checks for compiler versions here.
     @skipIf(compiler="gcc", oslist=["linux"], debug_info=["dwo"])  # Skip to avoid crash
-    @skipIfWasm  # no expression evaluation
+    @requireNotWasm  # no expression evaluation
     def test_scope_after_using_directive_lookup_with_run_command(self):
         """Test scope lookup after using directive in lldb."""
         self.build()
@@ -323,7 +323,7 @@ def test_scope_ambiguity_after_using_lookup_with_run_command(self):
         # the same type.
         self.expect("expr -- func()", startstr="error")
 
-    @skipIfWasm  # no expression evaluation
+    @requireNotWasm  # no expression evaluation
     def test_scope_lookup_shadowed_by_using_with_run_command(self):
         """Test scope lookup shadowed by using in lldb."""
         self.build()
diff --git a/lldb/test/API/lang/cpp/namespace_conflicts/TestNamespaceConflicts.py b/lldb/test/API/lang/cpp/namespace_conflicts/TestNamespaceConflicts.py
index 0dcbd0979d5a3..ba20388ea8d26 100644
--- a/lldb/test/API/lang/cpp/namespace_conflicts/TestNamespaceConflicts.py
+++ b/lldb/test/API/lang/cpp/namespace_conflicts/TestNamespaceConflicts.py
@@ -1,4 +1,4 @@
 from lldbsuite.test import lldbinline
 from lldbsuite.test import decorators
 
-lldbinline.MakeInlineTest(__file__, globals(), [decorators.skipIfWasm])
+lldbinline.MakeInlineTest(__file__, globals(), [decorators.requireNotWasm])
diff --git a/lldb/test/API/lang/cpp/operators/TestCppOperators.py b/lldb/test/API/lang/cpp/operators/TestCppOperators.py
index 1c2876284512d..ee3c1d1199708 100644
--- a/lldb/test/API/lang/cpp/operators/TestCppOperators.py
+++ b/lldb/test/API/lang/cpp/operators/TestCppOperators.py
@@ -5,7 +5,7 @@
     __file__,
     globals(),
     [
-        decorators.skipIfWasm,
+        decorators.requireNotWasm,
         decorators.expectedFailureAll(bugnumber="llvm.org/pr50814", compiler="gcc"),
     ],
 )
diff --git a/lldb/test/API/lang/cpp/overloaded-functions/TestOverloadedFunctions.py b/lldb/test/API/lang/cpp/overloaded-functions/TestOverloadedFunctions.py
index 035fb1dafac26..416d6e18fe588 100644
--- a/lldb/test/API/lang/cpp/overloaded-functions/TestOverloadedFunctions.py
+++ b/lldb/test/API/lang/cpp/overloaded-functions/TestOverloadedFunctions.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class OverloadedFunctionsTestCase(TestBase):
     def test_with_run_command(self):
         """Test that functions with the same name are resolved correctly"""
diff --git a/lldb/test/API/lang/cpp/pointer_to_member_type_depending_on_parent_size/TestPointerToMemberTypeDependingOnParentSize.py b/lldb/test/API/lang/cpp/pointer_to_member_type_depending_on_parent_size/TestPointerToMemberTypeDependingOnParentSize.py
index dcf17fd1d7905..44c509272641d 100644
--- a/lldb/test/API/lang/cpp/pointer_to_member_type_depending_on_parent_size/TestPointerToMemberTypeDependingOnParentSize.py
+++ b/lldb/test/API/lang/cpp/pointer_to_member_type_depending_on_parent_size/TestPointerToMemberTypeDependingOnParentSize.py
@@ -10,7 +10,7 @@ class TestCase(TestBase):
     @skipIf(compiler="gcc")
     # On Windows both MSVC and Clang are rejecting the test code because
     # `ToLayout` is not complete when pointer_to_member_member is declared.
-    @skipIfWindows
+    @requireNotWindows
     @no_debug_info_test
     def test(self):
         """
diff --git a/lldb/test/API/lang/cpp/printf/TestPrintf.py b/lldb/test/API/lang/cpp/printf/TestPrintf.py
index efa45eecac16b..f7264f99df2a2 100644
--- a/lldb/test/API/lang/cpp/printf/TestPrintf.py
+++ b/lldb/test/API/lang/cpp/printf/TestPrintf.py
@@ -5,7 +5,7 @@
     __file__,
     globals(),
     [
-        decorators.skipIfWasm,
+        decorators.requireNotWasm,
         decorators.expectedFailureAll(bugnumber="llvm.org/PR36715", oslist=["windows"]),
     ],
 )
diff --git a/lldb/test/API/lang/cpp/rvalue-references/TestRvalueReferences.py b/lldb/test/API/lang/cpp/rvalue-references/TestRvalueReferences.py
index 67e855b36bdcc..11a67120cf386 100644
--- a/lldb/test/API/lang/cpp/rvalue-references/TestRvalueReferences.py
+++ b/lldb/test/API/lang/cpp/rvalue-references/TestRvalueReferences.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class RvalueReferencesTestCase(TestBase):
     # rdar://problem/11479676
     @expectedFailureAll(
diff --git a/lldb/test/API/lang/cpp/scope/TestCppScope.py b/lldb/test/API/lang/cpp/scope/TestCppScope.py
index 7d34156d64516..060592f0b36f8 100644
--- a/lldb/test/API/lang/cpp/scope/TestCppScope.py
+++ b/lldb/test/API/lang/cpp/scope/TestCppScope.py
@@ -4,7 +4,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestCase(TestBase):
     @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24764")
     def test(self):
diff --git a/lldb/test/API/lang/cpp/static_members/TestCPPStaticMembers.py b/lldb/test/API/lang/cpp/static_members/TestCPPStaticMembers.py
index d44d9be303bbd..6cdff4bace1e3 100644
--- a/lldb/test/API/lang/cpp/static_members/TestCPPStaticMembers.py
+++ b/lldb/test/API/lang/cpp/static_members/TestCPPStaticMembers.py
@@ -12,7 +12,7 @@
 class TestCase(TestBase):
     # We fail to lookup static members on Windows.
     @expectedFailureAll(oslist=["windows"])
-    @skipIfWasm  # no expression evaluation
+    @requireNotWasm  # no expression evaluation
     def test_access_from_main(self):
         self.build()
         lldbutil.run_to_source_breakpoint(
@@ -25,7 +25,7 @@ def test_access_from_main(self):
 
     # We fail to lookup static members on Windows.
     @expectedFailureAll(oslist=["windows"])
-    @skipIfWasm  # no expression evaluation
+    @requireNotWasm  # no expression evaluation
     def test_access_from_member_function(self):
         self.build()
         lldbutil.run_to_source_breakpoint(
@@ -48,7 +48,7 @@ def test_access_without_scope(self):
 
     # We fail to lookup static members on Windows.
     @expectedFailureAll(oslist=["windows"])
-    @skipIfWasm  # no expression evaluation
+    @requireNotWasm  # no expression evaluation
     def test_no_crash_in_IR_arithmetic(self):
         """
         Test that LLDB doesn't crash on evaluating specific expression involving
diff --git a/lldb/test/API/lang/cpp/static_methods/TestCPPStaticMethods.py b/lldb/test/API/lang/cpp/static_methods/TestCPPStaticMethods.py
index 5ec95a513ab71..c60ddebe3ef20 100644
--- a/lldb/test/API/lang/cpp/static_methods/TestCPPStaticMethods.py
+++ b/lldb/test/API/lang/cpp/static_methods/TestCPPStaticMethods.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class CPPStaticMethodsTestCase(TestBase):
     def test_with_run_command(self):
         """Test that static methods are properly distinguished from regular methods"""
diff --git a/lldb/test/API/lang/cpp/symbols/TestSymbols.py b/lldb/test/API/lang/cpp/symbols/TestSymbols.py
index e9915f054ce05..65682d57a0fed 100644
--- a/lldb/test/API/lang/cpp/symbols/TestSymbols.py
+++ b/lldb/test/API/lang/cpp/symbols/TestSymbols.py
@@ -5,7 +5,7 @@
     __file__,
     globals(),
     [
-        decorators.skipIfWasm,
+        decorators.requireNotWasm,
         decorators.expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24764"),
     ],
 )
diff --git a/lldb/test/API/lang/cpp/template-diagnostic-hint/TestTemplateDiagnosticHint.py b/lldb/test/API/lang/cpp/template-diagnostic-hint/TestTemplateDiagnosticHint.py
index b99bade89a608..3e34be08462d4 100644
--- a/lldb/test/API/lang/cpp/template-diagnostic-hint/TestTemplateDiagnosticHint.py
+++ b/lldb/test/API/lang/cpp/template-diagnostic-hint/TestTemplateDiagnosticHint.py
@@ -4,7 +4,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestCase(TestBase):
     @expectedFailureWindows
     def test(self):
diff --git a/lldb/test/API/lang/cpp/template-function/TestTemplateFunctions.py b/lldb/test/API/lang/cpp/template-function/TestTemplateFunctions.py
index f763bbb1a92f2..9a1a3d719df95 100644
--- a/lldb/test/API/lang/cpp/template-function/TestTemplateFunctions.py
+++ b/lldb/test/API/lang/cpp/template-function/TestTemplateFunctions.py
@@ -56,7 +56,7 @@ def do_test_template_function(self, add_cast):
             self.expect_expr("d1 == d2", result_type="bool", result_value="true")
 
     @skipIfWindows
-    @skipIfWasm  # no expression evaluation
+    @requireNotWasm  # no expression evaluation
     def test_template_function_with_cast(self):
         self.do_test_template_function(True)
 
diff --git a/lldb/test/API/lang/cpp/this/TestCPPThis.py b/lldb/test/API/lang/cpp/this/TestCPPThis.py
index 137a771e2e3eb..e94a7cc9dd058 100644
--- a/lldb/test/API/lang/cpp/this/TestCPPThis.py
+++ b/lldb/test/API/lang/cpp/this/TestCPPThis.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class CPPThisTestCase(TestBase):
     # rdar://problem/9962849
     @expectedFailureAll(
diff --git a/lldb/test/API/lang/cpp/this_class_type_mixing/TestThisClassTypeMixing.py b/lldb/test/API/lang/cpp/this_class_type_mixing/TestThisClassTypeMixing.py
index 775fdccd3f6f1..8c9429df4d654 100644
--- a/lldb/test/API/lang/cpp/this_class_type_mixing/TestThisClassTypeMixing.py
+++ b/lldb/test/API/lang/cpp/this_class_type_mixing/TestThisClassTypeMixing.py
@@ -14,7 +14,7 @@ class by injecting a "$__lldb_expr" member function into the class. This
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestCase(TestBase):
     @no_debug_info_test
     def test(self):
diff --git a/lldb/test/API/lang/cpp/thread_local/TestThreadLocal.py b/lldb/test/API/lang/cpp/thread_local/TestThreadLocal.py
index 3e7bca426f5c2..4faec9d5613fd 100644
--- a/lldb/test/API/lang/cpp/thread_local/TestThreadLocal.py
+++ b/lldb/test/API/lang/cpp/thread_local/TestThreadLocal.py
@@ -7,7 +7,7 @@
 from lldbsuite.test import lldbtest
 
 
- at skipIfWasm  # checks the platform-specific TLS-uninitialized error, N/A to wasm
+ at requireNotWasm  # checks the platform-specific TLS-uninitialized error, N/A to wasm
 class PlatformProcessCrashInfoTestCase(TestBase):
     @expectedFailureAll(oslist=["windows", "linux", "freebsd", "netbsd"])
     @skipIfDarwin  # rdar://120795095
diff --git a/lldb/test/API/lang/cpp/trivial_abi/TestTrivialABI.py b/lldb/test/API/lang/cpp/trivial_abi/TestTrivialABI.py
index 021d14d613aec..a7a4b1f7fd12b 100644
--- a/lldb/test/API/lang/cpp/trivial_abi/TestTrivialABI.py
+++ b/lldb/test/API/lang/cpp/trivial_abi/TestTrivialABI.py
@@ -9,7 +9,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # return value is unrecoverable from the operand stack at a step-out
+ at requireNotWasm  # return value is unrecoverable from the operand stack at a step-out
 class TestTrivialABI(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
diff --git a/lldb/test/API/lang/cpp/typedef/TestCppTypedef.py b/lldb/test/API/lang/cpp/typedef/TestCppTypedef.py
index a6dadcbd4d1c1..92753c85469a9 100644
--- a/lldb/test/API/lang/cpp/typedef/TestCppTypedef.py
+++ b/lldb/test/API/lang/cpp/typedef/TestCppTypedef.py
@@ -8,7 +8,7 @@
 from lldbsuite.test.decorators import *
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestCppTypedef(TestBase):
     def test_typedef(self):
         """
diff --git a/lldb/test/API/lang/cpp/unicode-literals/TestUnicodeLiterals.py b/lldb/test/API/lang/cpp/unicode-literals/TestUnicodeLiterals.py
index 345722d90c19f..6b6544809d16d 100644
--- a/lldb/test/API/lang/cpp/unicode-literals/TestUnicodeLiterals.py
+++ b/lldb/test/API/lang/cpp/unicode-literals/TestUnicodeLiterals.py
@@ -23,7 +23,7 @@
 # }
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class UnicodeLiteralsTestCase(TestBase):
     def test_expr1(self):
         """Test that the expression parser returns proper Unicode strings."""
diff --git a/lldb/test/API/lang/cpp/union-static-data-members/TestCppUnionStaticMembers.py b/lldb/test/API/lang/cpp/union-static-data-members/TestCppUnionStaticMembers.py
index 684661f8ee14c..137945f74fcce 100644
--- a/lldb/test/API/lang/cpp/union-static-data-members/TestCppUnionStaticMembers.py
+++ b/lldb/test/API/lang/cpp/union-static-data-members/TestCppUnionStaticMembers.py
@@ -8,7 +8,7 @@
 import lldbsuite.test.lldbutil as lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class CppUnionStaticMembersTestCase(TestBase):
     def test_print_union(self):
         """Tests that frame variable and expr work
diff --git a/lldb/test/API/lang/cpp/unique-types4/TestUniqueTypes4.py b/lldb/test/API/lang/cpp/unique-types4/TestUniqueTypes4.py
index 05f1128c0eafd..f723ab38a1335 100644
--- a/lldb/test/API/lang/cpp/unique-types4/TestUniqueTypes4.py
+++ b/lldb/test/API/lang/cpp/unique-types4/TestUniqueTypes4.py
@@ -8,7 +8,7 @@
 from lldbsuite.test.lldbtest import *
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class UniqueTypesTestCase4(TestBase):
     SHARED_BUILD_TESTCASE = False
 
diff --git a/lldb/test/API/lang/cpp/virtual-functions/TestCppVirtualFunctions.py b/lldb/test/API/lang/cpp/virtual-functions/TestCppVirtualFunctions.py
index f329e3e17cb7e..7f1739f0d3728 100644
--- a/lldb/test/API/lang/cpp/virtual-functions/TestCppVirtualFunctions.py
+++ b/lldb/test/API/lang/cpp/virtual-functions/TestCppVirtualFunctions.py
@@ -4,7 +4,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no expression evaluation
+ at requireNotWasm  # no expression evaluation
 class TestCase(TestBase):
     def common_setup(self):
         self.build()
diff --git a/lldb/test/API/lang/objc/complete-type-check/TestObjCIsTypeComplete.py b/lldb/test/API/lang/objc/complete-type-check/TestObjCIsTypeComplete.py
index f944e60b91bf2..651d000d0a884 100644
--- a/lldb/test/API/lang/objc/complete-type-check/TestObjCIsTypeComplete.py
+++ b/lldb/test/API/lang/objc/complete-type-check/TestObjCIsTypeComplete.py
@@ -7,7 +7,7 @@
 
 
 class TestCase(TestBase):
-    @skipUnlessDarwin
+    @requireDarwin
     @no_debug_info_test
     def test(self):
         self.build()
diff --git a/lldb/test/API/lang/objc/conflicting-class-list-function-from-user/TestObjCClassListFunctionFromUser.py b/lldb/test/API/lang/objc/conflicting-class-list-function-from-user/TestObjCClassListFunctionFromUser.py
index a643a1d7b4cea..badfb89fbfcf1 100644
--- a/lldb/test/API/lang/objc/conflicting-class-list-function-from-user/TestObjCClassListFunctionFromUser.py
+++ b/lldb/test/API/lang/objc/conflicting-class-list-function-from-user/TestObjCClassListFunctionFromUser.py
@@ -5,7 +5,7 @@
 
 
 class TestCase(TestBase):
-    @skipUnlessDarwin
+    @requireDarwin
     # LLDB ends up calling the user-defined function (but at least doesn't
     # crash).
     @skipIf(macos_version=["<", "13.0"])
diff --git a/lldb/test/API/lang/objc/cpp_keyword_identifiers/TestCppKeywordsAsObjCIdentifiers.py b/lldb/test/API/lang/objc/cpp_keyword_identifiers/TestCppKeywordsAsObjCIdentifiers.py
index 3110fd99a18eb..c74bee18f9f76 100644
--- a/lldb/test/API/lang/objc/cpp_keyword_identifiers/TestCppKeywordsAsObjCIdentifiers.py
+++ b/lldb/test/API/lang/objc/cpp_keyword_identifiers/TestCppKeywordsAsObjCIdentifiers.py
@@ -5,7 +5,7 @@
 
 
 class TestCase(TestBase):
-    @skipUnlessDarwin
+    @requireDarwin
     @no_debug_info_test
     def test(self):
         self.build()
diff --git a/lldb/test/API/lang/objc/languageinfo/TestObjCLanguageSpecificData.py b/lldb/test/API/lang/objc/languageinfo/TestObjCLanguageSpecificData.py
index 5558abed929da..11938db2f7a56 100644
--- a/lldb/test/API/lang/objc/languageinfo/TestObjCLanguageSpecificData.py
+++ b/lldb/test/API/lang/objc/languageinfo/TestObjCLanguageSpecificData.py
@@ -5,7 +5,7 @@
 
 
 class ObjCiVarIMPTestCase(TestBase):
-    @skipUnlessDarwin
+    @requireDarwin
     @no_debug_info_test
     def test_imp_ivar_type(self):
         self.build()
diff --git a/lldb/test/API/lang/objc/module-import-log/TestClangModuleImportLog.py b/lldb/test/API/lang/objc/module-import-log/TestClangModuleImportLog.py
index d758f67325296..09bc8c91f32bc 100644
--- a/lldb/test/API/lang/objc/module-import-log/TestClangModuleImportLog.py
+++ b/lldb/test/API/lang/objc/module-import-log/TestClangModuleImportLog.py
@@ -5,7 +5,7 @@
 
 
 class TestCase(TestBase):
-    @skipUnlessDarwin
+    @requireDarwin
     def test(self):
         self.build()
 
diff --git a/lldb/test/API/lang/objc/objc-class-method/TestObjCClassMethod.py b/lldb/test/API/lang/objc/objc-class-method/TestObjCClassMethod.py
index ebbf35ab9ba3e..09ee5b58db0ab 100644
--- a/lldb/test/API/lang/objc/objc-class-method/TestObjCClassMethod.py
+++ b/lldb/test/API/lang/objc/objc-class-method/TestObjCClassMethod.py
@@ -15,7 +15,7 @@ def setUp(self):
 
     NO_DEBUG_INFO_TESTCASE = True
 
-    @skipUnlessDarwin
+    @requireDarwin
     @add_test_categories(["pyapi"])
     def test_without_class_stubs(self):
         self.do_test_with_python_api()
diff --git a/lldb/test/API/lang/objc/objc-optimized/TestObjcOptimized.py b/lldb/test/API/lang/objc/objc-optimized/TestObjcOptimized.py
index ebff8896acf20..2c069b5c9dad8 100644
--- a/lldb/test/API/lang/objc/objc-optimized/TestObjcOptimized.py
+++ b/lldb/test/API/lang/objc/objc-optimized/TestObjcOptimized.py
@@ -17,7 +17,7 @@
 # test failure: objc_optimized does not work for "-C clang -A i386"
 
 
- at skipUnlessDarwin
+ at requireDarwin
 class ObjcOptimizedTestCase(TestBase):
     myclass = "MyClass"
     mymethod = "description"
diff --git a/lldb/test/API/lang/objc/orderedset/TestOrderedSet.py b/lldb/test/API/lang/objc/orderedset/TestOrderedSet.py
index fb5b02a6f9013..65e86f8c8d96a 100644
--- a/lldb/test/API/lang/objc/orderedset/TestOrderedSet.py
+++ b/lldb/test/API/lang/objc/orderedset/TestOrderedSet.py
@@ -11,7 +11,7 @@ def test_ordered_set(self):
         self.build()
         self.run_tests()
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_ordered_set_no_const(self):
         disable_constant_classes = {
             "CFLAGS_EXTRAS": "-fno-constant-nsnumber-literals "
diff --git a/lldb/test/API/lang/objc/single-entry-dictionary/TestObjCSingleEntryDictionary.py b/lldb/test/API/lang/objc/single-entry-dictionary/TestObjCSingleEntryDictionary.py
index 748d727ef62dc..8e8166791ab82 100644
--- a/lldb/test/API/lang/objc/single-entry-dictionary/TestObjCSingleEntryDictionary.py
+++ b/lldb/test/API/lang/objc/single-entry-dictionary/TestObjCSingleEntryDictionary.py
@@ -16,7 +16,7 @@ def setUp(self):
         # Find the line number to break inside main().
         self.line = line_number("main.m", "// break here")
 
-    @skipUnlessDarwin
+    @requireDarwin
     @expectedFailureAll(
         oslist=["watchos"], bugnumber="rdar://problem/34642736"
     )  # bug in NSDictionary formatting on watchos
@@ -24,7 +24,7 @@ def test_single_entry_dict(self):
         self.build()
         self.run_tests()
 
-    @skipUnlessDarwin
+    @requireDarwin
     @expectedFailureAll(
         oslist=["watchos"], bugnumber="rdar://problem/34642736"
     )  # bug in NSDictionary formatting on watchos
diff --git a/lldb/test/API/lang/objc/tagged-pointer-children/TestTaggedPointerChildren.py b/lldb/test/API/lang/objc/tagged-pointer-children/TestTaggedPointerChildren.py
index b7b72139cf2ae..ddcdcc6635827 100644
--- a/lldb/test/API/lang/objc/tagged-pointer-children/TestTaggedPointerChildren.py
+++ b/lldb/test/API/lang/objc/tagged-pointer-children/TestTaggedPointerChildren.py
@@ -26,7 +26,7 @@ def assert_no_unreadable_children(self, valobj):
             )
             self.assert_no_unreadable_children(child)
 
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIf(archs=["i386", "i686"])
     def test(self):
         """
@@ -67,7 +67,7 @@ def test(self):
         self.assertGreater(heap.GetNumChildren(), 0, "real object still has children")
         self.assert_no_unreadable_children(heap)
 
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIf(archs=["i386", "i686"])
     def test_registered_synthetic_takes_precedence(self):
         """
diff --git a/lldb/test/API/lang/objc/warnings-in-expr-parser/TestObjCWarningsInExprParser.py b/lldb/test/API/lang/objc/warnings-in-expr-parser/TestObjCWarningsInExprParser.py
index 5a8ed7327dbdd..bcb6951d1d915 100644
--- a/lldb/test/API/lang/objc/warnings-in-expr-parser/TestObjCWarningsInExprParser.py
+++ b/lldb/test/API/lang/objc/warnings-in-expr-parser/TestObjCWarningsInExprParser.py
@@ -9,7 +9,7 @@
 
 
 class TestCase(TestBase):
-    @skipUnlessDarwin
+    @requireDarwin
     @no_debug_info_test
     def test(self):
         self.build()
diff --git a/lldb/test/API/lang/objcxx/cpp_keywords_enabled/TestObjCppKeywordsEnabled.py b/lldb/test/API/lang/objcxx/cpp_keywords_enabled/TestObjCppKeywordsEnabled.py
index 68639789bc358..a3c6bda33f132 100644
--- a/lldb/test/API/lang/objcxx/cpp_keywords_enabled/TestObjCppKeywordsEnabled.py
+++ b/lldb/test/API/lang/objcxx/cpp_keywords_enabled/TestObjCppKeywordsEnabled.py
@@ -5,7 +5,7 @@
 
 
 class TestCase(TestBase):
-    @skipUnlessDarwin
+    @requireDarwin
     @no_debug_info_test
     def test_keyword(self):
         # Make sure that C++ keywords work in the expression parser when using
diff --git a/lldb/test/API/python_api/class_members/TestSBTypeClassMembers.py b/lldb/test/API/python_api/class_members/TestSBTypeClassMembers.py
index 433c4377f4c1e..17c2dedbf7df1 100644
--- a/lldb/test/API/python_api/class_members/TestSBTypeClassMembers.py
+++ b/lldb/test/API/python_api/class_members/TestSBTypeClassMembers.py
@@ -21,7 +21,7 @@ def setUp(self):
         self.source = "main.mm"
         self.line = line_number(self.source, "// set breakpoint here")
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test(self):
         """Test SBType APIs to fetch member function types."""
         d = {"EXE": self.exe_name}
diff --git a/lldb/test/API/python_api/exprpath_register/TestExprPathRegisters.py b/lldb/test/API/python_api/exprpath_register/TestExprPathRegisters.py
index e511029a2d470..8cb6851516b3f 100644
--- a/lldb/test/API/python_api/exprpath_register/TestExprPathRegisters.py
+++ b/lldb/test/API/python_api/exprpath_register/TestExprPathRegisters.py
@@ -50,7 +50,7 @@ def test_float_registers(self):
             if reg_value:
                 self.verify_register_path(reg_value)
 
-    @skipIfWasm  # wasm exposes no registers
+    @requireNotWasm  # wasm exposes no registers
     def test_all_registers(self):
         """Test all the registers that is avaiable on the machine"""
         self.build()
diff --git a/lldb/test/API/python_api/exprpath_synthetic/TestExprPathSynthetic.py b/lldb/test/API/python_api/exprpath_synthetic/TestExprPathSynthetic.py
index 7c769ac70ad6d..376617786b25e 100644
--- a/lldb/test/API/python_api/exprpath_synthetic/TestExprPathSynthetic.py
+++ b/lldb/test/API/python_api/exprpath_synthetic/TestExprPathSynthetic.py
@@ -1,4 +1,4 @@
 from lldbsuite.test import decorators
 from lldbsuite.test import lldbinline
 
-lldbinline.MakeInlineTest(__file__, globals(), [decorators.skipUnlessDarwin])
+lldbinline.MakeInlineTest(__file__, globals(), [decorators.requireDarwin])
diff --git a/lldb/test/API/python_api/global_module_cache/TestGlobalModuleCache.py b/lldb/test/API/python_api/global_module_cache/TestGlobalModuleCache.py
index b201d7b71b7eb..a39d6fe191315 100644
--- a/lldb/test/API/python_api/global_module_cache/TestGlobalModuleCache.py
+++ b/lldb/test/API/python_api/global_module_cache/TestGlobalModuleCache.py
@@ -12,7 +12,7 @@
 import time
 
 
- at skipIfWasm  # modules carry no build ID to cache on
+ at requireNotWasm  # modules carry no build ID to cache on
 class GlobalModuleCacheTestCase(TestBase):
     SHARED_BUILD_TESTCASE = False
     # NO_DEBUG_INFO_TESTCASE = True
diff --git a/lldb/test/API/python_api/hello_world/TestHelloWorld.py b/lldb/test/API/python_api/hello_world/TestHelloWorld.py
index 33b75032560c9..888f0d8a04b45 100644
--- a/lldb/test/API/python_api/hello_world/TestHelloWorld.py
+++ b/lldb/test/API/python_api/hello_world/TestHelloWorld.py
@@ -72,7 +72,7 @@ def test_with_process_launch_api(self):
 
     @expectedFailureAll(oslist=["windows"], archs=["aarch64"])
     @skipIfiOSSimulator
-    @skipIfWasm  # attaching requires launching the inferior as a host process
+    @requireNotWasm  # attaching requires launching the inferior as a host process
     def test_with_attach_to_process_with_id_api(self):
         """Create target, spawn a process, and attach to it with process id."""
         exe = "%s_%d" % (self.testMethodName, os.getpid())
@@ -105,7 +105,7 @@ def test_with_attach_to_process_with_id_api(self):
     @expectedFailureAll(oslist=["windows"], archs=["aarch64"])
     @skipIfiOSSimulator
     @skipIfAsan  # FIXME: Hangs indefinitely.
-    @skipIfWasm  # attaching requires launching the inferior as a host process
+    @requireNotWasm  # attaching requires launching the inferior as a host process
     def test_with_attach_to_process_with_name_api(self):
         """Create target, spawn a process, and attach to it with process name."""
         exe = "%s_%d" % (self.testMethodName, os.getpid())
diff --git a/lldb/test/API/python_api/process/address-masks/TestAddressMasks.py b/lldb/test/API/python_api/process/address-masks/TestAddressMasks.py
index 1ad81c4e3630d..866972de5520d 100644
--- a/lldb/test/API/python_api/process/address-masks/TestAddressMasks.py
+++ b/lldb/test/API/python_api/process/address-masks/TestAddressMasks.py
@@ -7,7 +7,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no ABI plugin, so address masks are never applied
+ at requireNotWasm  # no ABI plugin, so address masks are never applied
 class AddressMasksTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
diff --git a/lldb/test/API/python_api/process/read-mem-cstring/TestReadMemCString.py b/lldb/test/API/python_api/process/read-mem-cstring/TestReadMemCString.py
index 8c441678a96e8..0373c225a60e8 100644
--- a/lldb/test/API/python_api/process/read-mem-cstring/TestReadMemCString.py
+++ b/lldb/test/API/python_api/process/read-mem-cstring/TestReadMemCString.py
@@ -11,7 +11,7 @@
 class TestReadMemCString(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
-    @skipIfWasm  # linear memory has no unmapped pages, so a bad in-range pointer still reads
+    @requireNotWasm  # linear memory has no unmapped pages, so a bad in-range pointer still reads
     def test_read_memory_c_string(self):
         """Test corner case behavior of SBProcess::ReadCStringFromMemory"""
         self.build()
diff --git a/lldb/test/API/python_api/sbenvironment/TestSBEnvironment.py b/lldb/test/API/python_api/sbenvironment/TestSBEnvironment.py
index 7799693873bd5..f78b7a681bd68 100644
--- a/lldb/test/API/python_api/sbenvironment/TestSBEnvironment.py
+++ b/lldb/test/API/python_api/sbenvironment/TestSBEnvironment.py
@@ -8,7 +8,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no remote environment support
+ at requireNotWasm  # no remote environment support
 class SBEnvironmentAPICase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
diff --git a/lldb/test/API/python_api/sbmodule/SeperateDebugInfo/TestSBModuleSeparateDebugInfo.py b/lldb/test/API/python_api/sbmodule/SeperateDebugInfo/TestSBModuleSeparateDebugInfo.py
index 5b9f9727af9f0..88e5501e24e75 100644
--- a/lldb/test/API/python_api/sbmodule/SeperateDebugInfo/TestSBModuleSeparateDebugInfo.py
+++ b/lldb/test/API/python_api/sbmodule/SeperateDebugInfo/TestSBModuleSeparateDebugInfo.py
@@ -53,7 +53,7 @@ def test_get_separate_debug_info_files_dwp(self):
         self.assertTrue(module_specs[0].GetFileSpec().Exists())
 
     @no_debug_info_test
-    @skipUnlessPlatform(["darwin"])
+    @requirePlatform(["darwin"])
     def test_darwin_oso(self):
         """DWARF in .o files (no dSYM) -- returns .o file paths."""
         self.build(debug_info="dwarf")
diff --git a/lldb/test/API/python_api/sbplatform/TestSBPlatform.py b/lldb/test/API/python_api/sbplatform/TestSBPlatform.py
index 4bb73acb730b2..2a78f0106e18c 100644
--- a/lldb/test/API/python_api/sbplatform/TestSBPlatform.py
+++ b/lldb/test/API/python_api/sbplatform/TestSBPlatform.py
@@ -10,7 +10,7 @@
 from lldbsuite.test import lldbutil
 
 
- at skipIfWasm  # no remote platform file/process APIs
+ at requireNotWasm  # no remote platform file/process APIs
 class SBPlatformAPICase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
diff --git a/lldb/test/API/python_api/signals/TestSignalsAPI.py b/lldb/test/API/python_api/signals/TestSignalsAPI.py
index 4b6c7e4214455..2cc5842a0c98a 100644
--- a/lldb/test/API/python_api/signals/TestSignalsAPI.py
+++ b/lldb/test/API/python_api/signals/TestSignalsAPI.py
@@ -10,7 +10,7 @@
 from lldbsuite.test.lldbutil import get_stopped_thread, state_type_to_str
 
 
- at skipIfNoSignals
+ at requireSignals
 class SignalsAPITestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
diff --git a/lldb/test/API/python_api/target-arch-from-module/TestTargetArchFromModule.py b/lldb/test/API/python_api/target-arch-from-module/TestTargetArchFromModule.py
index ba9ab286f82e6..5b11f30fcbd1b 100644
--- a/lldb/test/API/python_api/target-arch-from-module/TestTargetArchFromModule.py
+++ b/lldb/test/API/python_api/target-arch-from-module/TestTargetArchFromModule.py
@@ -18,7 +18,7 @@ class TargetArchFromModule(TestBase):
         debug_info=no_match(["dsym"]),
         bugnumber="This test is looking explicitly for a dSYM",
     )
-    @skipUnlessDarwin
+    @requireDarwin
     @skipIfRemote
     def test_target_arch_init(self):
         self.build()
diff --git a/lldb/test/API/python_api/unified_section_list/TestModuleUnifiedSectionList.py b/lldb/test/API/python_api/unified_section_list/TestModuleUnifiedSectionList.py
index a559307e59930..7600a388711dd 100644
--- a/lldb/test/API/python_api/unified_section_list/TestModuleUnifiedSectionList.py
+++ b/lldb/test/API/python_api/unified_section_list/TestModuleUnifiedSectionList.py
@@ -15,7 +15,7 @@
 class ModuleUnifiedSectionList(TestBase):
     SHARED_BUILD_TESTCASE = False
 
-    @skipUnlessPlatform(["linux", "freebsd", "netbsd"])
+    @requirePlatform(["linux", "freebsd", "netbsd"])
     def test_unified_section_list(self):
         self.build()
         exe = self.getBuildArtifact("a.out")
diff --git a/lldb/test/API/qemu/TestQemuLaunch.py b/lldb/test/API/qemu/TestQemuLaunch.py
index 5d9432f5aff5d..ecdb16afc2c12 100644
--- a/lldb/test/API/qemu/TestQemuLaunch.py
+++ b/lldb/test/API/qemu/TestQemuLaunch.py
@@ -14,7 +14,7 @@
 @skipIfRemote
 @skipIfWindows
 @skipIf(archs=["arm64e"])
- at skipIfWasm  # no qemu-wasm32
+ at requireNotWasm  # no qemu-wasm32
 class TestQemuLaunch(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
 
diff --git a/lldb/test/API/tools/lldb-dap/attach/TestDAP_attach.py b/lldb/test/API/tools/lldb-dap/attach/TestDAP_attach.py
index 96c5b193df39f..f2a7e4819e644 100644
--- a/lldb/test/API/tools/lldb-dap/attach/TestDAP_attach.py
+++ b/lldb/test/API/tools/lldb-dap/attach/TestDAP_attach.py
@@ -10,8 +10,8 @@
 from lldbsuite.test.decorators import (
     expectedFailureWindows,
     expectedFailureWindowsAndNoLLDBServer,
+    requireNotWasm,
     skipIf,
-    skipIfWasm,
     skipIfWindowsAndLLDBServer,
 )
 from lldbsuite.test.tools.lldb_dap import DAPTestCaseBase
@@ -25,7 +25,7 @@
 # Often fails on Arm Linux, but not specifically because it's Arm, something in
 # process scheduling can cause a massive (minutes) delay during this test.
 @skipIf(oslist=["linux"], archs=["arm$"])
- at skipIfWasm  # No attach support
+ at requireNotWasm  # No attach support
 class TestDAP_attach(DAPTestCaseBase):
     SHARED_BUILD_TESTCASE = False
 
diff --git a/lldb/test/API/tools/lldb-dap/console/TestDAP_console.py b/lldb/test/API/tools/lldb-dap/console/TestDAP_console.py
index ceddaeb50cd3b..130a91753ddc3 100644
--- a/lldb/test/API/tools/lldb-dap/console/TestDAP_console.py
+++ b/lldb/test/API/tools/lldb-dap/console/TestDAP_console.py
@@ -111,7 +111,7 @@ def test_empty_escape_prefix(self):
             command_escape_prefix="",
         )
 
-    @skipIfWindows
+    @requireNotWindows
     def test_exit_status_message_sigterm(self):
         source = "main.cpp"
         program = self.getBuildArtifact("a.out")
diff --git a/lldb/test/API/tools/lldb-dap/databreakpoint/TestDAP_setDataBreakpoints.py b/lldb/test/API/tools/lldb-dap/databreakpoint/TestDAP_setDataBreakpoints.py
index b26618df7800c..b2b643222146c 100644
--- a/lldb/test/API/tools/lldb-dap/databreakpoint/TestDAP_setDataBreakpoints.py
+++ b/lldb/test/API/tools/lldb-dap/databreakpoint/TestDAP_setDataBreakpoints.py
@@ -7,7 +7,7 @@
 import lldbdap_testcase
 
 
- at skipIfWasm  # data breakpoints map to watchpoints
+ at requireNotWasm  # data breakpoints map to watchpoints
 class TestDAP_setDataBreakpoints(lldbdap_testcase.DAPTestCaseBase):
     def setUp(self):
         lldbdap_testcase.DAPTestCaseBase.setUp(self)
diff --git a/lldb/test/API/tools/lldb-dap/disconnect/TestDAP_disconnect.py b/lldb/test/API/tools/lldb-dap/disconnect/TestDAP_disconnect.py
index 972c0fa46df06..537d4e399b06c 100644
--- a/lldb/test/API/tools/lldb-dap/disconnect/TestDAP_disconnect.py
+++ b/lldb/test/API/tools/lldb-dap/disconnect/TestDAP_disconnect.py
@@ -11,7 +11,7 @@
 import os
 
 
- at skipIfWasm  # no attach support
+ at requireNotWasm  # no attach support
 class TestDAP_disconnect(lldbdap_testcase.DAPTestCaseBase):
     SHARED_BUILD_TESTCASE = False
 
diff --git a/lldb/test/API/tools/lldb-dap/exception/TestDAP_exception.py b/lldb/test/API/tools/lldb-dap/exception/TestDAP_exception.py
index 23e8763cf8d81..9170118e2f309 100644
--- a/lldb/test/API/tools/lldb-dap/exception/TestDAP_exception.py
+++ b/lldb/test/API/tools/lldb-dap/exception/TestDAP_exception.py
@@ -3,11 +3,11 @@
 """
 
 from lldbsuite.test.tools.lldb_dap import DAPTestCaseBase
-from lldbsuite.test.decorators import skipIfNoSignals
+from lldbsuite.test.decorators import requireSignals
 from lldbsuite.test.tools.lldb_dap.types import LaunchArgs
 
 
- at skipIfNoSignals
+ at requireSignals
 class TestDAP_exception(DAPTestCaseBase):
     def test_stopped_description(self):
         """
diff --git a/lldb/test/API/tools/lldb-dap/exception/objc/TestDAP_exception_objc.py b/lldb/test/API/tools/lldb-dap/exception/objc/TestDAP_exception_objc.py
index 5d56744dc77fe..5fd50882b0978 100644
--- a/lldb/test/API/tools/lldb-dap/exception/objc/TestDAP_exception_objc.py
+++ b/lldb/test/API/tools/lldb-dap/exception/objc/TestDAP_exception_objc.py
@@ -2,13 +2,13 @@
 Test exception behavior in DAP with obj-c throw.
 """
 
-from lldbsuite.test.decorators import skipUnlessDarwin
+from lldbsuite.test.decorators import requireDarwin
 from lldbsuite.test.tools.lldb_dap.types import ExceptionFilterOptions, LaunchArgs
 from lldbsuite.test.tools.lldb_dap import DAPTestCaseBase
 
 
 class TestDAP_exception_objc(DAPTestCaseBase):
-    @skipUnlessDarwin
+    @requireDarwin
     def test_stopped_description(self):
         """
         Test that exception description is shown correctly in stopped event.
@@ -34,7 +34,7 @@ def test_stopped_description(self):
         stack_trace = self.expect_not_none(exception_details.stackTrace)
         self.assertRegex(stack_trace, "main.m")
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_break_on_throw_and_catch(self):
         """
         Test that breakpoints on exceptions work as expected.
diff --git a/lldb/test/API/tools/lldb-dap/extendedStackTrace/TestDAP_extendedStackTrace.py b/lldb/test/API/tools/lldb-dap/extendedStackTrace/TestDAP_extendedStackTrace.py
index 33a3bde3a5a42..ea065bc79df53 100644
--- a/lldb/test/API/tools/lldb-dap/extendedStackTrace/TestDAP_extendedStackTrace.py
+++ b/lldb/test/API/tools/lldb-dap/extendedStackTrace/TestDAP_extendedStackTrace.py
@@ -42,7 +42,7 @@ def build_and_run(self, displayExtendedBacktrace=True):
             len(breakpoint_ids), len(lines), "expect correct number of breakpoints"
         )
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_stackTrace(self):
         """
         Tests the 'stackTrace' packet on a thread with an extended backtrace.
@@ -104,7 +104,7 @@ def test_stackTrace(self):
                 totalFrames, i, "total frames should include a pagination offset"
             )
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_stackTraceWithFormat(self):
         """
         Tests the 'stackTrace' packet on a thread with an extended backtrace using stack trace formats.
diff --git a/lldb/test/API/tools/lldb-dap/launch/TestDAP_launch_win_debug_heap.py b/lldb/test/API/tools/lldb-dap/launch/TestDAP_launch_win_debug_heap.py
index 5bd2dc10f6590..e6298b66b57aa 100644
--- a/lldb/test/API/tools/lldb-dap/launch/TestDAP_launch_win_debug_heap.py
+++ b/lldb/test/API/tools/lldb-dap/launch/TestDAP_launch_win_debug_heap.py
@@ -2,14 +2,14 @@
 Test lldb-dap launch request.
 """
 
-from lldbsuite.test.decorators import skipUnlessWindows, skipIfBuildType
+from lldbsuite.test.decorators import requireWindows, skipIfBuildType
 from lldbsuite.test.tools.lldb_dap.types import LaunchArgs, Console
 from lldbsuite.test.tools.lldb_dap import DAPTestCaseBase
 from typing import List
 
 
 @skipIfBuildType(["debug"])
- at skipUnlessWindows
+ at requireWindows
 class TestDAP_launch_win_debug_heap(DAPTestCaseBase):
     """
     Test that lldb-dap respects the debug heap setting on Windows when launching in an integrated terminal.
diff --git a/lldb/test/API/tools/lldb-dap/longpath/TestDAP_launch_longPath.py b/lldb/test/API/tools/lldb-dap/longpath/TestDAP_launch_longPath.py
index d7c86b5a9a286..e2080c50e9d7a 100644
--- a/lldb/test/API/tools/lldb-dap/longpath/TestDAP_launch_longPath.py
+++ b/lldb/test/API/tools/lldb-dap/longpath/TestDAP_launch_longPath.py
@@ -13,7 +13,7 @@
 MAX_PATH = 260
 
 
- at skipUnlessWindows
+ at requireWindows
 class TestDAP_launch_longPath(lldbdap_testcase.DAPTestCaseBase):
     def _long_path(self, path):
         return lldbutil.get_extended_windows_path(path)
diff --git a/lldb/test/API/tools/lldb-dap/module/TestDAP_module.py b/lldb/test/API/tools/lldb-dap/module/TestDAP_module.py
index 8e2a7bf001b93..167ed9f494547 100644
--- a/lldb/test/API/tools/lldb-dap/module/TestDAP_module.py
+++ b/lldb/test/API/tools/lldb-dap/module/TestDAP_module.py
@@ -5,7 +5,7 @@
 import platform
 import re
 
-from lldbsuite.test.decorators import skipIfWindows, skipUnlessDarwin
+from lldbsuite.test.decorators import requireDarwin, skipIfWindows
 from lldbsuite.test.lldbtest import line_number
 from lldbsuite.test.tools.lldb_dap.types import (
     CompileUnitsArgs,
@@ -107,7 +107,7 @@ def test_modules(self):
             "a.out", expect_debug_info_size=platform.system() != "Darwin"
         )
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_modules_dsym(self):
         """
         Darwin only test with dSYM file.
diff --git a/lldb/test/API/tools/lldb-dap/server/TestDAP_server.py b/lldb/test/API/tools/lldb-dap/server/TestDAP_server.py
index 1cbda50e07dd5..e3c73b75d83ac 100644
--- a/lldb/test/API/tools/lldb-dap/server/TestDAP_server.py
+++ b/lldb/test/API/tools/lldb-dap/server/TestDAP_server.py
@@ -74,7 +74,7 @@ def test_server_port(self):
         self.run_debug_session(connection, "Alice")
         self.run_debug_session(connection, "Bob")
 
-    @skipIfWindows
+    @requirePOSIX
     def test_server_unix_socket(self):
         """
         Test launching a binary with a lldb-dap in server mode on a unix socket.
diff --git a/lldb/test/API/tools/lldb-dap/variables/TestDAP_variables.py b/lldb/test/API/tools/lldb-dap/variables/TestDAP_variables.py
index 1615939b02364..294b1d1560345 100644
--- a/lldb/test/API/tools/lldb-dap/variables/TestDAP_variables.py
+++ b/lldb/test/API/tools/lldb-dap/variables/TestDAP_variables.py
@@ -8,9 +8,9 @@
 from lldbsuite.test import lldbplatformutil
 from lldbsuite.test.decorators import (
     no_debug_info_test,
+    requireDarwin,
     skipIfAsan,
     skipIfWindows,
-    skipUnlessDarwin,
 )
 from lldbsuite.test.lldbtest import line_number
 from lldbsuite.test.tools.lldb_dap.types import (
@@ -724,7 +724,7 @@ def test_registers(self):
         self.assertIn("at main.cpp:", pc_reg.value)
 
     @no_debug_info_test
-    @skipUnlessDarwin
+    @requireDarwin
     def test_darwin_dwarf_missing_obj(self):
         """
         Test that if we build a binary with DWARF in .o files and we remove
@@ -738,7 +738,7 @@ def test_darwin_dwarf_missing_obj(self):
         self.darwin_dwarf_missing_obj(None)
 
     @no_debug_info_test
-    @skipUnlessDarwin
+    @requireDarwin
     def test_darwin_dwarf_missing_obj_with_symbol_ondemand_enabled(self):
         """
         Test that if we build a binary with DWARF in .o files and we remove
diff --git a/lldb/test/API/tools/lldb-server/TestGdbRemoteAuxvSupport.py b/lldb/test/API/tools/lldb-server/TestGdbRemoteAuxvSupport.py
index 25ad600c292d1..43eac3ed2fb93 100644
--- a/lldb/test/API/tools/lldb-server/TestGdbRemoteAuxvSupport.py
+++ b/lldb/test/API/tools/lldb-server/TestGdbRemoteAuxvSupport.py
@@ -69,14 +69,14 @@ def get_raw_auxv_data(self):
         self.assertIsNotNone(content_raw)
         return (word_size, self.decode_gdbremote_binary(content_raw))
 
-    @skipIfWindows  # no auxv support.
-    @skipIfDarwin
+    @requireNotWindows  # no auxv support.
+    @requireNotDarwin
     def test_supports_auxv(self):
         self.build()
         self.set_inferior_startup_launch()
         self.assertTrue(self.has_auxv_support())
 
-    @skipIfWindows
+    @requireNotWindows
     @expectedFailureNetBSD
     def test_auxv_data_is_correct_size(self):
         self.build()
@@ -90,7 +90,7 @@ def test_auxv_data_is_correct_size(self):
         self.assertEqual(len(auxv_data) % (2 * word_size), 0)
         self.trace("auxv contains {} entries".format(len(auxv_data) / (2 * word_size)))
 
-    @skipIfWindows
+    @requireNotWindows
     @expectedFailureNetBSD
     def test_auxv_keys_look_valid(self):
         self.build()
@@ -120,7 +120,7 @@ def test_auxv_keys_look_valid(self):
             self.assertGreaterEqual(auxv_key, 1)
             self.assertLessEqual(auxv_key, 2500)
 
-    @skipIfWindows
+    @requireNotWindows
     @expectedFailureNetBSD
     def test_auxv_chunked_reads_work(self):
         self.build()
diff --git a/lldb/test/API/tools/lldb-server/TestGdbRemoteHostInfo.py b/lldb/test/API/tools/lldb-server/TestGdbRemoteHostInfo.py
index 0d96fd9b7bfdb..b136b0c736ccf 100644
--- a/lldb/test/API/tools/lldb-server/TestGdbRemoteHostInfo.py
+++ b/lldb/test/API/tools/lldb-server/TestGdbRemoteHostInfo.py
@@ -116,7 +116,7 @@ def test_qHostInfo_returns_at_least_one_key_val_pair(self):
         self.build()
         self.get_qHostInfo_response()
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_qHostInfo_contains_darwin_required_keys(self):
         self.build()
         host_info_dict = self.get_qHostInfo_response()
diff --git a/lldb/test/API/tools/lldb-server/TestLldbGdbServer.py b/lldb/test/API/tools/lldb-server/TestLldbGdbServer.py
index cff210cd16704..3fe21cd9d53a9 100644
--- a/lldb/test/API/tools/lldb-server/TestLldbGdbServer.py
+++ b/lldb/test/API/tools/lldb-server/TestLldbGdbServer.py
@@ -479,7 +479,7 @@ def Hc_then_Csignal_signals_correct_thread(self, segfault_signo):
             self.assertEqual(post_handle_thread_id, print_thread_id)
 
     @expectedFailureDarwin
-    @skipIfWindows  # no SIGSEGV support
+    @requireNotWindows  # no SIGSEGV support
     @expectedFailureNetBSD
     def test_Hc_then_Csignal_signals_correct_thread_launch(self):
         self.build()
diff --git a/lldb/test/API/tools/lldb-server/TestNonStop.py b/lldb/test/API/tools/lldb-server/TestNonStop.py
index 841de50818797..71314195ac7f6 100644
--- a/lldb/test/API/tools/lldb-server/TestNonStop.py
+++ b/lldb/test/API/tools/lldb-server/TestNonStop.py
@@ -5,7 +5,7 @@
 
 
 class LldbGdbServerTestCase(gdbremote_testcase.GdbRemoteTestCaseBase):
-    @skipIfWindows  # no SIGSEGV support
+    @requireNotWindows  # no SIGSEGV support
     @add_test_categories(["llgs"])
     def test_run(self):
         self.build()
diff --git a/lldb/test/API/tools/lldb-server/commandline/TestStubSetSID.py b/lldb/test/API/tools/lldb-server/commandline/TestStubSetSID.py
index 8df49c521937c..97d879e1da81d 100644
--- a/lldb/test/API/tools/lldb-server/commandline/TestStubSetSID.py
+++ b/lldb/test/API/tools/lldb-server/commandline/TestStubSetSID.py
@@ -26,7 +26,7 @@ def prepare_test(self):
         self.start_new_session = False
         self.set_inferior_startup_launch()
 
-    @skipIfWindows
+    @requirePOSIX
     @skipIfRemote  # --setsid not used on remote platform and currently it is also impossible to get the sid of lldb-platform running on a remote target
     def test_sid_is_same_without_setsid(self):
         self.prepare_test()
@@ -34,7 +34,7 @@ def test_sid_is_same_without_setsid(self):
         stub_sid = self.get_stub_sid()
         self.assertEqual(stub_sid, os.getsid(0))
 
-    @skipIfWindows
+    @requirePOSIX
     @skipIfRemote  # --setsid not used on remote platform and currently it is also impossible to get the sid of lldb-platform running on a remote target
     def test_sid_is_different_with_setsid(self):
         self.prepare_test()
@@ -42,7 +42,7 @@ def test_sid_is_different_with_setsid(self):
         stub_sid = self.get_stub_sid(["--setsid"])
         self.assertNotEqual(stub_sid, os.getsid(0))
 
-    @skipIfWindows
+    @requirePOSIX
     @skipIfRemote  # --setsid not used on remote platform and currently it is also impossible to get the sid of lldb-platform running on a remote target
     def test_sid_is_different_with_S_llgs(self):
         self.prepare_test()
diff --git a/lldb/test/API/tools/lldb-server/inferior-crash/TestGdbRemoteAbort.py b/lldb/test/API/tools/lldb-server/inferior-crash/TestGdbRemoteAbort.py
index a9aa103f64ee8..9997365f6d738 100644
--- a/lldb/test/API/tools/lldb-server/inferior-crash/TestGdbRemoteAbort.py
+++ b/lldb/test/API/tools/lldb-server/inferior-crash/TestGdbRemoteAbort.py
@@ -5,7 +5,7 @@
 
 
 class TestGdbRemoteAbort(gdbremote_testcase.GdbRemoteTestCaseBase):
-    @skipIfWindows  # No signal is sent on Windows.
+    @requireNotWindows  # No signal is sent on Windows.
     # std::abort() on <= API 16 raises SIGSEGV - b.android.com/179836
     @expectedFailureAndroid(api_levels=list(range(16 + 1)))
     def test_inferior_abort_received_llgs(self):
diff --git a/lldb/test/API/tools/lldb-server/inferior-crash/TestGdbRemoteSegFault.py b/lldb/test/API/tools/lldb-server/inferior-crash/TestGdbRemoteSegFault.py
index b19f20c1b79bb..be157c6f81e53 100644
--- a/lldb/test/API/tools/lldb-server/inferior-crash/TestGdbRemoteSegFault.py
+++ b/lldb/test/API/tools/lldb-server/inferior-crash/TestGdbRemoteSegFault.py
@@ -30,7 +30,7 @@ def inferior_seg_fault_received(self, expected_signo):
         self.assertIsNotNone(hex_exit_code)
         self.assertEqual(int(hex_exit_code, 16), expected_signo)
 
-    @skipIfWindows  # No signal is sent on Windows.
+    @requireNotWindows  # No signal is sent on Windows.
     def test_inferior_seg_fault_received(self):
         self.build()
         if self.platformIsDarwin():
diff --git a/lldb/test/API/tools/lldb-server/signal-filtering/TestGdbRemote_QPassSignals.py b/lldb/test/API/tools/lldb-server/signal-filtering/TestGdbRemote_QPassSignals.py
index f3f8d2b64279c..f1016a035cf43 100644
--- a/lldb/test/API/tools/lldb-server/signal-filtering/TestGdbRemote_QPassSignals.py
+++ b/lldb/test/API/tools/lldb-server/signal-filtering/TestGdbRemote_QPassSignals.py
@@ -87,7 +87,7 @@ def test_change_signals_at_runtime(self):
                 self.ignore_signals(signals_to_ignore)
         self.expect_exit_code(len(signals_to_ignore))
 
-    @skipIfWindows  # no signal support
+    @requireNotWindows  # no signal support
     @expectedFailureNetBSD
     def test_default_signals_behavior(self):
         self.build()
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 b0f7277b64881..667411c58a61e 100644
--- a/lldb/test/API/tools/lldb-server/vCont-threads/TestSignal.py
+++ b/lldb/test/API/tools/lldb-server/vCont-threads/TestSignal.py
@@ -54,7 +54,7 @@ def get_pid(self):
         procinfo = self.parse_process_info_response(context)
         return int(procinfo["pid"], 16)
 
-    @skipIfWindows
+    @requireNotWindows
     @skipIfDarwin
     @expectedFailureNetBSD
     @expectedFailureAll(
@@ -85,7 +85,7 @@ def test_signal_one_thread(self):
             "C{0:x}:{1:x};c".format(lldbutil.get_signal_number("SIGUSR1")), threads[:1]
         )
 
-    @skipIfWindows
+    @requireNotWindows
     @skipIfDarwin
     @expectedFailureNetBSD
     @expectedFailureAll(
@@ -106,7 +106,7 @@ def test_signal_all_threads(self):
             threads,
         )
 
-    @skipIfWindows
+    @requireNotWindows
     @expectedFailureNetBSD
     @expectedFailureAll(
         oslist=["freebsd"], bugnumber="github.com/llvm/llvm-project/issues/56086"
@@ -126,7 +126,7 @@ def test_signal_process_by_pid(self):
             threads,
         )
 
-    @skipIfWindows
+    @requireNotWindows
     @expectedFailureNetBSD
     @expectedFailureAll(
         oslist=["freebsd"], bugnumber="github.com/llvm/llvm-project/issues/56086"
@@ -143,7 +143,7 @@ def test_signal_process_minus_one(self):
             "C{0:x}:p-1".format(lldbutil.get_signal_number("SIGUSR1")), threads
         )
 
-    @skipIfWindows
+    @requireNotWindows
     @expectedFailureNetBSD
     @expectedFailureAll(
         oslist=["freebsd"], bugnumber="github.com/llvm/llvm-project/issues/56086"
@@ -159,7 +159,7 @@ def test_signal_minus_one(self):
             "C{0:x}:-1".format(lldbutil.get_signal_number("SIGUSR1")), threads
         )
 
-    @skipIfWindows
+    @requireNotWindows
     @expectedFailureNetBSD
     @expectedFailureAll(
         oslist=["freebsd"], bugnumber="github.com/llvm/llvm-project/issues/56086"
@@ -180,7 +180,7 @@ def test_signal_all_threads_by_pid(self):
             threads,
         )
 
-    @skipIfWindows
+    @requireNotWindows
     @expectedFailureNetBSD
     @expectedFailureAll(
         oslist=["freebsd"], bugnumber="github.com/llvm/llvm-project/issues/56086"
@@ -200,7 +200,7 @@ def test_signal_minus_one_by_pid(self):
             threads,
         )
 
-    @skipIfWindows
+    @requireNotWindows
     @expectedFailureNetBSD
     @expectedFailureAll(
         oslist=["freebsd"], bugnumber="github.com/llvm/llvm-project/issues/56086"
diff --git a/lldb/test/API/types/TestCharType.py b/lldb/test/API/types/TestCharType.py
index 049d40e5535bf..c4c9a14b11b22 100644
--- a/lldb/test/API/types/TestCharType.py
+++ b/lldb/test/API/types/TestCharType.py
@@ -12,7 +12,7 @@ def test_char_type(self):
         """Test that char-type variables are displayed correctly."""
         self.build_and_run("char.cpp", ["char"], qd=True)
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_char_type_from_block(self):
         """Test that char-type variables are displayed correctly from a block."""
         self.build_and_run("char.cpp", ["char"], bc=True, qd=True)
@@ -21,7 +21,7 @@ def test_unsigned_char_type(self):
         """Test that 'unsigned_char'-type variables are displayed correctly."""
         self.build_and_run("unsigned_char.cpp", ["unsigned", "char"], qd=True)
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_unsigned_char_type_from_block(self):
         """Test that 'unsigned char'-type variables are displayed correctly from a block."""
         self.build_and_run("unsigned_char.cpp", ["unsigned", "char"], bc=True, qd=True)
diff --git a/lldb/test/API/types/TestCharTypeExpr.py b/lldb/test/API/types/TestCharTypeExpr.py
index cc8b27f51b8d8..11a1cfec6670a 100644
--- a/lldb/test/API/types/TestCharTypeExpr.py
+++ b/lldb/test/API/types/TestCharTypeExpr.py
@@ -12,7 +12,7 @@ def test_char_type(self):
         """Test that char-type variable expressions are evaluated correctly."""
         self.build_and_run_expr("char.cpp", ["char"], qd=True)
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_char_type_from_block(self):
         """Test that char-type variables are displayed correctly from a block."""
         self.build_and_run_expr("char.cpp", ["char"], bc=True, qd=True)
@@ -21,7 +21,7 @@ def test_unsigned_char_type(self):
         """Test that 'unsigned_char'-type variable expressions are evaluated correctly."""
         self.build_and_run_expr("unsigned_char.cpp", ["unsigned", "char"], qd=True)
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_unsigned_char_type_from_block(self):
         """Test that 'unsigned char'-type variables are displayed correctly from a block."""
         self.build_and_run_expr(
diff --git a/lldb/test/API/types/TestDoubleTypes.py b/lldb/test/API/types/TestDoubleTypes.py
index a863612cb0ddf..fc61c17603739 100644
--- a/lldb/test/API/types/TestDoubleTypes.py
+++ b/lldb/test/API/types/TestDoubleTypes.py
@@ -16,7 +16,7 @@ def test_double_type(self):
         """Test that double-type variables are displayed correctly."""
         self.build_and_run("double.cpp", set(["double"]))
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_double_type_from_block(self):
         """Test that double-type variables are displayed correctly from a block."""
         self.build_and_run("double.cpp", set(["double"]), bc=True)
diff --git a/lldb/test/API/types/TestDoubleTypesExpr.py b/lldb/test/API/types/TestDoubleTypesExpr.py
index dd9bd68ae43ea..2c8bfe9511a8b 100644
--- a/lldb/test/API/types/TestDoubleTypesExpr.py
+++ b/lldb/test/API/types/TestDoubleTypesExpr.py
@@ -20,7 +20,7 @@ def test_double_type(self):
         """Test that double-type variable expressions are evaluated correctly."""
         self.build_and_run_expr("double.cpp", set(["double"]))
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_double_type_from_block(self):
         """Test that double-type variables are displayed correctly from a block."""
         self.build_and_run_expr("double.cpp", set(["double"]), bc=True)
diff --git a/lldb/test/API/types/TestFloatTypes.py b/lldb/test/API/types/TestFloatTypes.py
index 85f1f9d56699c..26e7b5e8c9f7a 100644
--- a/lldb/test/API/types/TestFloatTypes.py
+++ b/lldb/test/API/types/TestFloatTypes.py
@@ -16,7 +16,7 @@ def test_float_type(self):
         """Test that float-type variables are displayed correctly."""
         self.build_and_run("float.cpp", set(["float"]))
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_float_type_from_block(self):
         """Test that float-type variables are displayed correctly from a block."""
         self.build_and_run("float.cpp", set(["float"]), bc=True)
diff --git a/lldb/test/API/types/TestFloatTypesExpr.py b/lldb/test/API/types/TestFloatTypesExpr.py
index 9c2ab79e70082..a3d5b119692dd 100644
--- a/lldb/test/API/types/TestFloatTypesExpr.py
+++ b/lldb/test/API/types/TestFloatTypesExpr.py
@@ -20,7 +20,7 @@ def test_float_type(self):
         """Test that float-type variable expressions are evaluated correctly."""
         self.build_and_run_expr("float.cpp", set(["float"]))
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_float_type_from_block(self):
         """Test that float-type variables are displayed correctly from a block."""
         self.build_and_run_expr("float.cpp", set(["float"]), bc=True)
diff --git a/lldb/test/API/types/TestIntegerType.py b/lldb/test/API/types/TestIntegerType.py
index 583bee0eb7110..76314de385e21 100644
--- a/lldb/test/API/types/TestIntegerType.py
+++ b/lldb/test/API/types/TestIntegerType.py
@@ -12,7 +12,7 @@ def test_int_type(self):
         """Test that int-type variables are displayed correctly."""
         self.build_and_run("int.cpp", ["int"])
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_int_type_from_block(self):
         """Test that int-type variables are displayed correctly from a block."""
         self.build_and_run("int.cpp", ["int"])
@@ -21,7 +21,7 @@ def test_unsigned_int_type(self):
         """Test that 'unsigned_int'-type variables are displayed correctly."""
         self.build_and_run("unsigned_int.cpp", ["unsigned", "int"])
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_unsigned_int_type_from_block(self):
         """Test that 'unsigned int'-type variables are displayed correctly from a block."""
         self.build_and_run("unsigned_int.cpp", ["unsigned", "int"], bc=True)
diff --git a/lldb/test/API/types/TestIntegerTypeExpr.py b/lldb/test/API/types/TestIntegerTypeExpr.py
index 77ce42541a054..d7c81d53ae941 100644
--- a/lldb/test/API/types/TestIntegerTypeExpr.py
+++ b/lldb/test/API/types/TestIntegerTypeExpr.py
@@ -8,7 +8,7 @@
 
 
 class IntegerTypeExprTestCase(AbstractBase.GenericTester):
-    @skipUnlessDarwin
+    @requireDarwin
     def test_unsigned_short_type_from_block(self):
         """Test that 'unsigned short'-type variables are displayed correctly from a block."""
         self.build_and_run_expr("unsigned_short.cpp", ["unsigned", "short"], bc=True)
@@ -17,7 +17,7 @@ def test_int_type(self):
         """Test that int-type variable expressions are evaluated correctly."""
         self.build_and_run_expr("int.cpp", ["int"])
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_int_type_from_block(self):
         """Test that int-type variables are displayed correctly from a block."""
         self.build_and_run_expr("int.cpp", ["int"])
@@ -26,7 +26,7 @@ def test_unsigned_int_type(self):
         """Test that 'unsigned_int'-type variable expressions are evaluated correctly."""
         self.build_and_run_expr("unsigned_int.cpp", ["unsigned", "int"])
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_unsigned_int_type_from_block(self):
         """Test that 'unsigned int'-type variables are displayed correctly from a block."""
         self.build_and_run_expr("unsigned_int.cpp", ["unsigned", "int"], bc=True)
diff --git a/lldb/test/API/types/TestLongTypes.py b/lldb/test/API/types/TestLongTypes.py
index 33e748f3bd8aa..f13b57dfa8a01 100644
--- a/lldb/test/API/types/TestLongTypes.py
+++ b/lldb/test/API/types/TestLongTypes.py
@@ -12,7 +12,7 @@ def test_long_type(self):
         """Test that long-type variables are displayed correctly."""
         self.build_and_run("long.cpp", ["long"])
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_long_type_from_block(self):
         """Test that long-type variables are displayed correctly from a block."""
         self.build_and_run("long.cpp", ["long"], bc=True)
@@ -21,7 +21,7 @@ def test_unsigned_long_type(self):
         """Test that 'unsigned long'-type variables are displayed correctly."""
         self.build_and_run("unsigned_long.cpp", ["unsigned", "long"])
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_unsigned_long_type_from_block(self):
         """Test that 'unsigned_long'-type variables are displayed correctly from a block."""
         self.build_and_run("unsigned_long.cpp", ["unsigned", "long"], bc=True)
@@ -30,7 +30,7 @@ def test_long_long_type(self):
         """Test that 'long long'-type variables are displayed correctly."""
         self.build_and_run("long_long.cpp", ["long long"])
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_long_long_type_from_block(self):
         """Test that 'long_long'-type variables are displayed correctly from a block."""
         self.build_and_run("long_long.cpp", ["long long"], bc=True)
@@ -39,7 +39,7 @@ def test_unsigned_long_long_type(self):
         """Test that 'unsigned long long'-type variables are displayed correctly."""
         self.build_and_run("unsigned_long_long.cpp", ["unsigned", "long long"])
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_unsigned_long_long_type_from_block(self):
         """Test that 'unsigned_long_long'-type variables are displayed correctly from a block."""
         self.build_and_run("unsigned_long_long.cpp", ["unsigned", "long long"], bc=True)
diff --git a/lldb/test/API/types/TestLongTypesExpr.py b/lldb/test/API/types/TestLongTypesExpr.py
index cfa538b5b226d..6f57edc085fef 100644
--- a/lldb/test/API/types/TestLongTypesExpr.py
+++ b/lldb/test/API/types/TestLongTypesExpr.py
@@ -12,7 +12,7 @@ def test_long_type(self):
         """Test that long-type variable expressions are evaluated correctly."""
         self.build_and_run_expr("long.cpp", ["long"])
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_long_type_from_block(self):
         """Test that long-type variables are displayed correctly from a block."""
         self.build_and_run_expr("long.cpp", ["long"], bc=True)
@@ -21,7 +21,7 @@ def test_unsigned_long_type(self):
         """Test that 'unsigned long'-type variable expressions are evaluated correctly."""
         self.build_and_run_expr("unsigned_long.cpp", ["unsigned", "long"])
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_unsigned_long_type_from_block(self):
         """Test that 'unsigned_long'-type variables are displayed correctly from a block."""
         self.build_and_run_expr("unsigned_long.cpp", ["unsigned", "long"], bc=True)
@@ -30,7 +30,7 @@ def test_long_long_type(self):
         """Test that 'long long'-type variable expressions are evaluated correctly."""
         self.build_and_run_expr("long_long.cpp", ["long long"])
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_long_long_type_from_block(self):
         """Test that 'long_long'-type variables are displayed correctly from a block."""
         self.build_and_run_expr("long_long.cpp", ["long long"], bc=True)
@@ -39,7 +39,7 @@ def test_unsigned_long_long_type(self):
         """Test that 'unsigned long long'-type variable expressions are evaluated correctly."""
         self.build_and_run_expr("unsigned_long_long.cpp", ["unsigned", "long long"])
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_unsigned_long_long_type_from_block(self):
         """Test that 'unsigned_long_long'-type variables are displayed correctly from a block."""
         self.build_and_run_expr(
diff --git a/lldb/test/API/types/TestShortType.py b/lldb/test/API/types/TestShortType.py
index 2335ecc31e047..5e7433cd3fe70 100644
--- a/lldb/test/API/types/TestShortType.py
+++ b/lldb/test/API/types/TestShortType.py
@@ -12,7 +12,7 @@ def test_short_type(self):
         """Test that short-type variables are displayed correctly."""
         self.build_and_run("short.cpp", ["short"])
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_short_type_from_block(self):
         """Test that short-type variables are displayed correctly from a block."""
         self.build_and_run("short.cpp", ["short"], bc=True)
@@ -21,7 +21,7 @@ def test_unsigned_short_type(self):
         """Test that 'unsigned_short'-type variables are displayed correctly."""
         self.build_and_run("unsigned_short.cpp", ["unsigned", "short"])
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_unsigned_short_type_from_block(self):
         """Test that 'unsigned short'-type variables are displayed correctly from a block."""
         self.build_and_run("unsigned_short.cpp", ["unsigned", "short"], bc=True)
diff --git a/lldb/test/API/types/TestShortTypeExpr.py b/lldb/test/API/types/TestShortTypeExpr.py
index 0de2be3e58967..71ee09caa0263 100644
--- a/lldb/test/API/types/TestShortTypeExpr.py
+++ b/lldb/test/API/types/TestShortTypeExpr.py
@@ -12,7 +12,7 @@ def test_short_type(self):
         """Test that short-type variable expressions are evaluated correctly."""
         self.build_and_run_expr("short.cpp", ["short"])
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_short_type_from_block(self):
         """Test that short-type variables are displayed correctly from a block."""
         self.build_and_run_expr("short.cpp", ["short"], bc=True)
@@ -21,7 +21,7 @@ def test_unsigned_short_type(self):
         """Test that 'unsigned_short'-type variable expressions are evaluated correctly."""
         self.build_and_run_expr("unsigned_short.cpp", ["unsigned", "short"])
 
-    @skipUnlessDarwin
+    @requireDarwin
     def test_unsigned_short_type_from_block(self):
         """Test that 'unsigned short'-type variables are displayed correctly from a block."""
         self.build_and_run_expr("unsigned_short.cpp", ["unsigned", "short"], bc=True)



More information about the llvm-commits mailing list