diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2015-06-28 14:08:35 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2015-06-28 14:08:35 (GMT) |
commit | eab770404437bd49ebf897b681221784b0035795 (patch) | |
tree | 291450eb49145a982a5d30b60f31070d5eb56fdf /Lib/test | |
parent | 4801383c2953d3a45beafa1e945d60412460b9c3 (diff) | |
parent | 101ff3541cbe5bd9549722dc53c28d6c21b9389c (diff) | |
download | cpython-eab770404437bd49ebf897b681221784b0035795.zip cpython-eab770404437bd49ebf897b681221784b0035795.tar.gz cpython-eab770404437bd49ebf897b681221784b0035795.tar.bz2 |
Issue #24336: The contextmanager decorator now works with functions with
keyword arguments called "func" and "self". Patch by Martin Panter.
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_contextlib.py | 8 | ||||
-rw-r--r-- | Lib/test/test_with.py | 6 |
2 files changed, 11 insertions, 3 deletions
diff --git a/Lib/test/test_contextlib.py b/Lib/test/test_contextlib.py index adafc9f..78741f5 100644 --- a/Lib/test/test_contextlib.py +++ b/Lib/test/test_contextlib.py @@ -147,6 +147,14 @@ def woohoo(): baz = self._create_contextmanager_attribs()(None) self.assertEqual(baz.__doc__, "Whee!") + def test_keywords(self): + # Ensure no keyword arguments are inhibited + @contextmanager + def woohoo(self, func, args, kwds): + yield (self, func, args, kwds) + with woohoo(self=11, func=22, args=33, kwds=44) as target: + self.assertEqual(target, (11, 22, 33, 44)) + class ClosingTestCase(unittest.TestCase): diff --git a/Lib/test/test_with.py b/Lib/test/test_with.py index 5dbd1e6..e8d789b 100644 --- a/Lib/test/test_with.py +++ b/Lib/test/test_with.py @@ -11,8 +11,8 @@ from contextlib import _GeneratorContextManager, contextmanager class MockContextManager(_GeneratorContextManager): - def __init__(self, func, *args, **kwds): - super().__init__(func, *args, **kwds) + def __init__(self, *args): + super().__init__(*args) self.enter_called = False self.exit_called = False self.exit_args = None @@ -30,7 +30,7 @@ class MockContextManager(_GeneratorContextManager): def mock_contextmanager(func): def helper(*args, **kwds): - return MockContextManager(func, *args, **kwds) + return MockContextManager(func, args, kwds) return helper |