@@ -460,7 +460,7 @@ def test_latin_1_encode(self):
460460 def test_error_handlers (self ):
461461 ude = UnicodeDecodeError ('dummy' , b"abcdefgh" , 3 , 5 , "decoding testing purposes" )
462462 uee = UnicodeEncodeError ('dummy' , "abcdefgh" , 2 , 6 , "encoding testing purposes" )
463- unicode_data = "ab\xff \u20ac \U0001f40d "
463+ unicode_data = "ab\xff \u20ac \U0001f40d \0 z "
464464 uee_unicode = UnicodeEncodeError ('dummy' , unicode_data , 2 , len (unicode_data ), "encoding testing purposes" )
465465
466466 strict = codecs .lookup_error ('strict' )
@@ -476,28 +476,31 @@ def test_error_handlers(self):
476476 self .assertRaisesRegex (TypeError , "\w+\(\) takes exactly (one|1) argument \(2 given\)" , strict , ude , uee )
477477 self .assertRaises (LookupError , codecs .lookup_error , "STRICT" )
478478
479- return # TODO: Implement remaining error handlers
480-
481479 ignore = codecs .lookup_error ('ignore' )
482480 self .assertEqual (ignore , codecs .ignore_errors )
483481 self .assertEqual (ignore (ude ), ("" , 5 ))
484482 self .assertEqual (ignore (uee ), ("" , 6 ))
483+ self .assertEqual (ignore (uee_unicode ), ("" , uee_unicode .end ))
484+
485+ return # TODO: Implement remaining error handlers
485486
486487 replace = codecs .lookup_error ('replace' )
487488 self .assertEqual (replace , codecs .replace_errors )
488489 self .assertEqual (replace (ude ), ("�" , 5 ))
489490 self .assertEqual (replace (uee ), ("????" , 6 ))
491+ self .assertEqual (replace (uee_unicode ), ("?" * (uee_unicode .end - uee_unicode .start ), uee_unicode .end ))
490492
491493 backslashreplace = codecs .lookup_error ('backslashreplace' )
492494 self .assertEqual (backslashreplace , codecs .backslashreplace_errors )
493495 self .assertRaisesRegex (TypeError , "don't know how to handle UnicodeDecodeError in error callback" , backslashreplace , ude )
494496 self .assertEqual (backslashreplace (uee ), (r"\x63\x64\x65\x66" , 6 ))
495- self .assertEqual (backslashreplace (uee_unicode ), (r"\xff\u20ac\U0001f40d" , uee_unicode .end ))
497+ self .assertEqual (backslashreplace (uee_unicode ), (r"\xff\u20ac\U0001f40d\x00\x7a " , uee_unicode .end ))
496498
497499 xmlcharrefreplace = codecs .lookup_error ('xmlcharrefreplace' )
498500 self .assertEqual (xmlcharrefreplace , codecs .xmlcharrefreplace_errors )
499501 self .assertRaisesRegex (TypeError , "don't know how to handle UnicodeDecodeError in error callback" , xmlcharrefreplace , ude )
500502 self .assertEqual (xmlcharrefreplace (uee ), ("cdef" , 6 ))
503+ self .assertEqual (xmlcharrefreplace (uee_unicode ), ("ÿ€🐍�z" , uee_unicode .end ))
501504
502505 #TODO: @skip("multiple_execute")
503506 def test_lookup_error (self ):
0 commit comments