[Lldb-commits] [lldb] r234514 - Fix @skipUnlessPlatform and @skipIfPlatform decorators to work on classes.

Robert Flack flackr at gmail.com
Thu Apr 9 11:07:58 PDT 2015


Author: flackr
Date: Thu Apr  9 13:07:58 2015
New Revision: 234514

URL: http://llvm.org/viewvc/llvm-project?rev=234514&view=rev
Log:
Fix @skipUnlessPlatform and @skipIfPlatform decorators to work on classes.

The decorators to skip if or unless certain platforms relied on calling
skipTest, which only worked if they were decorating individual test cases.
However for decorating entire classes it needs different behavior. This behavior
is already encapsulated in unittest2.skipIf and unittest2.skipUnless so this
modifies the platform decorators to use these unittest skip decorators.

Test Plan:
./dotest.py -t -p TestObjCMethods2.py
See skipped tests on linux, and see tests run on macosx.

Differential Revision: http://reviews.llvm.org/D8903

Modified:
    lldb/trunk/test/dotest.py
    lldb/trunk/test/lldbtest.py

Modified: lldb/trunk/test/dotest.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/dotest.py?rev=234514&r1=234513&r2=234514&view=diff
==============================================================================
--- lldb/trunk/test/dotest.py (original)
+++ lldb/trunk/test/dotest.py Thu Apr  9 13:07:58 2015
@@ -1320,16 +1320,6 @@ setupCrashInfoHook()
 if not skip_long_running_test:
     os.environ["LLDB_SKIP_LONG_RUNNING_TEST"] = "NO"
 
-#
-# Walk through the testdirs while collecting tests.
-#
-for testdir in testdirs:
-    os.path.walk(testdir, visit, 'Test')
-
-#
-# Now that we have loaded all the test cases, run the whole test suite.
-#
-
 # For the time being, let's bracket the test runner within the
 # lldb.SBDebugger.Initialize()/Terminate() pair.
 import lldb
@@ -1383,6 +1373,16 @@ dont_do_debugserver_test = "linux" in ta
 # Don't do lldb-server (llgs) tests on anything except Linux.
 dont_do_llgs_test = not ("linux" in target_platform)
 
+#
+# Walk through the testdirs while collecting tests.
+#
+for testdir in testdirs:
+    os.path.walk(testdir, visit, 'Test')
+
+#
+# Now that we have loaded all the test cases, run the whole test suite.
+#
+
 # Put the blacklist in the lldb namespace, to be used by lldb.TestBase.
 lldb.blacklist = blacklist
 

Modified: lldb/trunk/test/lldbtest.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/lldbtest.py?rev=234514&r1=234513&r2=234514&view=diff
==============================================================================
--- lldb/trunk/test/lldbtest.py (original)
+++ lldb/trunk/test/lldbtest.py Thu Apr  9 13:07:58 2015
@@ -683,33 +683,21 @@ def skipUnlessDarwin(func):
     """Decorate the item to skip tests that should be skipped on any non Darwin platform."""
     return skipUnlessPlatform(getDarwinOSTriples())(func)
 
+def getPlatform():
+    platform = lldb.DBG.GetSelectedPlatform().GetTriple().split('-')[2]
+    if platform.startswith('freebsd'):
+        platform = 'freebsd'
+    return platform
+
 def skipIfPlatform(oslist):
     """Decorate the item to skip tests if running on one of the listed platforms."""
-    def decorator(func):
-        @wraps(func)
-        def wrapper(*args, **kwargs):
-            from unittest2 import case
-            self = args[0]
-            if self.getPlatform() in oslist:
-                self.skipTest("skip on %s" % (", ".join(oslist)))
-            else:
-                func(*args, **kwargs)
-        return wrapper
-    return decorator
+    return unittest2.skipIf(getPlatform() in oslist,
+                            "skip on %s" % (", ".join(oslist)))
 
 def skipUnlessPlatform(oslist):
     """Decorate the item to skip tests unless running on one of the listed platforms."""
-    def decorator(func):
-        @wraps(func)
-        def wrapper(*args, **kwargs):
-            from unittest2 import case
-            self = args[0]
-            if not (self.getPlatform() in oslist):
-                self.skipTest("requires one of %s" % (", ".join(oslist)))
-            else:
-                func(*args, **kwargs)
-        return wrapper
-    return decorator
+    return unittest2.skipUnless(getPlatform() in oslist,
+                                "requires on of %s" % (", ".join(oslist)))
 
 def skipIfLinuxClang(func):
     """Decorate the item to skip tests that should be skipped if building on 
@@ -1405,10 +1393,7 @@ class Base(unittest2.TestCase):
 
     def getPlatform(self):
         """Returns the platform the test suite is running on."""
-        platform = lldb.DBG.GetSelectedPlatform().GetTriple().split('-')[2]
-        if platform.startswith('freebsd'):
-            platform = 'freebsd'
-        return platform
+        return getPlatform()
 
     def isIntelCompiler(self):
         """ Returns true if using an Intel (ICC) compiler, false otherwise. """





More information about the lldb-commits mailing list