|
@@ -232,9 +232,45 @@ class MethodDecoratorTests(TestCase):
|
|
|
def method(self):
|
|
|
return True
|
|
|
|
|
|
- # t = Test()
|
|
|
self.assertEqual(Test().method(), False)
|
|
|
|
|
|
+ def test_descriptors(self):
|
|
|
+
|
|
|
+ def original_dec(wrapped):
|
|
|
+ def _wrapped(arg):
|
|
|
+ return wrapped(arg)
|
|
|
+
|
|
|
+ return _wrapped
|
|
|
+
|
|
|
+ method_dec = method_decorator(original_dec)
|
|
|
+
|
|
|
+ class bound_wrapper(object):
|
|
|
+ def __init__(self, wrapped):
|
|
|
+ self.wrapped = wrapped
|
|
|
+ self.__name__ = wrapped.__name__
|
|
|
+
|
|
|
+ def __call__(self, arg):
|
|
|
+ return self.wrapped(arg)
|
|
|
+
|
|
|
+ def __get__(self, instance, owner):
|
|
|
+ return self
|
|
|
+
|
|
|
+ class descriptor_wrapper(object):
|
|
|
+ def __init__(self, wrapped):
|
|
|
+ self.wrapped = wrapped
|
|
|
+ self.__name__ = wrapped.__name__
|
|
|
+
|
|
|
+ def __get__(self, instance, owner):
|
|
|
+ return bound_wrapper(self.wrapped.__get__(instance, owner))
|
|
|
+
|
|
|
+ class Test(object):
|
|
|
+ @method_dec
|
|
|
+ @descriptor_wrapper
|
|
|
+ def method(self, arg):
|
|
|
+ return arg
|
|
|
+
|
|
|
+ self.assertEqual(Test().method(1), 1)
|
|
|
+
|
|
|
|
|
|
class XFrameOptionsDecoratorsTests(TestCase):
|
|
|
"""
|