Issue #11647: allow contextmanager objects to be used as decorators as described in the docs. Initial patch by Ysj Ray.

This commit is contained in:
Nick Coghlan 2011-05-05 23:49:25 +10:00
parent f77b74dd1b
commit 0ded3e307b
6 changed files with 50 additions and 10 deletions

View file

@ -350,13 +350,13 @@ class TestContextDecorator(unittest.TestCase):
def test_contextmanager_as_decorator(self):
state = []
@contextmanager
def woohoo(y):
state.append(y)
yield
state.append(999)
state = []
@woohoo(1)
def test(x):
self.assertEqual(state, [1])
@ -364,6 +364,11 @@ class TestContextDecorator(unittest.TestCase):
test('something')
self.assertEqual(state, [1, 'something', 999])
# Issue #11647: Ensure the decorated function is 'reusable'
state = []
test('something else')
self.assertEqual(state, [1, 'something else', 999])
# This is needed to make the test actually run under regrtest.py!
def test_main():