[test] Don't drop existing categories for methods.

The change in r324488 dropped the existing category attribute in for
instance methods. This patch corrects that.

Differential revision: https://reviews.llvm.org/D43024

llvm-svn: 324492
This commit is contained in:
Jonas Devlieghere 2018-02-07 17:34:46 +00:00
parent efed656873
commit ea6fbd92d8

View File

@ -304,13 +304,16 @@ def add_test_categories(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)
# For instance methods, the attribute must be set on the actual function.
if inspect.ismethod(func):
func.__func__.categories = cat
else:
func.categories = cat
# Update or set the categories attribute. For instance methods, the
# attribute must be set on the actual function.
func_for_attr = func
if inspect.ismethod(func_for_attr):
func_for_attr = func.__func__
if hasattr(func_for_attr, "categories"):
cat.extend(func_for_attr.categories)
setattr(func_for_attr, "categories", cat)
return func
return impl