diff options
| author | Nick Coghlan <ncoghlan@gmail.com> | 2006-04-24 04:37:15 (GMT) | 
|---|---|---|
| committer | Nick Coghlan <ncoghlan@gmail.com> | 2006-04-24 04:37:15 (GMT) | 
| commit | da2268feecd4b956161ed7fdd05da125606189cc (patch) | |
| tree | 0e387c87ccb58228c8030ad7951db225e0a13ec1 /Lib/test/test_contextlib.py | |
| parent | 27ec1a773c92b6a9a144a45334ce2b38ae6118b6 (diff) | |
| download | cpython-da2268feecd4b956161ed7fdd05da125606189cc.zip cpython-da2268feecd4b956161ed7fdd05da125606189cc.tar.gz cpython-da2268feecd4b956161ed7fdd05da125606189cc.tar.bz2  | |
Fix contextlib.nested to cope with exit methods raising and handling exceptions
Diffstat (limited to 'Lib/test/test_contextlib.py')
| -rw-r--r-- | Lib/test/test_contextlib.py | 23 | 
1 files changed, 23 insertions, 0 deletions
diff --git a/Lib/test/test_contextlib.py b/Lib/test/test_contextlib.py index 97470c7..c23e428 100644 --- a/Lib/test/test_contextlib.py +++ b/Lib/test/test_contextlib.py @@ -146,6 +146,29 @@ class NestedTestCase(unittest.TestCase):          else:              self.fail("Didn't raise ZeroDivisionError") +    def test_nested_right_exception(self): +        state = [] +        @contextmanager +        def a(): +            yield 1 +        class b(object): +            def __enter__(self): +                return 2 +            def __exit__(self, *exc_info): +                try: +                    raise Exception() +                except: +                    pass +        try: +            with nested(a(), b()) as (x, y): +                1/0 +        except ZeroDivisionError: +            self.assertEqual((x, y), (1, 2)) +        except Exception: +            self.fail("Reraised wrong exception") +        else: +            self.fail("Didn't raise ZeroDivisionError") +      def test_nested_b_swallows(self):          @contextmanager          def a():  | 
