Skip to content

Commit de43049

Browse files
test: extend error suggestion punctuation handling tests
1 parent 09b17d2 commit de43049

File tree

1 file changed

+30
-11
lines changed

1 file changed

+30
-11
lines changed

Lib/test/test_traceback.py

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3802,25 +3802,44 @@ def test_traceback_header(self):
38023802
exc = traceback.TracebackException(Exception, Exception("haven"), None)
38033803
self.assertEqual(list(exc.format()), ["Exception: haven\n"])
38043804

3805-
def test_exception_punctuation_handling_with_suggestions(self):
3805+
def test_name_error_punctuation_with_suggestions(self):
38063806
def raise_mssage(message, name):
38073807
try:
38083808
raise NameError(message, name=name)
3809-
except Exception as e:
3810-
return traceback.TracebackException.from_exception(e)._str
3809+
except NameError as e:
3810+
exc = traceback.TracebackException.from_exception(e)
3811+
return list(exc.format())[-1]
38113812

38123813
test_cases = [
3813-
("Error.", "time", "Error. Did you forget to import 'time'?"),
3814-
("Error?", "time", "Error? Did you forget to import 'time'?"),
3815-
("Error!", "time", "Error! Did you forget to import 'time'?"),
3816-
("Error", "time", "Error. Did you forget to import 'time'?"),
3817-
("Error", "foo123", "Error"),
3814+
("a.", "time", "NameError: a. Did you forget to import 'time'?\n"),
3815+
("b?", "time", "NameError: b? Did you forget to import 'time'?\n"),
3816+
("c!", "time", "NameError: c! Did you forget to import 'time'?\n"),
3817+
("d", "time", "NameError: d. Did you forget to import 'time'?\n"),
3818+
("e", "foo123", "NameError: e\n"),
38183819
]
3819-
for puctuation, name, expected in test_cases:
3820-
with self.subTest(puctuation=puctuation):
3821-
messsage = raise_mssage(puctuation, name)
3820+
for message, name, expected in test_cases:
3821+
with self.subTest(message=message):
3822+
messsage = raise_mssage(message, name)
38223823
self.assertEqual(messsage, expected)
38233824

3825+
def test_import_error_punctuation_handling_with_suggestions(self):
3826+
def raise_mssage(message):
3827+
try:
3828+
raise ImportError(message, name="math", name_from="sinq")
3829+
except ImportError as e:
3830+
exc = traceback.TracebackException.from_exception(e)
3831+
return list(exc.format())[-1]
3832+
3833+
test_cases = [
3834+
("a.", "ImportError: a. Did you mean: 'sin'?\n"),
3835+
("b?", "ImportError: b? Did you mean: 'sin'?\n"),
3836+
("c!", "ImportError: c! Did you mean: 'sin'?\n"),
3837+
("d", "ImportError: d. Did you mean: 'sin'?\n"),
3838+
]
3839+
for message, expected in test_cases:
3840+
with self.subTest(message=message):
3841+
messsage = raise_mssage(message)
3842+
self.assertEqual(messsage, expected)
38243843

38253844
@requires_debug_ranges()
38263845
def test_print(self):

0 commit comments

Comments
 (0)