@@ -1627,6 +1627,40 @@ def test_readrc_homedir(self):
16271627 if save_home is not None :
16281628 os .environ ["HOME" ] = save_home
16291629
1630+ def test_read_pdbrc_with_ascii_encoding (self ):
1631+ script = textwrap .dedent ("""
1632+ import pdb; pdb.Pdb().set_trace()
1633+ print('hello')
1634+ """ )
1635+ save_home = os .environ .pop ('HOME' , None )
1636+ try :
1637+ with os_helper .temp_cwd ():
1638+ with open ('.pdbrc' , 'w' , encoding = 'utf-8' ) as f :
1639+ f .write ("Fran\u00E7 ais" )
1640+
1641+ with open ('main.py' , 'w' , encoding = 'utf-8' ) as f :
1642+ f .write (script )
1643+
1644+ cmd = [sys .executable , 'main.py' ]
1645+ env = {'PYTHONIOENCODING' : 'ascii' }
1646+ if sys .platform == 'win32' :
1647+ env ['PYTHONLEGACYWINDOWSSTDIO' ] = 'non-empty-string'
1648+ proc = subprocess .Popen (
1649+ cmd ,
1650+ stdout = subprocess .PIPE ,
1651+ stdin = subprocess .PIPE ,
1652+ stderr = subprocess .PIPE ,
1653+ env = {** os .environ , ** env }
1654+ )
1655+ with proc :
1656+ stdout , stderr = proc .communicate (b'c\n ' )
1657+ self .assertIn (b"UnicodeEncodeError: \' ascii\' codec can\' t encode character "
1658+ b"\' \\ xe7\' in position 21: ordinal not in range(128)" , stderr )
1659+
1660+ finally :
1661+ if save_home is not None :
1662+ os .environ ['HOME' ] = save_home
1663+
16301664 def test_header (self ):
16311665 stdout = StringIO ()
16321666 header = 'Nobody expects... blah, blah, blah'
0 commit comments