From: Irit Katriel <1055913+iritkatriel@users.noreply.github.com> Date: Fri, 28 Jan 2022 20:41:58 +0000 (+0000) Subject: bpo-46458: Add tests for context of exception in finally block (GH-30986) X-Git-Tag: v3.11.0a5~49 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=36f538c8092eeb3d5b8bc9df0ae7cc348f08a865;p=thirdparty%2FPython%2Fcpython.git bpo-46458: Add tests for context of exception in finally block (GH-30986) --- diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index 5932b9d4f667..898b5cc067d6 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -1163,6 +1163,56 @@ class ExceptionTests(unittest.TestCase): self.assertIs(b.__context__, a) self.assertIs(a.__context__, c) + def test_context_of_exception_in_try_and_finally(self): + try: + try: + te = TypeError(1) + raise te + finally: + ve = ValueError(2) + raise ve + except Exception as e: + exc = e + + self.assertIs(exc, ve) + self.assertIs(exc.__context__, te) + + def test_context_of_exception_in_except_and_finally(self): + try: + try: + te = TypeError(1) + raise te + except: + ve = ValueError(2) + raise ve + finally: + oe = OSError(3) + raise oe + except Exception as e: + exc = e + + self.assertIs(exc, oe) + self.assertIs(exc.__context__, ve) + self.assertIs(exc.__context__.__context__, te) + + def test_context_of_exception_in_else_and_finally(self): + try: + try: + pass + except: + pass + else: + ve = ValueError(1) + raise ve + finally: + oe = OSError(2) + raise oe + except Exception as e: + exc = e + + self.assertIs(exc, oe) + self.assertIs(exc.__context__, ve) + def test_unicode_change_attributes(self): # See issue 7309. This was a crasher.