mirror of
https://github.com/python/cpython.git
synced 2025-07-16 07:45:20 +00:00

svn+ssh://pythondev@svn.python.org/python/branches/py3k ................ r78608 | victor.stinner | 2010-03-03 01:18:49 +0100 (mer., 03 mars 2010) | 12 lines Merged revisions 78603 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r78603 | victor.stinner | 2010-03-03 00:20:02 +0100 (mer., 03 mars 2010) | 5 lines Issue #7820: The parser tokenizer restores all bytes in the right if the BOM check fails. Fix an assertion in pydebug mode. ........ ................
62 lines
1.8 KiB
Python
62 lines
1.8 KiB
Python
# -*- coding: koi8-r -*-
|
|
|
|
import unittest
|
|
from test import support
|
|
|
|
class PEP263Test(unittest.TestCase):
|
|
|
|
def test_pep263(self):
|
|
self.assertEqual(
|
|
"ðÉÔÏÎ".encode("utf-8"),
|
|
b'\xd0\x9f\xd0\xb8\xd1\x82\xd0\xbe\xd0\xbd'
|
|
)
|
|
self.assertEqual(
|
|
"\ð".encode("utf-8"),
|
|
b'\\\xd0\x9f'
|
|
)
|
|
|
|
def test_compilestring(self):
|
|
# see #1882
|
|
c = compile(b"\n# coding: utf-8\nu = '\xc3\xb3'\n", "dummy", "exec")
|
|
d = {}
|
|
exec(c, d)
|
|
self.assertEqual(d['u'], '\xf3')
|
|
|
|
def test_issue2301(self):
|
|
try:
|
|
compile(b"# coding: cp932\nprint '\x94\x4e'", "dummy", "exec")
|
|
except SyntaxError as v:
|
|
self.assertEquals(v.text, "print '\u5e74'")
|
|
else:
|
|
self.fail()
|
|
|
|
def test_issue4626(self):
|
|
c = compile("# coding=latin-1\n\u00c6 = '\u00c6'", "dummy", "exec")
|
|
d = {}
|
|
exec(c, d)
|
|
self.assertEquals(d['\xc6'], '\xc6')
|
|
|
|
def test_issue3297(self):
|
|
c = compile("a, b = '\U0001010F', '\\U0001010F'", "dummy", "exec")
|
|
d = {}
|
|
exec(c, d)
|
|
self.assertEqual(d['a'], d['b'])
|
|
self.assertEqual(len(d['a']), len(d['b']))
|
|
self.assertEqual(ascii(d['a']), ascii(d['b']))
|
|
|
|
def test_issue7820(self):
|
|
# Ensure that check_bom() restores all bytes in the right order if
|
|
# check_bom() fails in pydebug mode: a buffer starts with the first
|
|
# byte of a valid BOM, but next bytes are different
|
|
|
|
# one byte in common with the UTF-16-LE BOM
|
|
self.assertRaises(SyntaxError, eval, b'\xff\x20')
|
|
|
|
# two bytes in common with the UTF-8 BOM
|
|
self.assertRaises(SyntaxError, eval, b'\xef\xbb\x20')
|
|
|
|
def test_main():
|
|
support.run_unittest(PEP263Test)
|
|
|
|
if __name__=="__main__":
|
|
test_main()
|