@@ -146,9 +146,9 @@ def test_exit(self):
146146 "raise SystemExit(47)" ])
147147 self .assertEqual (rc , 47 )
148148
149- def check_exit_message (code , expected ):
149+ def check_exit_message (code , expected , env = None ):
150150 process = subprocess .Popen ([sys .executable , "-c" , code ],
151- stderr = subprocess .PIPE )
151+ stderr = subprocess .PIPE , env = env )
152152 stdout , stderr = process .communicate ()
153153 self .assertEqual (process .returncode , 1 )
154154 self .assertTrue (stderr .startswith (expected ),
@@ -166,6 +166,14 @@ def check_exit_message(code, expected):
166166 r'import sys; sys.exit("surrogates:\uDCFF")' ,
167167 b"surrogates:\\ udcff" )
168168
169+ # test that the unicode message is encoded to the stderr encoding
170+ # instead of the default encoding (utf8)
171+ env = os .environ .copy ()
172+ env ['PYTHONIOENCODING' ] = 'latin-1'
173+ check_exit_message (
174+ r'import sys; sys.exit("h\xe9")' ,
175+ b"h\xe9 " , env = env )
176+
169177 def test_getdefaultencoding (self ):
170178 self .assertRaises (TypeError , sys .getdefaultencoding , 42 )
171179 # can't check more than the type, as the user might have changed it
0 commit comments