Skip to content

Commit aeb7632

Browse files
refactor traceback tests
1 parent 28e6e5a commit aeb7632

File tree

1 file changed

+21
-21
lines changed

1 file changed

+21
-21
lines changed

Lib/test/test_traceback.py

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3803,12 +3803,8 @@ def test_traceback_header(self):
38033803
self.assertEqual(list(exc.format()), ["Exception: haven\n"])
38043804

38053805
def test_name_error_punctuation_with_suggestions(self):
3806-
def raise_mssage(message, name, name_from=None):
3807-
try:
3808-
raise NameError(message, name=name)
3809-
except NameError as e:
3810-
exc = traceback.TracebackException.from_exception(e)
3811-
return list(exc.format())[-1]
3806+
def format_error(message, name):
3807+
return self.format_error(NameError, message, name=name)
38123808

38133809
test_cases = [
38143810
("a.", "time", "NameError: a. Did you forget to import 'time'?\n"),
@@ -3819,29 +3815,25 @@ def raise_mssage(message, name, name_from=None):
38193815
]
38203816
for message, name, expected in test_cases:
38213817
with self.subTest(message=message):
3822-
messsage = raise_mssage(message, name)
3823-
self.assertEqual(messsage, expected)
3818+
message = format_error(message, name)
3819+
self.assertEqual(message, expected)
38243820

3825-
with self.subTest("combined suggestion"):
3826-
messsage = raise_mssage("foo", "abc")
3821+
with self.subTest("stdlib module import suggestion"):
3822+
message = format_error("foo", "abc")
38273823
expected_message = (
38283824
"NameError: foo. Did you mean: 'abs'? "
38293825
"Or did you forget to import 'abc'?\n"
38303826
)
3831-
self.assertEqual(messsage, expected_message)
3827+
self.assertEqual(message, expected_message)
38323828

38333829
with self.subTest("'did you mean' suggestion"):
3834-
messsage = raise_mssage("bar", "flaot")
3830+
message = format_error("bar", "flaot")
38353831
expected_message = "NameError: bar. Did you mean: 'float'?\n"
3836-
self.assertEqual(messsage, expected_message)
3832+
self.assertEqual(message, expected_message)
38373833

38383834
def test_import_error_punctuation_handling_with_suggestions(self):
3839-
def raise_mssage(message):
3840-
try:
3841-
raise ImportError(message, name="math", name_from="sinq")
3842-
except ImportError as e:
3843-
exc = traceback.TracebackException.from_exception(e)
3844-
return list(exc.format())[-1]
3835+
def format_error(message):
3836+
return self.format_error(ImportError, message, name="math", name_from="sinq")
38453837

38463838
test_cases = [
38473839
("a.", "ImportError: a. Did you mean: 'sin'?\n"),
@@ -3851,8 +3843,8 @@ def raise_mssage(message):
38513843
]
38523844
for message, expected in test_cases:
38533845
with self.subTest(message=message):
3854-
messsage = raise_mssage(message)
3855-
self.assertEqual(messsage, expected)
3846+
message = format_error(message)
3847+
self.assertEqual(message, expected)
38563848

38573849
@requires_debug_ranges()
38583850
def test_print(self):
@@ -3891,6 +3883,14 @@ def test_dont_swallow_cause_or_context_of_falsey_exception(self):
38913883
except FalseyException as e:
38923884
self.assertIn(context_message, traceback.format_exception(e))
38933885

3886+
@staticmethod
3887+
def format_error(exc_type, exc_message, *args, **kwargs):
3888+
try:
3889+
raise exc_type(exc_message, *args, **kwargs)
3890+
except exc_type as e:
3891+
exc = traceback.TracebackException.from_exception(e)
3892+
return list(exc.format())[-1]
3893+
38943894

38953895
class TestTracebackException_ExceptionGroups(unittest.TestCase):
38963896
def setUp(self):

0 commit comments

Comments
 (0)