[Lldb-commits] [lldb] a852cf6 - [lldb] [test] Skip ObjC-based tests via 'objc' category

Michał Górny via lldb-commits lldb-commits at lists.llvm.org
Tue Nov 10 03:02:49 PST 2020


Author: Michał Górny
Date: 2020-11-10T12:02:38+01:00
New Revision: a852cf66ea5d130a09cd796b97b15c18059e95cd

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

LOG: [lldb] [test] Skip ObjC-based tests via 'objc' category

Replace the plethora of ObjC-implied 'skipUnlessDarwin' decorators
with marking tests as 'objc' category (whenever missing), and skip all
ObjC tests on non-Darwin platforms.  I have used '.categories' file
wherever it was present already or all (>1) tests were relying on ObjC,
and explicit add_test_categories() where there was only one test.

Differential Revision: https://reviews.llvm.org/D91056

Added: 
    lldb/test/API/commands/frame/recognizer/.categories
    lldb/test/API/lang/objcxx/.categories
    lldb/test/API/macosx/nslog/.categories

Modified: 
    lldb/packages/Python/lldbsuite/test/dotest.py
    lldb/test/API/commands/expression/call-throws/TestCallThatThrows.py
    lldb/test/API/commands/expression/context-object-objc/TestContextObjectObjc.py
    lldb/test/API/commands/expression/diagnostics/TestExprDiagnostics.py
    lldb/test/API/commands/expression/import_builtin_fileid/TestImportBuiltinFileID.py
    lldb/test/API/commands/expression/namespace_local_var_same_name_obj_c/TestNamespaceLocalVarSameNameObjC.py
    lldb/test/API/commands/expression/persist_objc_pointeetype/TestPersistObjCPointeeType.py
    lldb/test/API/commands/expression/po_verbosity/TestPoVerbosity.py
    lldb/test/API/commands/expression/two-files/TestObjCTypeQueryFromOtherCompileUnit.py
    lldb/test/API/functionalities/breakpoint/objc/TestObjCBreakpoints.py
    lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCCF.py
    lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCExpr.py
    lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCKVO.py
    lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSBundle.py
    lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSContainer.py
    lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSData.py
    lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSDate.py
    lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSError.py
    lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSURL.py
    lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCPlain.py
    lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjNSException.py
    lldb/test/API/functionalities/set-data/TestSetData.py
    lldb/test/API/functionalities/tsan/multiple/TestTsanMultiple.py
    lldb/test/API/lang/objc/bitfield_ivars/TestBitfieldIvars.py
    lldb/test/API/lang/objc/blocks/TestObjCIvarsInBlocks.py
    lldb/test/API/lang/objc/conflicting-definition/TestConflictingDefinition.py
    lldb/test/API/lang/objc/direct-dispatch-step/TestObjCDirectDispatchStepping.py
    lldb/test/API/lang/objc/exceptions/TestObjCExceptions.py
    lldb/test/API/lang/objc/forward-decl/TestForwardDecl.py
    lldb/test/API/lang/objc/foundation/TestConstStrings.py
    lldb/test/API/lang/objc/foundation/TestFoundationDisassembly.py
    lldb/test/API/lang/objc/foundation/TestObjCMethods.py
    lldb/test/API/lang/objc/foundation/TestObjCMethods2.py
    lldb/test/API/lang/objc/foundation/TestObjCMethodsNSArray.py
    lldb/test/API/lang/objc/foundation/TestObjCMethodsNSError.py
    lldb/test/API/lang/objc/foundation/TestObjCMethodsString.py
    lldb/test/API/lang/objc/foundation/TestObjectDescriptionAPI.py
    lldb/test/API/lang/objc/foundation/TestRuntimeTypes.py
    lldb/test/API/lang/objc/foundation/TestSymbolTable.py
    lldb/test/API/lang/objc/global_ptrs/TestGlobalObjects.py
    lldb/test/API/lang/objc/hidden-ivars/TestHiddenIvars.py
    lldb/test/API/lang/objc/ivar-IMP/TestObjCiVarIMP.py
    lldb/test/API/lang/objc/modules-app-update/TestClangModulesAppUpdate.py
    lldb/test/API/lang/objc/modules-auto-import/TestModulesAutoImport.py
    lldb/test/API/lang/objc/modules-cache/TestClangModulesCache.py
    lldb/test/API/lang/objc/modules-compile-error/TestModulesCompileError.py
    lldb/test/API/lang/objc/modules-hash-mismatch/TestClangModulesHashMismatch.py
    lldb/test/API/lang/objc/modules-incomplete/TestIncompleteModules.py
    lldb/test/API/lang/objc/modules-inline-functions/TestModulesInlineFunctions.py
    lldb/test/API/lang/objc/modules-non-objc-target/TestObjCModulesNonObjCTarget.py
    lldb/test/API/lang/objc/modules-update/TestClangModulesUpdate.py
    lldb/test/API/lang/objc/modules/TestObjCModules.py
    lldb/test/API/lang/objc/objc++/TestObjCXX.py
    lldb/test/API/lang/objc/objc-baseclass-sbtype/TestObjCBaseClassSBType.py
    lldb/test/API/lang/objc/objc-builtin-types/TestObjCBuiltinTypes.py
    lldb/test/API/lang/objc/objc-checker/TestObjCCheckers.py
    lldb/test/API/lang/objc/objc-class-method/TestObjCClassMethod.py
    lldb/test/API/lang/objc/objc-dyn-sbtype/TestObjCDynamicSBType.py
    lldb/test/API/lang/objc/objc-dynamic-value/TestObjCDynamicValue.py
    lldb/test/API/lang/objc/objc-foundation-dictionary-empty/TestNSDictionary0.py
    lldb/test/API/lang/objc/objc-ivar-offsets/TestObjCIvarOffsets.py
    lldb/test/API/lang/objc/objc-ivar-protocols/TestIvarProtocols.py
    lldb/test/API/lang/objc/objc-ivar-stripped/TestObjCIvarStripped.py
    lldb/test/API/lang/objc/objc-new-syntax/TestObjCNewSyntaxArray.py
    lldb/test/API/lang/objc/objc-new-syntax/TestObjCNewSyntaxDictionary.py
    lldb/test/API/lang/objc/objc-new-syntax/TestObjCNewSyntaxLiteral.py
    lldb/test/API/lang/objc/objc-optimized/TestObjcOptimized.py
    lldb/test/API/lang/objc/objc-property/TestObjCProperty.py
    lldb/test/API/lang/objc/objc-runtime-ivars/TestRuntimeIvars.py
    lldb/test/API/lang/objc/objc-static-method-stripped/TestObjCStaticMethodStripped.py
    lldb/test/API/lang/objc/objc-static-method/TestObjCStaticMethod.py
    lldb/test/API/lang/objc/objc-stepping/TestObjCStepping.py
    lldb/test/API/lang/objc/objc-struct-argument/TestObjCStructArgument.py
    lldb/test/API/lang/objc/objc-struct-return/TestObjCStructReturn.py
    lldb/test/API/lang/objc/objc-super/TestObjCSuper.py
    lldb/test/API/lang/objc/objc_direct-methods/TestObjCDirectMethods.py
    lldb/test/API/lang/objc/orderedset/TestOrderedSet.py
    lldb/test/API/lang/objc/print-obj/TestPrintObj.py
    lldb/test/API/lang/objc/ptr_refs/TestPtrRefsObjC.py
    lldb/test/API/lang/objc/radar-9691614/TestObjCMethodReturningBOOL.py
    lldb/test/API/lang/objc/rdar-10967107/TestRdar10967107.py
    lldb/test/API/lang/objc/rdar-11355592/TestRdar11355592.py
    lldb/test/API/lang/objc/rdar-12408181/TestRdar12408181.py
    lldb/test/API/lang/objc/real-definition/TestRealDefinition.py
    lldb/test/API/lang/objc/self/TestObjCSelf.py
    lldb/test/API/lang/objc/single-entry-dictionary/TestObjCSingleEntryDictionary.py
    lldb/test/API/lang/objc/unicode-string/TestUnicodeString.py
    lldb/test/API/lang/objc/variadic_methods/TestVariadicMethods.py
    lldb/test/API/lang/objcxx/class-name-clash/TestNameClash.py
    lldb/test/API/lang/objcxx/cxx-bridged-po/TestObjCXXBridgedPO.py
    lldb/test/API/lang/objcxx/hide-runtime-values/TestObjCXXHideRuntimeValues.py
    lldb/test/API/lang/objcxx/objcxx-ivar-vector/TestIvarVector.py
    lldb/test/API/python_api/objc_type/TestObjCType.py
    lldb/test/API/python_api/sbtype_typeclass/TestSBTypeTypeClass.py

Removed: 
    


################################################################################
diff  --git a/lldb/packages/Python/lldbsuite/test/dotest.py b/lldb/packages/Python/lldbsuite/test/dotest.py
index 5a81011b3583..7c0a9ec56fce 100644
--- a/lldb/packages/Python/lldbsuite/test/dotest.py
+++ b/lldb/packages/Python/lldbsuite/test/dotest.py
@@ -835,6 +835,13 @@ def checkWatchpointSupport():
     print("watchpoint tests will not be run because: " + reason)
     configuration.skip_categories.append("watchpoint")
 
+def checkObjcSupport():
+    from lldbsuite.test import lldbplatformutil
+
+    if not lldbplatformutil.platformIsDarwin():
+        print("objc tests will be skipped because of unsupported platform")
+        configuration.skip_categories.append("objc")
+
 def checkDebugInfoSupport():
     import lldb
 
@@ -945,6 +952,7 @@ def run_suite():
     checkLibstdcxxSupport()
     checkWatchpointSupport()
     checkDebugInfoSupport()
+    checkObjcSupport()
 
     # Perform LLGS tests only on platforms using it.
     configuration.llgs_platform = (

diff  --git a/lldb/test/API/commands/expression/call-throws/TestCallThatThrows.py b/lldb/test/API/commands/expression/call-throws/TestCallThatThrows.py
index eb84b7b54eb6..dbcfa836321c 100644
--- a/lldb/test/API/commands/expression/call-throws/TestCallThatThrows.py
+++ b/lldb/test/API/commands/expression/call-throws/TestCallThatThrows.py
@@ -21,7 +21,7 @@ def setUp(self):
         self.main_source = "call-throws.m"
         self.main_source_spec = lldb.SBFileSpec(self.main_source)
 
-    @skipUnlessDarwin
+    @add_test_categories(["objc"])
     def test(self):
         """Test calling a function that throws and ObjC exception."""
         self.build()

diff  --git a/lldb/test/API/commands/expression/context-object-objc/TestContextObjectObjc.py b/lldb/test/API/commands/expression/context-object-objc/TestContextObjectObjc.py
index 36384b752751..51ee0b51f3be 100644
--- a/lldb/test/API/commands/expression/context-object-objc/TestContextObjectObjc.py
+++ b/lldb/test/API/commands/expression/context-object-objc/TestContextObjectObjc.py
@@ -11,7 +11,7 @@ class ContextObjectObjcTestCase(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)
 
-    @skipUnlessDarwin
+    @add_test_categories(["objc"])
     def test_context_object_objc(self):
         """Tests expression evaluation in context of an objc class."""
         self.build()

diff  --git a/lldb/test/API/commands/expression/diagnostics/TestExprDiagnostics.py b/lldb/test/API/commands/expression/diagnostics/TestExprDiagnostics.py
index b5eb552badb5..343385414293 100644
--- a/lldb/test/API/commands/expression/diagnostics/TestExprDiagnostics.py
+++ b/lldb/test/API/commands/expression/diagnostics/TestExprDiagnostics.py
@@ -88,7 +88,7 @@ def test_source_and_caret_printing(self):
         self.assertFalse(value.GetError().Success())
         self.assertIn("error: <user expression 9>:1:8: redefinition of 'Redef'\nstruct Redef { float y; };\n       ^\n<user expression 8>:1:8: previous definition is here\nstruct Redef { double x; };\n       ^", value.GetError().GetCString())
 
-    @skipUnlessDarwin
+    @add_test_categories(["objc"])
     def test_source_locations_from_objc_modules(self):
         self.build()
 

diff  --git a/lldb/test/API/commands/expression/import_builtin_fileid/TestImportBuiltinFileID.py b/lldb/test/API/commands/expression/import_builtin_fileid/TestImportBuiltinFileID.py
index 08b6a8c90f54..1de1103eb6bd 100644
--- a/lldb/test/API/commands/expression/import_builtin_fileid/TestImportBuiltinFileID.py
+++ b/lldb/test/API/commands/expression/import_builtin_fileid/TestImportBuiltinFileID.py
@@ -14,9 +14,8 @@ class TestImportBuiltinFileID(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)
 
-    @skipUnlessDarwin
     @skipIfDarwinEmbedded
-    @add_test_categories(["gmodules"])
+    @add_test_categories(["gmodules", "objc"])
     def test_import_builtin_fileid(self):
         self.build()
 

diff  --git a/lldb/test/API/commands/expression/namespace_local_var_same_name_obj_c/TestNamespaceLocalVarSameNameObjC.py b/lldb/test/API/commands/expression/namespace_local_var_same_name_obj_c/TestNamespaceLocalVarSameNameObjC.py
index eb894cc37e48..92efbdd306c1 100644
--- a/lldb/test/API/commands/expression/namespace_local_var_same_name_obj_c/TestNamespaceLocalVarSameNameObjC.py
+++ b/lldb/test/API/commands/expression/namespace_local_var_same_name_obj_c/TestNamespaceLocalVarSameNameObjC.py
@@ -7,8 +7,7 @@ class TestNamespaceLocalVarSameNameObjC(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)
 
-    @skipUnlessDarwin
-    @add_test_categories(["gmodules"])
+    @add_test_categories(["gmodules", "objc"])
     def test_namespace_local_var_same_name_obj_c(self):
         self.build()
 

diff  --git a/lldb/test/API/commands/expression/persist_objc_pointeetype/TestPersistObjCPointeeType.py b/lldb/test/API/commands/expression/persist_objc_pointeetype/TestPersistObjCPointeeType.py
index 577753c04977..8562a4fb3a70 100644
--- a/lldb/test/API/commands/expression/persist_objc_pointeetype/TestPersistObjCPointeeType.py
+++ b/lldb/test/API/commands/expression/persist_objc_pointeetype/TestPersistObjCPointeeType.py
@@ -20,9 +20,9 @@ def setUp(self):
         # Find the line number to break for main.cpp.
         self.line = line_number('main.m', '// break here')
 
-    @skipUnlessDarwin
     @skipIf(archs=["i386", "i686"])
     @skipIf(debug_info="gmodules", archs=['arm64', 'armv7', 'armv7k', 'arm64e', 'arm64_32'])  # compile error with gmodules for iOS
+    @add_test_categories(["objc"])
     def test_with(self):
         """Test that we can p *objcObject"""
         self.build()

diff  --git a/lldb/test/API/commands/expression/po_verbosity/TestPoVerbosity.py b/lldb/test/API/commands/expression/po_verbosity/TestPoVerbosity.py
index e203b386d5bd..a4c632dff2bb 100644
--- a/lldb/test/API/commands/expression/po_verbosity/TestPoVerbosity.py
+++ b/lldb/test/API/commands/expression/po_verbosity/TestPoVerbosity.py
@@ -21,7 +21,7 @@ def setUp(self):
         self.line = line_number('main.m',
                                 '// Stop here')
 
-    @skipUnlessDarwin
+    @add_test_categories(["objc"])
     def test(self):
         """Test that the po command acts correctly."""
         self.build()

diff  --git a/lldb/test/API/commands/expression/two-files/TestObjCTypeQueryFromOtherCompileUnit.py b/lldb/test/API/commands/expression/two-files/TestObjCTypeQueryFromOtherCompileUnit.py
index c518bf0559fa..8df489a100fc 100644
--- a/lldb/test/API/commands/expression/two-files/TestObjCTypeQueryFromOtherCompileUnit.py
+++ b/lldb/test/API/commands/expression/two-files/TestObjCTypeQueryFromOtherCompileUnit.py
@@ -23,7 +23,7 @@ def setUp(self):
         self.line = line_number(
             'main.m', "// Set breakpoint here, then do 'expr (NSArray*)array_token'.")
 
-    @skipUnlessDarwin
+    @add_test_categories(["objc"])
     def test(self):
         """The expression parser's type search should be wider than the current compilation unit."""
         self.build()

diff  --git a/lldb/test/API/commands/frame/recognizer/.categories b/lldb/test/API/commands/frame/recognizer/.categories
new file mode 100644
index 000000000000..72cf07c1efea
--- /dev/null
+++ b/lldb/test/API/commands/frame/recognizer/.categories
@@ -0,0 +1 @@
+objc

diff  --git a/lldb/test/API/functionalities/breakpoint/objc/TestObjCBreakpoints.py b/lldb/test/API/functionalities/breakpoint/objc/TestObjCBreakpoints.py
index 4d1fe0e1036e..7bf1f34b5fe1 100644
--- a/lldb/test/API/functionalities/breakpoint/objc/TestObjCBreakpoints.py
+++ b/lldb/test/API/functionalities/breakpoint/objc/TestObjCBreakpoints.py
@@ -13,11 +13,11 @@
 from lldbsuite.test import lldbutil
 
 
- at skipUnlessDarwin
 class TestObjCBreakpoints(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)
 
+    @add_test_categories(["objc"])
     def test_break(self):
         """Test setting Objective-C specific breakpoints (DWARF in .o files)."""
         self.build()

diff  --git a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCCF.py b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCCF.py
index 38e8ae63838b..63f4b71e1ec1 100644
--- a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCCF.py
+++ b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCCF.py
@@ -14,7 +14,6 @@
 
 class ObjCDataFormatterCF(ObjCDataFormatterTestCase):
 
-    @skipUnlessDarwin
     def test_coreframeworks_and_run_command(self):
         """Test formatters for Core OSX frameworks."""
         self.build()

diff  --git a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCExpr.py b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCExpr.py
index d27f0b932026..91a4567d86e4 100644
--- a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCExpr.py
+++ b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCExpr.py
@@ -14,7 +14,6 @@
 
 class ObjCDataFormatterExpr(ObjCDataFormatterTestCase):
 
-    @skipUnlessDarwin
     def test_expr_with_run_command(self):
         """Test common cases of expression parser <--> formatters interaction."""
         self.build()

diff  --git a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCKVO.py b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCKVO.py
index fae51ffd038b..7b3572ab78ab 100644
--- a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCKVO.py
+++ b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCKVO.py
@@ -14,7 +14,6 @@
 
 class ObjCDataFormatterKVO(ObjCDataFormatterTestCase):
 
-    @skipUnlessDarwin
     def test_kvo_with_run_command(self):
         """Test the behavior of formatters when KVO is in use."""
         self.build()

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 40acc19a5da6..673366fcbb3e 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
@@ -14,7 +14,6 @@
 
 class ObjCDataFormatterNSBundle(ObjCDataFormatterTestCase):
 
-    @skipUnlessDarwin
     def test_nsbundle_with_run_command(self):
         """Test formatters for NSBundle."""
         self.appkit_tester_impl(self.nsbundle_data_formatter_commands)

diff  --git a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSContainer.py b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSContainer.py
index 05367c144b30..0ad475d7436d 100644
--- a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSContainer.py
+++ b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSContainer.py
@@ -14,7 +14,6 @@
 
 class ObjCDataFormatterNSContainer(ObjCDataFormatterTestCase):
 
-    @skipUnlessDarwin
     def test_nscontainers_with_run_command(self):
         """Test formatters for  NS container classes."""
         self.appkit_tester_impl(self.nscontainers_data_formatter_commands)

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 4fe687866f3b..f1c5554eebfb 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
@@ -14,7 +14,6 @@
 
 class ObjCDataFormatterNSData(ObjCDataFormatterTestCase):
 
-    @skipUnlessDarwin
     def test_nsdata_with_run_command(self):
         """Test formatters for  NSData."""
         self.appkit_tester_impl(self.nsdata_data_formatter_commands)

diff  --git a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSDate.py b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSDate.py
index cdce4798e986..622bb4a327ed 100644
--- a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSDate.py
+++ b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCNSDate.py
@@ -15,7 +15,6 @@
 
 class ObjCDataFormatterNSDate(ObjCDataFormatterTestCase):
 
-    @skipUnlessDarwin
     def test_nsdate_with_run_command(self):
         """Test formatters for  NSDate."""
         self.appkit_tester_impl(self.nsdate_data_formatter_commands)

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 2da1b5130a9d..92f1f46deba4 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
@@ -14,7 +14,6 @@
 
 class ObjCDataFormatterNSError(ObjCDataFormatterTestCase):
 
-    @skipUnlessDarwin
     def test_nserror_with_run_command(self):
         """Test formatters for NSError."""
         self.appkit_tester_impl(self.nserror_data_formatter_commands)

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 e84818e9a701..b746c4907236 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
@@ -14,7 +14,6 @@
 
 class ObjCDataFormatterNSURL(ObjCDataFormatterTestCase):
 
-    @skipUnlessDarwin
     def test_nsurl_with_run_command(self):
         """Test formatters for NSURL."""
         self.appkit_tester_impl(self.nsurl_data_formatter_commands)

diff  --git a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCPlain.py b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCPlain.py
index f438245aad2d..39c644cbe600 100644
--- a/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCPlain.py
+++ b/lldb/test/API/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjCPlain.py
@@ -14,7 +14,6 @@
 
 class ObjCDataFormatterNSPlain(ObjCDataFormatterTestCase):
 
-    @skipUnlessDarwin
     def test_plain_objc_with_run_command(self):
         """Test basic ObjC formatting behavior."""
         self.build()

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 6265c05c5b70..cf4144458dde 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
@@ -14,7 +14,6 @@
 
 class ObjCDataFormatterNSException(ObjCDataFormatterTestCase):
 
-    @skipUnlessDarwin
     def test_nsexception_with_run_command(self):
         """Test formatters for NSException."""
         self.appkit_tester_impl(self.nsexception_data_formatter_commands)

diff  --git a/lldb/test/API/functionalities/set-data/TestSetData.py b/lldb/test/API/functionalities/set-data/TestSetData.py
index 5b0a7bd07fec..08477f3c6cfa 100644
--- a/lldb/test/API/functionalities/set-data/TestSetData.py
+++ b/lldb/test/API/functionalities/set-data/TestSetData.py
@@ -14,7 +14,7 @@ class SetDataTestCase(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)
 
-    @skipUnlessDarwin
+    @add_test_categories(["objc"])
     def test_set_data(self):
         """Test setting the contents of variables and registers using raw data."""
         self.build()

diff  --git a/lldb/test/API/functionalities/tsan/multiple/TestTsanMultiple.py b/lldb/test/API/functionalities/tsan/multiple/TestTsanMultiple.py
index b40f950eda51..1938dc621fab 100644
--- a/lldb/test/API/functionalities/tsan/multiple/TestTsanMultiple.py
+++ b/lldb/test/API/functionalities/tsan/multiple/TestTsanMultiple.py
@@ -20,6 +20,7 @@ class TsanMultipleTestCase(TestBase):
     @skipIfFreeBSD  # llvm.org/pr21136 runtimes not yet available by default
     @skipIfRemote
     @skipUnlessThreadSanitizer
+    @add_test_categories(["objc"])
     def test(self):
         self.build()
         self.tsan_tests()

diff  --git a/lldb/test/API/lang/objc/bitfield_ivars/TestBitfieldIvars.py b/lldb/test/API/lang/objc/bitfield_ivars/TestBitfieldIvars.py
index 4154bb144b35..644dca52a464 100644
--- a/lldb/test/API/lang/objc/bitfield_ivars/TestBitfieldIvars.py
+++ b/lldb/test/API/lang/objc/bitfield_ivars/TestBitfieldIvars.py
@@ -8,7 +8,6 @@ class TestBitfieldIvars(TestBase):
     mydir = TestBase.compute_mydir(__file__)
 
 
-    @skipUnlessDarwin
     def test(self):
         self.build()
         lldbutil.run_to_source_breakpoint(self, "// break here", lldb.SBFileSpec("main.m"))

diff  --git a/lldb/test/API/lang/objc/blocks/TestObjCIvarsInBlocks.py b/lldb/test/API/lang/objc/blocks/TestObjCIvarsInBlocks.py
index 9eb8931fb4a0..a7f88c1d7d91 100644
--- a/lldb/test/API/lang/objc/blocks/TestObjCIvarsInBlocks.py
+++ b/lldb/test/API/lang/objc/blocks/TestObjCIvarsInBlocks.py
@@ -18,7 +18,6 @@ def setUp(self):
         self.class_source = "ivars-in-blocks.m"
         self.class_source_file_spec = lldb.SBFileSpec(self.class_source)
 
-    @skipUnlessDarwin
     @add_test_categories(['pyapi'])
     @skipIf(dwarf_version=['<', '4'])
     @expectedFailureAll(

diff  --git a/lldb/test/API/lang/objc/conflicting-definition/TestConflictingDefinition.py b/lldb/test/API/lang/objc/conflicting-definition/TestConflictingDefinition.py
index f49858ca4f3d..274bb452cef8 100644
--- a/lldb/test/API/lang/objc/conflicting-definition/TestConflictingDefinition.py
+++ b/lldb/test/API/lang/objc/conflicting-definition/TestConflictingDefinition.py
@@ -12,7 +12,6 @@ class TestRealDefinition(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)
 
-    @skipUnlessDarwin
     def test_frame_var_after_stop_at_implementation(self):
         """Test that we can find the implementation for an objective C type"""
         if self.getArchitecture() == 'i386':

diff  --git a/lldb/test/API/lang/objc/direct-dispatch-step/TestObjCDirectDispatchStepping.py b/lldb/test/API/lang/objc/direct-dispatch-step/TestObjCDirectDispatchStepping.py
index 99ff5b805925..354976807846 100644
--- a/lldb/test/API/lang/objc/direct-dispatch-step/TestObjCDirectDispatchStepping.py
+++ b/lldb/test/API/lang/objc/direct-dispatch-step/TestObjCDirectDispatchStepping.py
@@ -20,7 +20,6 @@ def setUp(self):
         # Find the line numbers that we will step to in main:
         self.main_source = lldb.SBFileSpec("stepping-tests.m")
 
-    @skipUnlessDarwin
     @add_test_categories(['pyapi', 'basic_process'])
     def test_with_python_api(self):
         """Test stepping through the 'direct dispatch' optimized method calls."""

diff  --git a/lldb/test/API/lang/objc/exceptions/TestObjCExceptions.py b/lldb/test/API/lang/objc/exceptions/TestObjCExceptions.py
index 9110bea02e98..9da68006c642 100644
--- a/lldb/test/API/lang/objc/exceptions/TestObjCExceptions.py
+++ b/lldb/test/API/lang/objc/exceptions/TestObjCExceptions.py
@@ -15,7 +15,6 @@ class ObjCExceptionsTestCase(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)
 
-    @skipUnlessDarwin
     def test_objc_exceptions_at_throw(self):
         self.build()
 
@@ -126,7 +125,6 @@ def test_objc_exceptions_at_throw(self):
         for n in ["objc_exception_throw", "foo(int)", "main"]:
             self.assertTrue(n in names, "%s is in the exception backtrace (%s)" % (n, names))
 
-    @skipUnlessDarwin
     def test_objc_exceptions_at_abort(self):
         self.build()
 
@@ -183,7 +181,6 @@ def test_objc_exceptions_at_abort(self):
         for n in ["objc_exception_throw", "foo(int)", "rethrow(int)", "main"]:
             self.assertEqual(len([f for f in history_thread.frames if f.GetFunctionName() == n]), 1)
 
-    @skipUnlessDarwin
     def test_cxx_exceptions_at_abort(self):
         self.build()
 

diff  --git a/lldb/test/API/lang/objc/forward-decl/TestForwardDecl.py b/lldb/test/API/lang/objc/forward-decl/TestForwardDecl.py
index fd35d64c1915..d52b714a6453 100644
--- a/lldb/test/API/lang/objc/forward-decl/TestForwardDecl.py
+++ b/lldb/test/API/lang/objc/forward-decl/TestForwardDecl.py
@@ -54,12 +54,10 @@ def do_test(self, dictionary=None):
         self.expect("expression [j getMember]", VARIABLES_DISPLAYED_CORRECTLY,
                     substrs=["= 0x"])
 
-    @skipUnlessDarwin
     def test_expr(self):
         self.do_test()
 
     @no_debug_info_test
-    @skipUnlessDarwin
     @skipIf(compiler=no_match("clang"))
     @skipIf(compiler_version=["<", "7.0"])
     def test_debug_names(self):

diff  --git a/lldb/test/API/lang/objc/foundation/TestConstStrings.py b/lldb/test/API/lang/objc/foundation/TestConstStrings.py
index db0d1bbf8ab3..9a5bdf8f31c2 100644
--- a/lldb/test/API/lang/objc/foundation/TestConstStrings.py
+++ b/lldb/test/API/lang/objc/foundation/TestConstStrings.py
@@ -23,7 +23,6 @@ def setUp(self):
         self.main_source = "const-strings.m"
         self.line = line_number(self.main_source, '// Set breakpoint here.')
 
-    @skipUnlessDarwin
     def test_break(self):
         """Test constant string generation amd comparison by the expression parser."""
         self.build(dictionary=self.d)

diff  --git a/lldb/test/API/lang/objc/foundation/TestFoundationDisassembly.py b/lldb/test/API/lang/objc/foundation/TestFoundationDisassembly.py
index 39f43dbd4194..8ff1611a19b0 100644
--- a/lldb/test/API/lang/objc/foundation/TestFoundationDisassembly.py
+++ b/lldb/test/API/lang/objc/foundation/TestFoundationDisassembly.py
@@ -10,7 +10,6 @@
 from lldbsuite.test import lldbutil
 
 
- at skipUnlessDarwin
 class FoundationDisassembleTestCase(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)

diff  --git a/lldb/test/API/lang/objc/foundation/TestObjCMethods.py b/lldb/test/API/lang/objc/foundation/TestObjCMethods.py
index 675c130d7bd3..8f43ecf17bc1 100644
--- a/lldb/test/API/lang/objc/foundation/TestObjCMethods.py
+++ b/lldb/test/API/lang/objc/foundation/TestObjCMethods.py
@@ -16,7 +16,6 @@
 file_index = 0
 
 
- at skipUnlessDarwin
 class FoundationTestCase(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)

diff  --git a/lldb/test/API/lang/objc/foundation/TestObjCMethods2.py b/lldb/test/API/lang/objc/foundation/TestObjCMethods2.py
index b2d0d190eb0d..1446c74f07ff 100644
--- a/lldb/test/API/lang/objc/foundation/TestObjCMethods2.py
+++ b/lldb/test/API/lang/objc/foundation/TestObjCMethods2.py
@@ -10,7 +10,6 @@
 from lldbsuite.test import lldbutil
 
 
- at skipUnlessDarwin
 class FoundationTestCase2(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)

diff  --git a/lldb/test/API/lang/objc/foundation/TestObjCMethodsNSArray.py b/lldb/test/API/lang/objc/foundation/TestObjCMethodsNSArray.py
index 8080029ef028..dd0d028fabad 100644
--- a/lldb/test/API/lang/objc/foundation/TestObjCMethodsNSArray.py
+++ b/lldb/test/API/lang/objc/foundation/TestObjCMethodsNSArray.py
@@ -10,7 +10,6 @@
 from lldbsuite.test import lldbutil
 
 
- at skipUnlessDarwin
 class FoundationTestCaseNSArray(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)

diff  --git a/lldb/test/API/lang/objc/foundation/TestObjCMethodsNSError.py b/lldb/test/API/lang/objc/foundation/TestObjCMethodsNSError.py
index 07717926b5e0..4a04de3340f2 100644
--- a/lldb/test/API/lang/objc/foundation/TestObjCMethodsNSError.py
+++ b/lldb/test/API/lang/objc/foundation/TestObjCMethodsNSError.py
@@ -10,7 +10,6 @@
 from lldbsuite.test import lldbutil
 
 
- at skipUnlessDarwin
 class FoundationTestCaseNSError(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)

diff  --git a/lldb/test/API/lang/objc/foundation/TestObjCMethodsString.py b/lldb/test/API/lang/objc/foundation/TestObjCMethodsString.py
index 65ccb0c19b5b..4a51a47f72b5 100644
--- a/lldb/test/API/lang/objc/foundation/TestObjCMethodsString.py
+++ b/lldb/test/API/lang/objc/foundation/TestObjCMethodsString.py
@@ -10,7 +10,6 @@
 from lldbsuite.test import lldbutil
 
 
- at skipUnlessDarwin
 class FoundationTestCaseString(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)

diff  --git a/lldb/test/API/lang/objc/foundation/TestObjectDescriptionAPI.py b/lldb/test/API/lang/objc/foundation/TestObjectDescriptionAPI.py
index 803cbfe1218c..43b7c8357835 100644
--- a/lldb/test/API/lang/objc/foundation/TestObjectDescriptionAPI.py
+++ b/lldb/test/API/lang/objc/foundation/TestObjectDescriptionAPI.py
@@ -24,7 +24,6 @@ def setUp(self):
             self.source, '// Set break point at this line.')
 
     # rdar://problem/10857337
-    @skipUnlessDarwin
     @add_test_categories(['pyapi'])
     def test_find_global_variables_then_object_description(self):
         """Exercise SBTarget.FindGlobalVariables() API."""

diff  --git a/lldb/test/API/lang/objc/foundation/TestRuntimeTypes.py b/lldb/test/API/lang/objc/foundation/TestRuntimeTypes.py
index 7254f8ec3c6b..901965005e1a 100644
--- a/lldb/test/API/lang/objc/foundation/TestRuntimeTypes.py
+++ b/lldb/test/API/lang/objc/foundation/TestRuntimeTypes.py
@@ -10,7 +10,6 @@
 from lldbsuite.test import lldbutil
 
 
- at skipUnlessDarwin
 class RuntimeTypesTestCase(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)

diff  --git a/lldb/test/API/lang/objc/foundation/TestSymbolTable.py b/lldb/test/API/lang/objc/foundation/TestSymbolTable.py
index 02c551b83876..b94934bba4f3 100644
--- a/lldb/test/API/lang/objc/foundation/TestSymbolTable.py
+++ b/lldb/test/API/lang/objc/foundation/TestSymbolTable.py
@@ -8,7 +8,6 @@
 from lldbsuite.test import lldbutil
 
 
- at skipUnlessDarwin
 class FoundationSymtabTestCase(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)

diff  --git a/lldb/test/API/lang/objc/global_ptrs/TestGlobalObjects.py b/lldb/test/API/lang/objc/global_ptrs/TestGlobalObjects.py
index 0d36f1d17d98..15944d1da725 100644
--- a/lldb/test/API/lang/objc/global_ptrs/TestGlobalObjects.py
+++ b/lldb/test/API/lang/objc/global_ptrs/TestGlobalObjects.py
@@ -17,7 +17,6 @@ def setUp(self):
         TestBase.setUp(self)
         self.main_source = lldb.SBFileSpec("main.m")
 
-    @skipUnlessDarwin
     @add_test_categories(['pyapi'])
     def test_with_python_api(self):
         """Test that a global ObjC object found before the process is started updates correctly."""

diff  --git a/lldb/test/API/lang/objc/hidden-ivars/TestHiddenIvars.py b/lldb/test/API/lang/objc/hidden-ivars/TestHiddenIvars.py
index 4a16a8011c18..9fcd31cebf7e 100644
--- a/lldb/test/API/lang/objc/hidden-ivars/TestHiddenIvars.py
+++ b/lldb/test/API/lang/objc/hidden-ivars/TestHiddenIvars.py
@@ -26,7 +26,6 @@ def setUp(self):
         # localized
         self.shlib_names = ["InternalDefiner"]
 
-    @skipUnlessDarwin
     @skipIf(
         debug_info=no_match("dsym"),
         bugnumber="This test requires a stripped binary and a dSYM")
@@ -38,7 +37,6 @@ def test_expr_stripped(self):
             self.build()
             self.expr(True)
 
-    @skipUnlessDarwin
     @skipIfReproducer # FIXME: Unexpected packet during (passive) replay
     def test_expr(self):
         if self.getArchitecture() == 'i386':
@@ -47,7 +45,6 @@ def test_expr(self):
             self.build()
             self.expr(False)
 
-    @skipUnlessDarwin
     @skipIf(
         debug_info=no_match("dsym"),
         bugnumber="This test requires a stripped binary and a dSYM")
@@ -58,7 +55,6 @@ def test_frame_variable_stripped(self):
             self.build()
             self.frame_var(True)
 
-    @skipUnlessDarwin
     def test_frame_variable(self):
         if self.getArchitecture() == 'i386':
             self.skipTest("requires modern objc runtime")
@@ -67,7 +63,6 @@ def test_frame_variable(self):
             self.frame_var(False)
 
     @expectedFailure("rdar://18683637")
-    @skipUnlessDarwin
     def test_frame_variable_across_modules(self):
         if self.getArchitecture() == 'i386':
             self.skipTest("requires modern objc runtime")

diff  --git a/lldb/test/API/lang/objc/ivar-IMP/TestObjCiVarIMP.py b/lldb/test/API/lang/objc/ivar-IMP/TestObjCiVarIMP.py
index 7224ccf786d0..f3183d5bd1ef 100644
--- a/lldb/test/API/lang/objc/ivar-IMP/TestObjCiVarIMP.py
+++ b/lldb/test/API/lang/objc/ivar-IMP/TestObjCiVarIMP.py
@@ -15,7 +15,6 @@ class ObjCiVarIMPTestCase(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)
 
-    @skipUnlessDarwin
     @skipIf(archs=['i386'])  # objc file does not build for i386
     @no_debug_info_test
     def test_imp_ivar_type(self):

diff  --git a/lldb/test/API/lang/objc/modules-app-update/TestClangModulesAppUpdate.py b/lldb/test/API/lang/objc/modules-app-update/TestClangModulesAppUpdate.py
index 4bd136b72854..29c4872e0261 100644
--- a/lldb/test/API/lang/objc/modules-app-update/TestClangModulesAppUpdate.py
+++ b/lldb/test/API/lang/objc/modules-app-update/TestClangModulesAppUpdate.py
@@ -12,7 +12,6 @@
 class TestClangModuleAppUpdate(TestBase):
     mydir = TestBase.compute_mydir(__file__)
 
-    @skipUnlessDarwin
     @skipIf(debug_info=no_match(["gmodules"]))
     def test_rebuild_app_modules_untouched(self):
         with open(self.getBuildArtifact("module.modulemap"), "w") as f:

diff  --git a/lldb/test/API/lang/objc/modules-auto-import/TestModulesAutoImport.py b/lldb/test/API/lang/objc/modules-auto-import/TestModulesAutoImport.py
index 449e5b50d05d..3b01858549ba 100644
--- a/lldb/test/API/lang/objc/modules-auto-import/TestModulesAutoImport.py
+++ b/lldb/test/API/lang/objc/modules-auto-import/TestModulesAutoImport.py
@@ -20,7 +20,6 @@ def setUp(self):
         # Find the line number to break inside main().
         self.line = line_number('main.m', '// Set breakpoint 0 here.')
 
-    @skipUnlessDarwin
     @skipIf(macos_version=["<", "10.12"])
     def test_expr(self):
         self.build()

diff  --git a/lldb/test/API/lang/objc/modules-cache/TestClangModulesCache.py b/lldb/test/API/lang/objc/modules-cache/TestClangModulesCache.py
index 3a12b23a79c0..0e241227f8ec 100644
--- a/lldb/test/API/lang/objc/modules-cache/TestClangModulesCache.py
+++ b/lldb/test/API/lang/objc/modules-cache/TestClangModulesCache.py
@@ -16,7 +16,6 @@ class ObjCModulesTestCase(TestBase):
     NO_DEBUG_INFO_TESTCASE = True
     mydir = TestBase.compute_mydir(__file__)
 
-    @skipUnlessDarwin
     def test_expr(self):
         self.build()
         self.main_source_file = lldb.SBFileSpec("main.m")

diff  --git a/lldb/test/API/lang/objc/modules-compile-error/TestModulesCompileError.py b/lldb/test/API/lang/objc/modules-compile-error/TestModulesCompileError.py
index a422e8d77550..610d001a6783 100644
--- a/lldb/test/API/lang/objc/modules-compile-error/TestModulesCompileError.py
+++ b/lldb/test/API/lang/objc/modules-compile-error/TestModulesCompileError.py
@@ -7,7 +7,6 @@ class TestCase(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)
 
-    @skipUnlessDarwin
     def test(self):
         self.build()
         lldbutil.run_to_source_breakpoint(self, "// break here", lldb.SBFileSpec("main.m"))

diff  --git a/lldb/test/API/lang/objc/modules-hash-mismatch/TestClangModulesHashMismatch.py b/lldb/test/API/lang/objc/modules-hash-mismatch/TestClangModulesHashMismatch.py
index d7cb91530c07..4dd8a7ad7eb1 100644
--- a/lldb/test/API/lang/objc/modules-hash-mismatch/TestClangModulesHashMismatch.py
+++ b/lldb/test/API/lang/objc/modules-hash-mismatch/TestClangModulesHashMismatch.py
@@ -12,7 +12,6 @@
 class TestClangModuleHashMismatch(TestBase):
     mydir = TestBase.compute_mydir(__file__)
 
-    @skipUnlessDarwin
     @skipIf(debug_info=no_match(["gmodules"]))
     def test_expr(self):
         with open(self.getBuildArtifact("module.modulemap"), "w") as f:

diff  --git a/lldb/test/API/lang/objc/modules-incomplete/TestIncompleteModules.py b/lldb/test/API/lang/objc/modules-incomplete/TestIncompleteModules.py
index 8fed6133f7d0..4d18c04e8a5e 100644
--- a/lldb/test/API/lang/objc/modules-incomplete/TestIncompleteModules.py
+++ b/lldb/test/API/lang/objc/modules-incomplete/TestIncompleteModules.py
@@ -19,7 +19,6 @@ def setUp(self):
         # Find the line number to break inside main().
         self.line = line_number('main.m', '// Set breakpoint 0 here.')
 
-    @skipUnlessDarwin
     @skipIf(debug_info=no_match(["gmodules"]))
     def test_expr(self):
         self.build()

diff  --git a/lldb/test/API/lang/objc/modules-inline-functions/TestModulesInlineFunctions.py b/lldb/test/API/lang/objc/modules-inline-functions/TestModulesInlineFunctions.py
index e2e335a1c433..a71e72f828d4 100644
--- a/lldb/test/API/lang/objc/modules-inline-functions/TestModulesInlineFunctions.py
+++ b/lldb/test/API/lang/objc/modules-inline-functions/TestModulesInlineFunctions.py
@@ -15,7 +15,6 @@ class ModulesInlineFunctionsTestCase(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)
 
-    @skipUnlessDarwin
     @skipIf(macos_version=["<", "10.12"], debug_info=no_match(["gmodules"]))
     def test_expr(self):
         self.build()

diff  --git a/lldb/test/API/lang/objc/modules-non-objc-target/TestObjCModulesNonObjCTarget.py b/lldb/test/API/lang/objc/modules-non-objc-target/TestObjCModulesNonObjCTarget.py
index 42d852f5763e..036d9dcd7ed7 100644
--- a/lldb/test/API/lang/objc/modules-non-objc-target/TestObjCModulesNonObjCTarget.py
+++ b/lldb/test/API/lang/objc/modules-non-objc-target/TestObjCModulesNonObjCTarget.py
@@ -11,7 +11,6 @@ class TestCase(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)
 
-    @skipUnlessDarwin
     def test(self):
         self.build()
         lldbutil.run_to_source_breakpoint(self,"// break here", lldb.SBFileSpec("main.c"))

diff  --git a/lldb/test/API/lang/objc/modules-update/TestClangModulesUpdate.py b/lldb/test/API/lang/objc/modules-update/TestClangModulesUpdate.py
index 13820b56688b..a24acc249de9 100644
--- a/lldb/test/API/lang/objc/modules-update/TestClangModulesUpdate.py
+++ b/lldb/test/API/lang/objc/modules-update/TestClangModulesUpdate.py
@@ -12,7 +12,6 @@
 class TestClangModuleUpdate(TestBase):
     mydir = TestBase.compute_mydir(__file__)
 
-    @skipUnlessDarwin
     @skipIf(debug_info=no_match(["gmodules"]))
     @skipIfReproducer # VFS is a snapshot.
     def test_expr(self):

diff  --git a/lldb/test/API/lang/objc/modules/TestObjCModules.py b/lldb/test/API/lang/objc/modules/TestObjCModules.py
index f6f9111f7641..6b1b60e36877 100644
--- a/lldb/test/API/lang/objc/modules/TestObjCModules.py
+++ b/lldb/test/API/lang/objc/modules/TestObjCModules.py
@@ -20,7 +20,6 @@ def setUp(self):
         # Find the line number to break inside main().
         self.line = line_number('main.m', '// Set breakpoint 0 here.')
 
-    @skipUnlessDarwin
     @skipIf(macos_version=["<", "10.12"])
     @skipIfReproducer # FIXME: Unexpected packet during (active) replay
     def test_expr(self):

diff  --git a/lldb/test/API/lang/objc/objc++/TestObjCXX.py b/lldb/test/API/lang/objc/objc++/TestObjCXX.py
index 344af99f589b..d04fba7cc225 100644
--- a/lldb/test/API/lang/objc/objc++/TestObjCXX.py
+++ b/lldb/test/API/lang/objc/objc++/TestObjCXX.py
@@ -14,7 +14,6 @@ class ObjCXXTestCase(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)
 
-    @skipUnlessDarwin
     def test_break(self):
         """Test ivars of Objective-C++ classes"""
         if self.getArchitecture() == 'i386':

diff  --git a/lldb/test/API/lang/objc/objc-baseclass-sbtype/TestObjCBaseClassSBType.py b/lldb/test/API/lang/objc/objc-baseclass-sbtype/TestObjCBaseClassSBType.py
index 1cd2e6c48886..4d75a91c6505 100644
--- a/lldb/test/API/lang/objc/objc-baseclass-sbtype/TestObjCBaseClassSBType.py
+++ b/lldb/test/API/lang/objc/objc-baseclass-sbtype/TestObjCBaseClassSBType.py
@@ -20,7 +20,6 @@ def setUp(self):
 
         self.line = line_number('main.m', '// Set breakpoint here.')
 
-    @skipUnlessDarwin
     @add_test_categories(['pyapi'])
     def test_get_baseclass(self):
         """Test fetching ObjC dynamic values."""

diff  --git a/lldb/test/API/lang/objc/objc-builtin-types/TestObjCBuiltinTypes.py b/lldb/test/API/lang/objc/objc-builtin-types/TestObjCBuiltinTypes.py
index 442272976069..2e6f6a5274dd 100644
--- a/lldb/test/API/lang/objc/objc-builtin-types/TestObjCBuiltinTypes.py
+++ b/lldb/test/API/lang/objc/objc-builtin-types/TestObjCBuiltinTypes.py
@@ -20,7 +20,6 @@ def setUp(self):
         self.break_line = line_number(
             self.main_source, '// Set breakpoint here.')
 
-    @skipUnlessDarwin
     @add_test_categories(['pyapi'])
     #<rdar://problem/10591460> [regression] Can't print ivar value: error: reference to 'id' is ambiguous
     def test_with_python_api(self):

diff  --git a/lldb/test/API/lang/objc/objc-checker/TestObjCCheckers.py b/lldb/test/API/lang/objc/objc-checker/TestObjCCheckers.py
index ac2dc2a3899e..19335959313a 100644
--- a/lldb/test/API/lang/objc/objc-checker/TestObjCCheckers.py
+++ b/lldb/test/API/lang/objc/objc-checker/TestObjCCheckers.py
@@ -23,7 +23,6 @@ def setUp(self):
         # Find the line number to break for main.c.
         self.source_name = 'main.m'
 
-    @skipUnlessDarwin
     @add_test_categories(['pyapi'])
     def test_objc_checker(self):
         """Test that checkers catch unrecognized selectors"""

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 46cddd635c0c..eb6ab2a5b6d8 100644
--- a/lldb/test/API/lang/objc/objc-class-method/TestObjCClassMethod.py
+++ b/lldb/test/API/lang/objc/objc-class-method/TestObjCClassMethod.py
@@ -21,7 +21,6 @@ def setUp(self):
         self.break_line = line_number(
             self.main_source, '// Set breakpoint here.')
 
-    @skipUnlessDarwin
     @add_test_categories(['pyapi'])
     def test_with_python_api(self):
         """Test calling functions in class methods."""

diff  --git a/lldb/test/API/lang/objc/objc-dyn-sbtype/TestObjCDynamicSBType.py b/lldb/test/API/lang/objc/objc-dyn-sbtype/TestObjCDynamicSBType.py
index 1851bc332646..4ae5ba879d3a 100644
--- a/lldb/test/API/lang/objc/objc-dyn-sbtype/TestObjCDynamicSBType.py
+++ b/lldb/test/API/lang/objc/objc-dyn-sbtype/TestObjCDynamicSBType.py
@@ -10,7 +10,6 @@
 from lldbsuite.test import lldbutil
 
 
- at skipUnlessDarwin
 class ObjCDynamicSBTypeTestCase(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)

diff  --git a/lldb/test/API/lang/objc/objc-dynamic-value/TestObjCDynamicValue.py b/lldb/test/API/lang/objc/objc-dynamic-value/TestObjCDynamicValue.py
index 118ebab54c6b..ed0f73af8bb2 100644
--- a/lldb/test/API/lang/objc/objc-dynamic-value/TestObjCDynamicValue.py
+++ b/lldb/test/API/lang/objc/objc-dynamic-value/TestObjCDynamicValue.py
@@ -29,7 +29,6 @@ def setUp(self):
         self.main_before_setProperty_line = line_number(
             self.source_name, '// Break here to see if we can step into real method.')
 
-    @skipUnlessDarwin
     @add_test_categories(['pyapi'])
     @expectedFailureDarwin("llvm.org/pr20271 rdar://18684107")
     def test_get_objc_dynamic_vals(self):

diff  --git a/lldb/test/API/lang/objc/objc-foundation-dictionary-empty/TestNSDictionary0.py b/lldb/test/API/lang/objc/objc-foundation-dictionary-empty/TestNSDictionary0.py
index f0152de1ac33..4c9058c15386 100644
--- a/lldb/test/API/lang/objc/objc-foundation-dictionary-empty/TestNSDictionary0.py
+++ b/lldb/test/API/lang/objc/objc-foundation-dictionary-empty/TestNSDictionary0.py
@@ -1,5 +1,3 @@
 from lldbsuite.test import lldbinline
-from lldbsuite.test import decorators
 
-lldbinline.MakeInlineTest(
-    __file__, globals(), [decorators.skipUnlessDarwin])
+lldbinline.MakeInlineTest(__file__, globals(), [])

diff  --git a/lldb/test/API/lang/objc/objc-ivar-offsets/TestObjCIvarOffsets.py b/lldb/test/API/lang/objc/objc-ivar-offsets/TestObjCIvarOffsets.py
index 6edeb923a132..1c9ecae0f6c2 100644
--- a/lldb/test/API/lang/objc/objc-ivar-offsets/TestObjCIvarOffsets.py
+++ b/lldb/test/API/lang/objc/objc-ivar-offsets/TestObjCIvarOffsets.py
@@ -20,7 +20,6 @@ def setUp(self):
         self.stop_line = line_number(
             self.main_source, '// Set breakpoint here.')
 
-    @skipUnlessDarwin
     @add_test_categories(['pyapi'])
     def test_with_python_api(self):
         """Test printing ObjC objects that use unbacked properties"""

diff  --git a/lldb/test/API/lang/objc/objc-ivar-protocols/TestIvarProtocols.py b/lldb/test/API/lang/objc/objc-ivar-protocols/TestIvarProtocols.py
index f0152de1ac33..4c9058c15386 100644
--- a/lldb/test/API/lang/objc/objc-ivar-protocols/TestIvarProtocols.py
+++ b/lldb/test/API/lang/objc/objc-ivar-protocols/TestIvarProtocols.py
@@ -1,5 +1,3 @@
 from lldbsuite.test import lldbinline
-from lldbsuite.test import decorators
 
-lldbinline.MakeInlineTest(
-    __file__, globals(), [decorators.skipUnlessDarwin])
+lldbinline.MakeInlineTest(__file__, globals(), [])

diff  --git a/lldb/test/API/lang/objc/objc-ivar-stripped/TestObjCIvarStripped.py b/lldb/test/API/lang/objc/objc-ivar-stripped/TestObjCIvarStripped.py
index 2d33a2ebbc67..2892d647e1ba 100644
--- a/lldb/test/API/lang/objc/objc-ivar-stripped/TestObjCIvarStripped.py
+++ b/lldb/test/API/lang/objc/objc-ivar-stripped/TestObjCIvarStripped.py
@@ -20,7 +20,6 @@ def setUp(self):
         self.stop_line = line_number(
             self.main_source, '// Set breakpoint here.')
 
-    @skipUnlessDarwin
     @skipIf(
         debug_info=no_match("dsym"),
         bugnumber="This test requires a stripped binary and a dSYM")

diff  --git a/lldb/test/API/lang/objc/objc-new-syntax/TestObjCNewSyntaxArray.py b/lldb/test/API/lang/objc/objc-new-syntax/TestObjCNewSyntaxArray.py
index cf638c7a1085..e106a2f3a5db 100644
--- a/lldb/test/API/lang/objc/objc-new-syntax/TestObjCNewSyntaxArray.py
+++ b/lldb/test/API/lang/objc/objc-new-syntax/TestObjCNewSyntaxArray.py
@@ -11,7 +11,6 @@
 
 class ObjCNewSyntaxTestCaseArray(ObjCNewSyntaxTest):
 
-    @skipUnlessDarwin
     @skipIf(macos_version=["<", "10.12"])
     @expectedFailureAll(archs=["i[3-6]86"])
     def test_read_array(self):
@@ -27,7 +26,6 @@ def test_read_array(self):
             VARIABLES_DISPLAYED_CORRECTLY,
             substrs=["foo"])
 
-    @skipUnlessDarwin
     @skipIf(macos_version=["<", "10.12"])
     @expectedFailureAll(archs=["i[3-6]86"])
     def test_update_array(self):
@@ -43,7 +41,6 @@ def test_update_array(self):
             VARIABLES_DISPLAYED_CORRECTLY,
             substrs=["bar"])
 
-    @skipUnlessDarwin
     @skipIf(macos_version=["<", "10.12"])
     @expectedFailureAll(archs=["i[3-6]86"])
     def test_array_literal(self):

diff  --git a/lldb/test/API/lang/objc/objc-new-syntax/TestObjCNewSyntaxDictionary.py b/lldb/test/API/lang/objc/objc-new-syntax/TestObjCNewSyntaxDictionary.py
index 5291b46da2fe..12628cf7d8b6 100644
--- a/lldb/test/API/lang/objc/objc-new-syntax/TestObjCNewSyntaxDictionary.py
+++ b/lldb/test/API/lang/objc/objc-new-syntax/TestObjCNewSyntaxDictionary.py
@@ -11,7 +11,6 @@
 
 class ObjCNewSyntaxTestCaseDictionary(ObjCNewSyntaxTest):
 
-    @skipUnlessDarwin
     @skipIf(macos_version=["<", "10.12"])
     @expectedFailureAll(archs=["i[3-6]86"])
     def test_read_dictionary(self):
@@ -27,7 +26,6 @@ def test_read_dictionary(self):
             VARIABLES_DISPLAYED_CORRECTLY,
             substrs=["value"])
 
-    @skipUnlessDarwin
     @skipIf(macos_version=["<", "10.12"])
     @expectedFailureAll(archs=["i[3-6]86"])
     def test_update_dictionary(self):
@@ -43,7 +41,6 @@ def test_update_dictionary(self):
             VARIABLES_DISPLAYED_CORRECTLY,
             substrs=["object"])
 
-    @skipUnlessDarwin
     @skipIf(macos_version=["<", "10.12"])
     @expectedFailureAll(archs=["i[3-6]86"])
     def test_dictionary_literal(self):

diff  --git a/lldb/test/API/lang/objc/objc-new-syntax/TestObjCNewSyntaxLiteral.py b/lldb/test/API/lang/objc/objc-new-syntax/TestObjCNewSyntaxLiteral.py
index e17343bed72e..c67239d8d7b8 100644
--- a/lldb/test/API/lang/objc/objc-new-syntax/TestObjCNewSyntaxLiteral.py
+++ b/lldb/test/API/lang/objc/objc-new-syntax/TestObjCNewSyntaxLiteral.py
@@ -11,7 +11,6 @@
 
 class ObjCNewSyntaxTestCaseLiteral(ObjCNewSyntaxTest):
 
-    @skipUnlessDarwin
     @skipIf(macos_version=["<", "10.12"])
     @expectedFailureAll(archs=["i[3-6]86"])
     def test_char_literal(self):
@@ -20,7 +19,6 @@ def test_char_literal(self):
         self.expect("expr --object-description -- @'a'",
                     VARIABLES_DISPLAYED_CORRECTLY, substrs=[str(ord('a'))])
 
-    @skipUnlessDarwin
     @skipIf(macos_version=["<", "10.12"])
     @expectedFailureAll(archs=["i[3-6]86"])
     def test_integer_literals(self):
@@ -51,7 +49,6 @@ def test_integer_literals(self):
             VARIABLES_DISPLAYED_CORRECTLY,
             substrs=["1"])
 
-    @skipUnlessDarwin
     @skipIf(macos_version=["<", "10.12"])
     @expectedFailureAll(archs=["i[3-6]86"])
     def test_float_literal(self):
@@ -60,7 +57,6 @@ def test_float_literal(self):
         self.expect("expr -- @123.45", VARIABLES_DISPLAYED_CORRECTLY,
                     substrs=["NSNumber", "123.45"])
 
-    @skipUnlessDarwin
     @skipIf(macos_version=["<", "10.12"])
     @expectedFailureAll(archs=["i[3-6]86"])
     def test_expressions_in_literals(self):

diff  --git a/lldb/test/API/lang/objc/objc-optimized/TestObjcOptimized.py b/lldb/test/API/lang/objc/objc-optimized/TestObjcOptimized.py
index 6209f14e7e41..702a30bf43af 100644
--- a/lldb/test/API/lang/objc/objc-optimized/TestObjcOptimized.py
+++ b/lldb/test/API/lang/objc/objc-optimized/TestObjcOptimized.py
@@ -19,7 +19,6 @@
 # test failure: objc_optimized does not work for "-C clang -A i386"
 
 
- at skipUnlessDarwin
 class ObjcOptimizedTestCase(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)

diff  --git a/lldb/test/API/lang/objc/objc-property/TestObjCProperty.py b/lldb/test/API/lang/objc/objc-property/TestObjCProperty.py
index fb01b35461a0..5693a77547cc 100644
--- a/lldb/test/API/lang/objc/objc-property/TestObjCProperty.py
+++ b/lldb/test/API/lang/objc/objc-property/TestObjCProperty.py
@@ -21,7 +21,6 @@ def setUp(self):
         # Find the line number to break for main.c.
         self.source_name = 'main.m'
 
-    @skipUnlessDarwin
     @add_test_categories(['pyapi'])
     def test_objc_properties(self):
         """Test that expr uses the correct property getters and setters"""

diff  --git a/lldb/test/API/lang/objc/objc-runtime-ivars/TestRuntimeIvars.py b/lldb/test/API/lang/objc/objc-runtime-ivars/TestRuntimeIvars.py
index 41719ec68aea..1e38abe12e34 100644
--- a/lldb/test/API/lang/objc/objc-runtime-ivars/TestRuntimeIvars.py
+++ b/lldb/test/API/lang/objc/objc-runtime-ivars/TestRuntimeIvars.py
@@ -3,5 +3,4 @@
 
 lldbinline.MakeInlineTest(
     __file__, globals(), [
-        decorators.skipUnlessDarwin,
         decorators.skipIf(archs=["i386", "i686"])])

diff  --git a/lldb/test/API/lang/objc/objc-static-method-stripped/TestObjCStaticMethodStripped.py b/lldb/test/API/lang/objc/objc-static-method-stripped/TestObjCStaticMethodStripped.py
index 8993a000ead6..4368eea8415a 100644
--- a/lldb/test/API/lang/objc/objc-static-method-stripped/TestObjCStaticMethodStripped.py
+++ b/lldb/test/API/lang/objc/objc-static-method-stripped/TestObjCStaticMethodStripped.py
@@ -20,7 +20,6 @@ def setUp(self):
         self.break_line = line_number(
             self.main_source, '// Set breakpoint here.')
 
-    @skipUnlessDarwin
     @add_test_categories(['pyapi'])
     @skipIf(
         debug_info=no_match("dsym"),

diff  --git a/lldb/test/API/lang/objc/objc-static-method/TestObjCStaticMethod.py b/lldb/test/API/lang/objc/objc-static-method/TestObjCStaticMethod.py
index 4acd50cf2c95..6361984100ef 100644
--- a/lldb/test/API/lang/objc/objc-static-method/TestObjCStaticMethod.py
+++ b/lldb/test/API/lang/objc/objc-static-method/TestObjCStaticMethod.py
@@ -20,7 +20,6 @@ def setUp(self):
         self.break_line = line_number(
             self.main_source, '// Set breakpoint here.')
 
-    @skipUnlessDarwin
     @add_test_categories(['pyapi'])
     #<rdar://problem/9745789> "expression" can't call functions in class methods
     def test_with_python_api(self):

diff  --git a/lldb/test/API/lang/objc/objc-stepping/TestObjCStepping.py b/lldb/test/API/lang/objc/objc-stepping/TestObjCStepping.py
index 8fb485847b44..aa90c237094a 100644
--- a/lldb/test/API/lang/objc/objc-stepping/TestObjCStepping.py
+++ b/lldb/test/API/lang/objc/objc-stepping/TestObjCStepping.py
@@ -29,7 +29,6 @@ def setUp(self):
         self.stepped_past_nil_line = line_number(
             self.main_source, '// Step over nil should stop here.')
 
-    @skipUnlessDarwin
     @add_test_categories(['pyapi', 'basic_process'])
     def test_with_python_api(self):
         """Test stepping through ObjC method dispatch in various forms."""

diff  --git a/lldb/test/API/lang/objc/objc-struct-argument/TestObjCStructArgument.py b/lldb/test/API/lang/objc/objc-struct-argument/TestObjCStructArgument.py
index 201abfbca1b8..3530ebceef58 100644
--- a/lldb/test/API/lang/objc/objc-struct-argument/TestObjCStructArgument.py
+++ b/lldb/test/API/lang/objc/objc-struct-argument/TestObjCStructArgument.py
@@ -20,7 +20,6 @@ def setUp(self):
         self.break_line = line_number(
             self.main_source, '// Set breakpoint here.')
 
-    @skipUnlessDarwin
     @add_test_categories(['pyapi'])
     @skipIf(debug_info=no_match(["gmodules"]), oslist=['ios', 'watchos', 'tvos', 'bridgeos'], archs=['armv7', 'arm64'])  # this test program only builds for ios with -gmodules
     def test_with_python_api(self):

diff  --git a/lldb/test/API/lang/objc/objc-struct-return/TestObjCStructReturn.py b/lldb/test/API/lang/objc/objc-struct-return/TestObjCStructReturn.py
index e5e010c04ee6..8fe0aea9d2f7 100644
--- a/lldb/test/API/lang/objc/objc-struct-return/TestObjCStructReturn.py
+++ b/lldb/test/API/lang/objc/objc-struct-return/TestObjCStructReturn.py
@@ -20,7 +20,6 @@ def setUp(self):
         self.break_line = line_number(
             self.main_source, '// Set breakpoint here.')
 
-    @skipUnlessDarwin
     @add_test_categories(['pyapi'])
     def test_with_python_api(self):
         """Test calling functions in class methods."""

diff  --git a/lldb/test/API/lang/objc/objc-super/TestObjCSuper.py b/lldb/test/API/lang/objc/objc-super/TestObjCSuper.py
index 61df94166f00..47f7dd907662 100644
--- a/lldb/test/API/lang/objc/objc-super/TestObjCSuper.py
+++ b/lldb/test/API/lang/objc/objc-super/TestObjCSuper.py
@@ -20,7 +20,6 @@ def setUp(self):
         self.break_line = line_number(
             self.main_source, '// Set breakpoint here.')
 
-    @skipUnlessDarwin
     @add_test_categories(['pyapi'])
     def test_with_python_api(self):
         """Test calling methods on super."""

diff  --git a/lldb/test/API/lang/objc/objc_direct-methods/TestObjCDirectMethods.py b/lldb/test/API/lang/objc/objc_direct-methods/TestObjCDirectMethods.py
index f0152de1ac33..9fbf972ad8ea 100644
--- a/lldb/test/API/lang/objc/objc_direct-methods/TestObjCDirectMethods.py
+++ b/lldb/test/API/lang/objc/objc_direct-methods/TestObjCDirectMethods.py
@@ -1,5 +1,4 @@
 from lldbsuite.test import lldbinline
-from lldbsuite.test import decorators
 
 lldbinline.MakeInlineTest(
-    __file__, globals(), [decorators.skipUnlessDarwin])
+    __file__, globals(), [])

diff  --git a/lldb/test/API/lang/objc/orderedset/TestOrderedSet.py b/lldb/test/API/lang/objc/orderedset/TestOrderedSet.py
index 90c6bc32f772..80cb97a9d108 100644
--- a/lldb/test/API/lang/objc/orderedset/TestOrderedSet.py
+++ b/lldb/test/API/lang/objc/orderedset/TestOrderedSet.py
@@ -6,7 +6,6 @@
 class TestOrderedSet(TestBase):
   mydir = TestBase.compute_mydir(__file__)
 
-  @skipUnlessDarwin
   def test_ordered_set(self):
     self.build()
     src_file = "main.m"

diff  --git a/lldb/test/API/lang/objc/print-obj/TestPrintObj.py b/lldb/test/API/lang/objc/print-obj/TestPrintObj.py
index dc66e788990d..d46bd01f5fd3 100644
--- a/lldb/test/API/lang/objc/print-obj/TestPrintObj.py
+++ b/lldb/test/API/lang/objc/print-obj/TestPrintObj.py
@@ -11,7 +11,6 @@
 from lldbsuite.test import lldbutil
 
 
- at skipUnlessDarwin
 class PrintObjTestCase(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)

diff  --git a/lldb/test/API/lang/objc/ptr_refs/TestPtrRefsObjC.py b/lldb/test/API/lang/objc/ptr_refs/TestPtrRefsObjC.py
index 7767f7b45720..b97a7f59ad65 100644
--- a/lldb/test/API/lang/objc/ptr_refs/TestPtrRefsObjC.py
+++ b/lldb/test/API/lang/objc/ptr_refs/TestPtrRefsObjC.py
@@ -14,7 +14,6 @@ class TestPtrRefsObjC(TestBase):
     mydir = TestBase.compute_mydir(__file__)
 
     @skipIfAsan # The output looks 
diff erent under ASAN.
-    @skipUnlessDarwin
     def test_ptr_refs(self):
         """Test the ptr_refs tool on Darwin with Objective-C"""
         self.build()

diff  --git a/lldb/test/API/lang/objc/radar-9691614/TestObjCMethodReturningBOOL.py b/lldb/test/API/lang/objc/radar-9691614/TestObjCMethodReturningBOOL.py
index ea4683051a4b..18084fd85ea0 100644
--- a/lldb/test/API/lang/objc/radar-9691614/TestObjCMethodReturningBOOL.py
+++ b/lldb/test/API/lang/objc/radar-9691614/TestObjCMethodReturningBOOL.py
@@ -10,7 +10,6 @@
 from lldbsuite.test import lldbutil
 
 
- at skipUnlessDarwin
 class MethodReturningBOOLTestCase(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)

diff  --git a/lldb/test/API/lang/objc/rdar-10967107/TestRdar10967107.py b/lldb/test/API/lang/objc/rdar-10967107/TestRdar10967107.py
index c6633b7fe52c..e7a9979eaa52 100644
--- a/lldb/test/API/lang/objc/rdar-10967107/TestRdar10967107.py
+++ b/lldb/test/API/lang/objc/rdar-10967107/TestRdar10967107.py
@@ -10,7 +10,6 @@
 from lldbsuite.test import lldbutil
 
 
- at skipUnlessDarwin
 class Rdar10967107TestCase(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)

diff  --git a/lldb/test/API/lang/objc/rdar-11355592/TestRdar11355592.py b/lldb/test/API/lang/objc/rdar-11355592/TestRdar11355592.py
index f9e825ada43d..2ec1b5f8b473 100644
--- a/lldb/test/API/lang/objc/rdar-11355592/TestRdar11355592.py
+++ b/lldb/test/API/lang/objc/rdar-11355592/TestRdar11355592.py
@@ -10,7 +10,6 @@
 from lldbsuite.test import lldbutil
 
 
- at skipUnlessDarwin
 class Rdar10967107TestCase(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)

diff  --git a/lldb/test/API/lang/objc/rdar-12408181/TestRdar12408181.py b/lldb/test/API/lang/objc/rdar-12408181/TestRdar12408181.py
index 8f262a3413dd..fe9d58ece52f 100644
--- a/lldb/test/API/lang/objc/rdar-12408181/TestRdar12408181.py
+++ b/lldb/test/API/lang/objc/rdar-12408181/TestRdar12408181.py
@@ -15,7 +15,6 @@
 # test if WindowServer isn't available.
 # Note: Simply applying the @skipIf decorator here confuses the test harness
 # and gives a spurious failure.
- at skipUnlessDarwin
 class Rdar12408181TestCase(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)

diff  --git a/lldb/test/API/lang/objc/real-definition/TestRealDefinition.py b/lldb/test/API/lang/objc/real-definition/TestRealDefinition.py
index 002bc6cbf820..9c84ffa0e00c 100644
--- a/lldb/test/API/lang/objc/real-definition/TestRealDefinition.py
+++ b/lldb/test/API/lang/objc/real-definition/TestRealDefinition.py
@@ -12,7 +12,6 @@ class TestRealDefinition(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)
 
-    @skipUnlessDarwin
     def test_frame_var_after_stop_at_interface(self):
         """Test that we can find the implementation for an objective C type"""
         if self.getArchitecture() == 'i386':
@@ -50,7 +49,6 @@ def test_frame_var_after_stop_at_interface(self):
                 "(NSString *)",
                 "foo->_bar->_hidden_ivar = 0x"])
 
-    @skipUnlessDarwin
     def test_frame_var_after_stop_at_implementation(self):
         """Test that we can find the implementation for an objective C type"""
         if self.getArchitecture() == 'i386':

diff  --git a/lldb/test/API/lang/objc/self/TestObjCSelf.py b/lldb/test/API/lang/objc/self/TestObjCSelf.py
index 81d6b79ad535..5773cdccee5d 100644
--- a/lldb/test/API/lang/objc/self/TestObjCSelf.py
+++ b/lldb/test/API/lang/objc/self/TestObjCSelf.py
@@ -11,7 +11,6 @@ class ObjCSelfTestCase(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)
 
-    @skipUnlessDarwin
     def test_with_run_command(self):
         """Test that the appropriate member variables are available when stopped in Objective-C class and instance methods"""
         self.build()

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 85ad6286716a..54a265d6a57e 100644
--- a/lldb/test/API/lang/objc/single-entry-dictionary/TestObjCSingleEntryDictionary.py
+++ b/lldb/test/API/lang/objc/single-entry-dictionary/TestObjCSingleEntryDictionary.py
@@ -21,7 +21,6 @@ def setUp(self):
         # Find the line number to break inside main().
         self.line = line_number('main.m', '// break here')
 
-    @skipUnlessDarwin
     @expectedFailureAll(oslist=['watchos'], bugnumber="rdar://problem/34642736") # bug in NSDictionary formatting on watchos
     def test_single_entry_dict(self):
         self.build()

diff  --git a/lldb/test/API/lang/objc/unicode-string/TestUnicodeString.py b/lldb/test/API/lang/objc/unicode-string/TestUnicodeString.py
index c9986aafd7d1..9fbf972ad8ea 100644
--- a/lldb/test/API/lang/objc/unicode-string/TestUnicodeString.py
+++ b/lldb/test/API/lang/objc/unicode-string/TestUnicodeString.py
@@ -1,6 +1,4 @@
 from lldbsuite.test import lldbinline
-from lldbsuite.test import decorators
 
 lldbinline.MakeInlineTest(
-    __file__, globals(), [
-        decorators.skipUnlessDarwin])
+    __file__, globals(), [])

diff  --git a/lldb/test/API/lang/objc/variadic_methods/TestVariadicMethods.py b/lldb/test/API/lang/objc/variadic_methods/TestVariadicMethods.py
index f0152de1ac33..4c9058c15386 100644
--- a/lldb/test/API/lang/objc/variadic_methods/TestVariadicMethods.py
+++ b/lldb/test/API/lang/objc/variadic_methods/TestVariadicMethods.py
@@ -1,5 +1,3 @@
 from lldbsuite.test import lldbinline
-from lldbsuite.test import decorators
 
-lldbinline.MakeInlineTest(
-    __file__, globals(), [decorators.skipUnlessDarwin])
+lldbinline.MakeInlineTest(__file__, globals(), [])

diff  --git a/lldb/test/API/lang/objcxx/.categories b/lldb/test/API/lang/objcxx/.categories
new file mode 100644
index 000000000000..72cf07c1efea
--- /dev/null
+++ b/lldb/test/API/lang/objcxx/.categories
@@ -0,0 +1 @@
+objc

diff  --git a/lldb/test/API/lang/objcxx/class-name-clash/TestNameClash.py b/lldb/test/API/lang/objcxx/class-name-clash/TestNameClash.py
index 4ba088e4b035..3482b757fdf8 100644
--- a/lldb/test/API/lang/objcxx/class-name-clash/TestNameClash.py
+++ b/lldb/test/API/lang/objcxx/class-name-clash/TestNameClash.py
@@ -1,5 +1,4 @@
 from lldbsuite.test import decorators
 from lldbsuite.test import lldbinline
 
-lldbinline.MakeInlineTest(
-    __file__, globals(), [decorators.skipUnlessDarwin])
+lldbinline.MakeInlineTest(__file__, globals(), [])

diff  --git a/lldb/test/API/lang/objcxx/cxx-bridged-po/TestObjCXXBridgedPO.py b/lldb/test/API/lang/objcxx/cxx-bridged-po/TestObjCXXBridgedPO.py
index 6f3275b861ce..fe0be0553e4d 100644
--- a/lldb/test/API/lang/objcxx/cxx-bridged-po/TestObjCXXBridgedPO.py
+++ b/lldb/test/API/lang/objcxx/cxx-bridged-po/TestObjCXXBridgedPO.py
@@ -7,7 +7,6 @@ class TestObjCXXBridgedPO(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)
 
-    @skipUnlessDarwin
     def test_bridged_type_po(self):
         self.build()
         lldbutil.run_to_source_breakpoint(

diff  --git a/lldb/test/API/lang/objcxx/hide-runtime-values/TestObjCXXHideRuntimeValues.py b/lldb/test/API/lang/objcxx/hide-runtime-values/TestObjCXXHideRuntimeValues.py
index 9f2b5d68d5d5..7e16aeb5aaba 100644
--- a/lldb/test/API/lang/objcxx/hide-runtime-values/TestObjCXXHideRuntimeValues.py
+++ b/lldb/test/API/lang/objcxx/hide-runtime-values/TestObjCXXHideRuntimeValues.py
@@ -9,7 +9,6 @@ class TestObjCXXHideRuntimeSupportValues(TestBase):
 
     mydir = TestBase.compute_mydir(__file__)
 
-    @skipUnlessDarwin
     def test_hide_runtime_support_values(self):
         self.build()
         _, process, _, _ = lldbutil.run_to_source_breakpoint(

diff  --git a/lldb/test/API/lang/objcxx/objcxx-ivar-vector/TestIvarVector.py b/lldb/test/API/lang/objcxx/objcxx-ivar-vector/TestIvarVector.py
index 4ba088e4b035..3482b757fdf8 100644
--- a/lldb/test/API/lang/objcxx/objcxx-ivar-vector/TestIvarVector.py
+++ b/lldb/test/API/lang/objcxx/objcxx-ivar-vector/TestIvarVector.py
@@ -1,5 +1,4 @@
 from lldbsuite.test import decorators
 from lldbsuite.test import lldbinline
 
-lldbinline.MakeInlineTest(
-    __file__, globals(), [decorators.skipUnlessDarwin])
+lldbinline.MakeInlineTest(__file__, globals(), [])

diff  --git a/lldb/test/API/macosx/nslog/.categories b/lldb/test/API/macosx/nslog/.categories
new file mode 100644
index 000000000000..72cf07c1efea
--- /dev/null
+++ b/lldb/test/API/macosx/nslog/.categories
@@ -0,0 +1 @@
+objc

diff  --git a/lldb/test/API/python_api/objc_type/TestObjCType.py b/lldb/test/API/python_api/objc_type/TestObjCType.py
index 03b415019778..8599b8a91ade 100644
--- a/lldb/test/API/python_api/objc_type/TestObjCType.py
+++ b/lldb/test/API/python_api/objc_type/TestObjCType.py
@@ -19,8 +19,7 @@ def setUp(self):
         TestBase.setUp(self)
         self.line = line_number("main.m", '// Break at this line')
 
-    @skipUnlessDarwin
-    @add_test_categories(['pyapi'])
+    @add_test_categories(['objc', 'pyapi'])
     def test(self):
         """Test SBType for ObjC classes."""
         self.build()

diff  --git a/lldb/test/API/python_api/sbtype_typeclass/TestSBTypeTypeClass.py b/lldb/test/API/python_api/sbtype_typeclass/TestSBTypeTypeClass.py
index 59154e4715c9..809ae52d09dd 100644
--- a/lldb/test/API/python_api/sbtype_typeclass/TestSBTypeTypeClass.py
+++ b/lldb/test/API/python_api/sbtype_typeclass/TestSBTypeTypeClass.py
@@ -3,7 +3,7 @@
 
 lldbinline.MakeInlineTest(
     __file__, globals(), [
-        decorators.skipUnlessDarwin,
+        decorators.add_test_categories(["objc"]),
         decorators.expectedFailureAll(
             oslist=['macosx'], archs=['i386'],
             bugnumber='rdar://28656677')])


        


More information about the lldb-commits mailing list