mirror of
https://github.com/python/cpython.git
synced 2024-12-04 07:15:09 +08:00
6aa278ee53
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. ........
63 lines
1.8 KiB
Python
63 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'\n")
|
|
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()
|