@@ -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
38953895class TestTracebackException_ExceptionGroups (unittest .TestCase ):
38963896 def setUp (self ):
0 commit comments