@@ -1108,10 +1108,18 @@ def test_codecs_utf7(self):
11081108 for (x , y ) in utfTests :
11091109 self .assertEqual (x .encode ('utf-7' ), y )
11101110
1111- # Unpaired surrogates not supported
1112- self .assertRaises (UnicodeError , str , b'+3ADYAA-' , 'utf-7' )
1113-
1114- self .assertEqual (str (b'+3ADYAA-' , 'utf-7' , 'replace' ), '\ufffd \ufffd ' )
1111+ # Unpaired surrogates are passed through
1112+ self .assertEqual ('\uD801 ' .encode ('utf-7' ), b'+2AE-' )
1113+ self .assertEqual ('\uD801 x' .encode ('utf-7' ), b'+2AE-x' )
1114+ self .assertEqual ('\uDC01 ' .encode ('utf-7' ), b'+3AE-' )
1115+ self .assertEqual ('\uDC01 x' .encode ('utf-7' ), b'+3AE-x' )
1116+ self .assertEqual (b'+2AE-' .decode ('utf-7' ), '\uD801 ' )
1117+ self .assertEqual (b'+2AE-x' .decode ('utf-7' ), '\uD801 x' )
1118+ self .assertEqual (b'+3AE-' .decode ('utf-7' ), '\uDC01 ' )
1119+ self .assertEqual (b'+3AE-x' .decode ('utf-7' ), '\uDC01 x' )
1120+
1121+ self .assertEqual ('\uD801 \U000abcde ' .encode ('utf-7' ), b'+2AHab9ze-' )
1122+ self .assertEqual (b'+2AHab9ze-' .decode ('utf-7' ), '\uD801 \U000abcde ' )
11151123
11161124 # Issue #2242: crash on some Windows/MSVC versions
11171125 self .assertEqual (b'+\xc1 ' .decode ('utf-7' ), '\xc1 ' )
0 commit comments