[Lldb-commits] [PATCH] D15451: Make test categories composable
Pavel Labath via lldb-commits
lldb-commits at lists.llvm.org
Fri Dec 11 07:41:47 PST 2015
labath updated this revision to Diff 42522.
labath added a comment.
I've changed my mind and I'm moving back the getCategoriesForTest function into test_result.py.
The function only works when the test is currently executing (because of the magic
_testMethodName hack), so it's usability as a general utility function is very limited. Let's keep it here until we have a reason to do otherwise.
http://reviews.llvm.org/D15451
Files:
packages/Python/lldbsuite/test/lldbtest.py
packages/Python/lldbsuite/test/test_categories.py
packages/Python/lldbsuite/test/test_result.py
Index: packages/Python/lldbsuite/test/test_result.py
===================================================================
--- packages/Python/lldbsuite/test/test_result.py
+++ packages/Python/lldbsuite/test/test_result.py
@@ -101,22 +101,17 @@
else:
return str(test)
- def getCategoriesForTest(self,test):
- if hasattr(test,"_testMethodName"):
- test_method = getattr(test,"_testMethodName")
- test_method = getattr(test,test_method)
- else:
- test_method = None
- if test_method != None and hasattr(test_method,"getCategories"):
- test_categories = test_method.getCategories(test)
- elif hasattr(test,"getCategories"):
- test_categories = test.getCategories()
- elif inspect.ismethod(test) and test.__self__ != None and hasattr(test.__self__,"getCategories"):
- test_categories = test.__self__.getCategories()
- else:
- test_categories = []
- if test_categories == None:
- test_categories = []
+ def getCategoriesForTest(self, test):
+ """
+ Gets all the categories for the currently running test method in test case
+ """
+ test_categories = []
+ test_method = getattr(test, test._testMethodName)
+ if test_method != None and hasattr(test_method, "categories"):
+ test_categories.extend(test_method.categories)
+
+ test_categories.extend(test.getCategories())
+
return test_categories
def hardMarkAsSkipped(self,test):
Index: packages/Python/lldbsuite/test/test_categories.py
===================================================================
--- packages/Python/lldbsuite/test/test_categories.py
+++ packages/Python/lldbsuite/test/test_categories.py
@@ -3,6 +3,7 @@
"""
from __future__ import absolute_import
+from __future__ import print_function
# System modules
import sys
Index: packages/Python/lldbsuite/test/lldbtest.py
===================================================================
--- packages/Python/lldbsuite/test/lldbtest.py
+++ packages/Python/lldbsuite/test/lldbtest.py
@@ -507,12 +507,18 @@
# Decorators for categorizing test cases.
#
from functools import wraps
+
def add_test_categories(cat):
- """Decorate an item with test categories"""
+ """Add test categories to a test item"""
cat = test_categories.validate(cat, True)
def impl(func):
- func.getCategories = lambda test: cat
+ if isinstance(func, type) and issubclass(func, unittest2.TestCase):
+ raise Exception("@add_test_categories can only be used to decorate a test method")
+ if hasattr(func, "categories"):
+ cat.extend(func.categories)
+ func.categories = cat
return func
+
return impl
def benchmarks_test(func):
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D15451.42522.patch
Type: text/x-patch
Size: 2838 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20151211/76516f6d/attachment.bin>
More information about the lldb-commits
mailing list