summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_source_encoding.py
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2013-06-13 06:48:15 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2013-06-13 06:48:15 (GMT)
commit29f2d7306861011f4882b23db69bb8dabd06be0d (patch)
treedd23b27ba4da1d7e0638ea4865c49e806fd26f00 /Lib/test/test_source_encoding.py
parente5b25df16d10f6e3fb5010c29bfcc155f8b09bef (diff)
downloadcpython-29f2d7306861011f4882b23db69bb8dabd06be0d.zip
cpython-29f2d7306861011f4882b23db69bb8dabd06be0d.tar.gz
cpython-29f2d7306861011f4882b23db69bb8dabd06be0d.tar.bz2
Issue #18048: Rename test_pep263.py to test_source_encoding.py.
Diffstat (limited to 'Lib/test/test_source_encoding.py')
-rw-r--r--Lib/test/test_source_encoding.py80
1 files changed, 80 insertions, 0 deletions
diff --git a/Lib/test/test_source_encoding.py b/Lib/test/test_source_encoding.py
new file mode 100644
index 0000000..1290bc7
--- /dev/null
+++ b/Lib/test/test_source_encoding.py
@@ -0,0 +1,80 @@
+# -*- 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.assertEqual(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.assertEqual(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_error_message(self):
+ compile(b'# -*- coding: iso-8859-15 -*-\n', 'dummy', 'exec')
+ compile(b'\xef\xbb\xbf\n', 'dummy', 'exec')
+ compile(b'\xef\xbb\xbf# -*- coding: utf-8 -*-\n', 'dummy', 'exec')
+ with self.assertRaisesRegexp(SyntaxError, 'fake'):
+ compile(b'# -*- coding: fake -*-\n', 'dummy', 'exec')
+ with self.assertRaisesRegexp(SyntaxError, 'iso-8859-15'):
+ compile(b'\xef\xbb\xbf# -*- coding: iso-8859-15 -*-\n',
+ 'dummy', 'exec')
+ with self.assertRaisesRegexp(SyntaxError, 'BOM'):
+ compile(b'\xef\xbb\xbf# -*- coding: iso-8859-15 -*-\n',
+ 'dummy', 'exec')
+ with self.assertRaisesRegexp(SyntaxError, 'fake'):
+ compile(b'\xef\xbb\xbf# -*- coding: fake -*-\n', 'dummy', 'exec')
+ with self.assertRaisesRegexp(SyntaxError, 'BOM'):
+ compile(b'\xef\xbb\xbf# -*- coding: fake -*-\n', 'dummy', 'exec')
+
+
+def test_main():
+ support.run_unittest(PEP263Test)
+
+if __name__=="__main__":
+ test_main()