Issue #6697: Fix a crash if code of "python -c code" contains surrogates

This commit is contained in:
Victor Stinner 2010-05-17 01:13:37 +00:00
parent f155f1f4ce
commit 6baded49d0
2 changed files with 26 additions and 4 deletions

View file

@ -449,6 +449,24 @@ class SysModuleTest(unittest.TestCase):
self.assertRaises(TypeError, sys.intern, S("abc"))
def test_main_invalid_unicode(self):
import locale
non_decodable = b"\xff"
encoding = locale.getpreferredencoding()
try:
non_decodable.decode(encoding)
except UnicodeDecodeError:
pass
else:
self.skipTest('%r is decodable with encoding %s'
% (non_decodable, encoding))
code = b'print("' + non_decodable + b'")'
p = subprocess.Popen([sys.executable, "-c", code], stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
self.assertEqual(p.returncode, 1)
self.assert_(stderr.startswith(b"UnicodeEncodeError: "
b"'utf-8' codec can't encode character '\\udcff' in "
b"position 7: surrogates not allowed"), stderr)
def test_sys_flags(self):
self.assertTrue(sys.flags)