Skip to content

Commit

Permalink
gh-102008: simplify test_except_star by using sys.exception() instead…
Browse files Browse the repository at this point in the history
… of sys.exc_info() (GH-102009)

(cherry picked from commit c2b85a9)

Co-authored-by: Irit Katriel <[email protected]>
  • Loading branch information
miss-islington and iritkatriel committed Feb 21, 2023
1 parent 1633aea commit 3bfa608
Showing 1 changed file with 19 additions and 25 deletions.
44 changes: 19 additions & 25 deletions Lib/test/test_except_star.py
Original file line number Diff line number Diff line change
Expand Up @@ -208,44 +208,38 @@ def assertMetadataNotEqual(self, e1, e2):

class TestExceptStarSplitSemantics(ExceptStarTest):
def doSplitTestNamed(self, exc, T, match_template, rest_template):
initial_exc_info = sys.exc_info()
exc_info = match = rest = None
initial_sys_exception = sys.exception()
sys_exception = match = rest = None
try:
try:
raise exc
except* T as e:
exc_info = sys.exc_info()
sys_exception = sys.exception()
match = e
except BaseException as e:
rest = e

if match_template:
self.assertEqual(exc_info[1], match)
else:
self.assertIsNone(exc_info)
self.assertEqual(sys_exception, match)
self.assertExceptionIsLike(match, match_template)
self.assertExceptionIsLike(rest, rest_template)
self.assertEqual(sys.exc_info(), initial_exc_info)
self.assertEqual(sys.exception(), initial_sys_exception)

def doSplitTestUnnamed(self, exc, T, match_template, rest_template):
initial_exc_info = sys.exc_info()
exc_info = match = rest = None
initial_sys_exception = sys.exception()
sys_exception = match = rest = None
try:
try:
raise exc
except* T:
exc_info = sys.exc_info()
match = sys.exc_info()[1]
sys_exception = match = sys.exception()
else:
if rest_template:
self.fail("Exception not raised")
except BaseException as e:
rest = e
self.assertExceptionIsLike(match, match_template)
if match_template:
self.assertEqual(exc_info[0], type(match_template))
self.assertExceptionIsLike(rest, rest_template)
self.assertEqual(sys.exc_info(), initial_exc_info)
self.assertEqual(sys.exception(), initial_sys_exception)

def doSplitTestInExceptHandler(self, exc, T, match_template, rest_template):
try:
Expand Down Expand Up @@ -409,11 +403,11 @@ def test_multiple_matches_unnamed(self):
try:
raise ExceptionGroup("mmu", [OSError("os"), BlockingIOError("io")])
except* BlockingIOError:
e = sys.exc_info()[1]
e = sys.exception()
self.assertExceptionIsLike(e,
ExceptionGroup("mmu", [BlockingIOError("io")]))
except* OSError:
e = sys.exc_info()[1]
e = sys.exception()
self.assertExceptionIsLike(e,
ExceptionGroup("mmu", [OSError("os")]))
else:
Expand All @@ -434,7 +428,7 @@ def test_first_match_wins_unnamed(self):
try:
raise ExceptionGroup("fstu", [BlockingIOError("io")])
except* OSError:
e = sys.exc_info()[1]
e = sys.exception()
self.assertExceptionIsLike(e,
ExceptionGroup("fstu", [BlockingIOError("io")]))
except* BlockingIOError:
Expand All @@ -452,7 +446,7 @@ def test_nested_except_stars(self):
pass
else:
self.fail("Exception not raised")
e = sys.exc_info()[1]
e = sys.exception()
self.assertExceptionIsLike(e,
ExceptionGroup("n", [BlockingIOError("io")]))
else:
Expand Down Expand Up @@ -766,7 +760,7 @@ def test_raise_unnamed(self):
try:
raise orig
except* OSError:
e = sys.exc_info()[1]
e = sys.exception()
raise TypeError(3) from e
except ExceptionGroup as e:
exc = e
Expand Down Expand Up @@ -821,7 +815,7 @@ def test_raise_handle_all_raise_one_unnamed(self):
try:
raise orig
except* (TypeError, ValueError) as e:
e = sys.exc_info()[1]
e = sys.exception()
raise SyntaxError(3) from e
except ExceptionGroup as e:
exc = e
Expand Down Expand Up @@ -882,10 +876,10 @@ def test_raise_handle_all_raise_two_unnamed(self):
try:
raise orig
except* TypeError:
e = sys.exc_info()[1]
e = sys.exception()
raise SyntaxError(3) from e
except* ValueError:
e = sys.exc_info()[1]
e = sys.exception()
raise SyntaxError(4) from e
except ExceptionGroup as e:
exc = e
Expand Down Expand Up @@ -982,7 +976,7 @@ def derive(self, excs):


class TestExceptStarCleanup(ExceptStarTest):
def test_exc_info_restored(self):
def test_sys_exception_restored(self):
try:
try:
raise ValueError(42)
Expand All @@ -997,7 +991,7 @@ def test_exc_info_restored(self):

self.assertExceptionIsLike(exc, ZeroDivisionError('division by zero'))
self.assertExceptionIsLike(exc.__context__, ValueError(42))
self.assertEqual(sys.exc_info(), (None, None, None))
self.assertEqual(sys.exception(), None)


class TestExceptStar_WeirdLeafExceptions(ExceptStarTest):
Expand Down

0 comments on commit 3bfa608

Please sign in to comment.