Kaydet (Commit) 35fd1424 authored tarafından Phillip J. Eby's avatar Phillip J. Eby

Fix contextlib not copying function attributes

üst d207b4f3
...@@ -78,6 +78,7 @@ def contextmanager(func): ...@@ -78,6 +78,7 @@ def contextmanager(func):
try: try:
helper.__name__ = func.__name__ helper.__name__ = func.__name__
helper.__doc__ = func.__doc__ helper.__doc__ = func.__doc__
helper.__dict__ = func.__dict__
except: except:
pass pass
return helper return helper
......
...@@ -84,6 +84,21 @@ class ContextManagerTestCase(unittest.TestCase): ...@@ -84,6 +84,21 @@ class ContextManagerTestCase(unittest.TestCase):
raise ZeroDivisionError(999) raise ZeroDivisionError(999)
self.assertEqual(state, [1, 42, 999]) self.assertEqual(state, [1, 42, 999])
def test_contextmanager_attribs(self):
def attribs(**kw):
def decorate(func):
for k,v in kw.items():
setattr(func,k,v)
return func
return decorate
@contextmanager
@attribs(foo='bar')
def baz(spam):
"""Whee!"""
self.assertEqual(baz.__name__,'baz')
self.assertEqual(baz.foo, 'bar')
self.assertEqual(baz.__doc__, "Whee!")
class NestedTestCase(unittest.TestCase): class NestedTestCase(unittest.TestCase):
# XXX This needs more work # XXX This needs more work
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment