77import unittest
88import unittest .mock as mock
99import _testcapi
10+ from getopt import error
1011from test .support import import_helper
1112
1213_testlimitedcapi = import_helper .import_module ('_testlimitedcapi' )
@@ -748,14 +749,19 @@ def test_codec_stream_writer(self):
748749class CAPICodecErrors (unittest .TestCase ):
749750
750751 def test_codec_register_error (self ):
751- self .assertRaises (LookupError , _testcapi .codec_lookup_error , 'custom' )
752+ try :
753+ error_handler = _testcapi .codec_lookup_error ('custom' )
754+ except LookupError :
755+ error_handler = None
752756
753- def error_handler (exc ):
754- raise exc
757+ if error_handler is None :
758+ def custom_error_handler (exc ):
759+ raise exc
755760
756- error_handler = mock .Mock (wraps = error_handler )
757- _testcapi .codec_register_error ('custom' , error_handler )
758- # self.addCleanup(codecs.unregister_error, 'custom')
761+ error_handler = mock .Mock (wraps = custom_error_handler )
762+ _testcapi .codec_register_error ('custom' , error_handler )
763+ else :
764+ self .assertIsInstance (error_handler , mock .Mock )
759765
760766 self .assertRaises (UnicodeEncodeError , codecs .encode ,
761767 '\xff ' , 'ascii' , errors = 'custom' )
@@ -765,6 +771,7 @@ def error_handler(exc):
765771 self .assertRaises (UnicodeDecodeError , codecs .decode ,
766772 b'\xff ' , 'ascii' , errors = 'custom' )
767773 error_handler .assert_called_once ()
774+ error_handler .reset_mock ()
768775
769776 def test_codec_lookup_error (self ):
770777 codec_lookup_error = _testcapi .codec_lookup_error
@@ -774,7 +781,7 @@ def test_codec_lookup_error(self):
774781 self .assertIs (codec_lookup_error ('replace' ), codecs .replace_errors )
775782 self .assertIs (codec_lookup_error ('xmlcharrefreplace' ), codecs .xmlcharrefreplace_errors )
776783 self .assertIs (codec_lookup_error ('namereplace' ), codecs .namereplace_errors )
777- self .assertRaises (LookupError , codec_lookup_error , 'custom ' )
784+ self .assertRaises (LookupError , codec_lookup_error , 'unknown ' )
778785
779786 def test_codec_error_handlers (self ):
780787 exceptions = [
0 commit comments