annotate Lib/test/test_source_encoding.py @ 87690:66c1c9f32567 default tip

Add use_weakref option to functools.lru_cache The use_weakref option makes lru_cache create weak references to the function arguments when creating the cache key, which prevents them from staying in the memory forever even after all other references to them are gone. This is a proof of concept for http://bugs.python.org/issue19859
author Radomir Dopieralski <devel@sheep.art.pl>
date Tue, 03 Dec 2013 16:02:48 +0100
parents 29e7f6a2dc0d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
51721
33d5d7daa8c7 Merged revisions 69576,69579-69580,69589,69619-69620,69633,69703-69704,69728-69730 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 51634
diff changeset
1 # -*- coding: koi8-r -*-
51634
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
2
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
3 import unittest
59671
80dc4d131d85 Merged revisions 79030-79032 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents: 54917
diff changeset
4 from test.support import TESTFN, unlink, unload
84113
464e8fd7300d Issue #18048: Merge test_pep263.py and test_coding.py into test_source_encoding.py.
Serhiy Storchaka <storchaka@gmail.com>
parents: 84112 84111
diff changeset
5 import importlib
464e8fd7300d Issue #18048: Merge test_pep263.py and test_coding.py into test_source_encoding.py.
Serhiy Storchaka <storchaka@gmail.com>
parents: 84112 84111
diff changeset
6 import os
464e8fd7300d Issue #18048: Merge test_pep263.py and test_coding.py into test_source_encoding.py.
Serhiy Storchaka <storchaka@gmail.com>
parents: 84112 84111
diff changeset
7 import sys
51634
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
8
84113
464e8fd7300d Issue #18048: Merge test_pep263.py and test_coding.py into test_source_encoding.py.
Serhiy Storchaka <storchaka@gmail.com>
parents: 84112 84111
diff changeset
9 class SourceEncodingTest(unittest.TestCase):
51634
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
10
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
11 def test_pep263(self):
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
12 self.assertEqual(
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
13 "ðÉÔÏÎ".encode("utf-8"),
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
14 b'\xd0\x9f\xd0\xb8\xd1\x82\xd0\xbe\xd0\xbd'
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
15 )
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
16 self.assertEqual(
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
17 "\ð".encode("utf-8"),
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
18 b'\\\xd0\x9f'
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
19 )
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
20
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
21 def test_compilestring(self):
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
22 # see #1882
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
23 c = compile(b"\n# coding: utf-8\nu = '\xc3\xb3'\n", "dummy", "exec")
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
24 d = {}
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
25 exec(c, d)
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
26 self.assertEqual(d['u'], '\xf3')
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
27
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
28 def test_issue2301(self):
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
29 try:
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
30 compile(b"# coding: cp932\nprint '\x94\x4e'", "dummy", "exec")
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
31 except SyntaxError as v:
66310
9fe76c26ea9f #9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 59288
diff changeset
32 self.assertEqual(v.text, "print '\u5e74'\n")
51634
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
33 else:
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
34 self.fail()
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
35
51956
8fe2988cf550 ignore the coding cookie in compile(), exec(), and eval() if the source is a string #4626
Benjamin Peterson <benjamin@python.org>
parents: 51721
diff changeset
36 def test_issue4626(self):
8fe2988cf550 ignore the coding cookie in compile(), exec(), and eval() if the source is a string #4626
Benjamin Peterson <benjamin@python.org>
parents: 51721
diff changeset
37 c = compile("# coding=latin-1\n\u00c6 = '\u00c6'", "dummy", "exec")
8fe2988cf550 ignore the coding cookie in compile(), exec(), and eval() if the source is a string #4626
Benjamin Peterson <benjamin@python.org>
parents: 51721
diff changeset
38 d = {}
8fe2988cf550 ignore the coding cookie in compile(), exec(), and eval() if the source is a string #4626
Benjamin Peterson <benjamin@python.org>
parents: 51721
diff changeset
39 exec(c, d)
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 59289
diff changeset
40 self.assertEqual(d['\xc6'], '\xc6')
51956
8fe2988cf550 ignore the coding cookie in compile(), exec(), and eval() if the source is a string #4626
Benjamin Peterson <benjamin@python.org>
parents: 51721
diff changeset
41
56955
f32dc84a876c Merged revisions 75928 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 51956
diff changeset
42 def test_issue3297(self):
f32dc84a876c Merged revisions 75928 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 51956
diff changeset
43 c = compile("a, b = '\U0001010F', '\\U0001010F'", "dummy", "exec")
f32dc84a876c Merged revisions 75928 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 51956
diff changeset
44 d = {}
f32dc84a876c Merged revisions 75928 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 51956
diff changeset
45 exec(c, d)
f32dc84a876c Merged revisions 75928 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 51956
diff changeset
46 self.assertEqual(d['a'], d['b'])
f32dc84a876c Merged revisions 75928 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 51956
diff changeset
47 self.assertEqual(len(d['a']), len(d['b']))
f32dc84a876c Merged revisions 75928 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 51956
diff changeset
48 self.assertEqual(ascii(d['a']), ascii(d['b']))
f32dc84a876c Merged revisions 75928 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 51956
diff changeset
49
59289
6537761c3101 Merged revisions 78608 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56955
diff changeset
50 def test_issue7820(self):
6537761c3101 Merged revisions 78608 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56955
diff changeset
51 # Ensure that check_bom() restores all bytes in the right order if
6537761c3101 Merged revisions 78608 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56955
diff changeset
52 # check_bom() fails in pydebug mode: a buffer starts with the first
6537761c3101 Merged revisions 78608 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56955
diff changeset
53 # byte of a valid BOM, but next bytes are different
6537761c3101 Merged revisions 78608 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56955
diff changeset
54
6537761c3101 Merged revisions 78608 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56955
diff changeset
55 # one byte in common with the UTF-16-LE BOM
6537761c3101 Merged revisions 78608 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56955
diff changeset
56 self.assertRaises(SyntaxError, eval, b'\xff\x20')
6537761c3101 Merged revisions 78608 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56955
diff changeset
57
6537761c3101 Merged revisions 78608 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56955
diff changeset
58 # two bytes in common with the UTF-8 BOM
6537761c3101 Merged revisions 78608 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56955
diff changeset
59 self.assertRaises(SyntaxError, eval, b'\xef\xbb\x20')
6537761c3101 Merged revisions 78608 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56955
diff changeset
60
84063
15aa786b723b Issue #18038: SyntaxError raised during compilation sources with illegal
Serhiy Storchaka <storchaka@gmail.com>
parents: 68257
diff changeset
61 def test_error_message(self):
15aa786b723b Issue #18038: SyntaxError raised during compilation sources with illegal
Serhiy Storchaka <storchaka@gmail.com>
parents: 68257
diff changeset
62 compile(b'# -*- coding: iso-8859-15 -*-\n', 'dummy', 'exec')
15aa786b723b Issue #18038: SyntaxError raised during compilation sources with illegal
Serhiy Storchaka <storchaka@gmail.com>
parents: 68257
diff changeset
63 compile(b'\xef\xbb\xbf\n', 'dummy', 'exec')
15aa786b723b Issue #18038: SyntaxError raised during compilation sources with illegal
Serhiy Storchaka <storchaka@gmail.com>
parents: 68257
diff changeset
64 compile(b'\xef\xbb\xbf# -*- coding: utf-8 -*-\n', 'dummy', 'exec')
84164
4f7c25ab2ed2 Stop using the deprecated unittest.TestCase.assertRaisesRegexp()
Brett Cannon <brett@python.org>
parents: 84113
diff changeset
65 with self.assertRaisesRegex(SyntaxError, 'fake'):
84063
15aa786b723b Issue #18038: SyntaxError raised during compilation sources with illegal
Serhiy Storchaka <storchaka@gmail.com>
parents: 68257
diff changeset
66 compile(b'# -*- coding: fake -*-\n', 'dummy', 'exec')
84164
4f7c25ab2ed2 Stop using the deprecated unittest.TestCase.assertRaisesRegexp()
Brett Cannon <brett@python.org>
parents: 84113
diff changeset
67 with self.assertRaisesRegex(SyntaxError, 'iso-8859-15'):
84063
15aa786b723b Issue #18038: SyntaxError raised during compilation sources with illegal
Serhiy Storchaka <storchaka@gmail.com>
parents: 68257
diff changeset
68 compile(b'\xef\xbb\xbf# -*- coding: iso-8859-15 -*-\n',
15aa786b723b Issue #18038: SyntaxError raised during compilation sources with illegal
Serhiy Storchaka <storchaka@gmail.com>
parents: 68257
diff changeset
69 'dummy', 'exec')
84164
4f7c25ab2ed2 Stop using the deprecated unittest.TestCase.assertRaisesRegexp()
Brett Cannon <brett@python.org>
parents: 84113
diff changeset
70 with self.assertRaisesRegex(SyntaxError, 'BOM'):
84063
15aa786b723b Issue #18038: SyntaxError raised during compilation sources with illegal
Serhiy Storchaka <storchaka@gmail.com>
parents: 68257
diff changeset
71 compile(b'\xef\xbb\xbf# -*- coding: iso-8859-15 -*-\n',
15aa786b723b Issue #18038: SyntaxError raised during compilation sources with illegal
Serhiy Storchaka <storchaka@gmail.com>
parents: 68257
diff changeset
72 'dummy', 'exec')
84164
4f7c25ab2ed2 Stop using the deprecated unittest.TestCase.assertRaisesRegexp()
Brett Cannon <brett@python.org>
parents: 84113
diff changeset
73 with self.assertRaisesRegex(SyntaxError, 'fake'):
84063
15aa786b723b Issue #18038: SyntaxError raised during compilation sources with illegal
Serhiy Storchaka <storchaka@gmail.com>
parents: 68257
diff changeset
74 compile(b'\xef\xbb\xbf# -*- coding: fake -*-\n', 'dummy', 'exec')
84164
4f7c25ab2ed2 Stop using the deprecated unittest.TestCase.assertRaisesRegexp()
Brett Cannon <brett@python.org>
parents: 84113
diff changeset
75 with self.assertRaisesRegex(SyntaxError, 'BOM'):
84063
15aa786b723b Issue #18038: SyntaxError raised during compilation sources with illegal
Serhiy Storchaka <storchaka@gmail.com>
parents: 68257
diff changeset
76 compile(b'\xef\xbb\xbf# -*- coding: fake -*-\n', 'dummy', 'exec')
15aa786b723b Issue #18038: SyntaxError raised during compilation sources with illegal
Serhiy Storchaka <storchaka@gmail.com>
parents: 68257
diff changeset
77
35666
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
78 def test_bad_coding(self):
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
79 module_name = 'bad_coding'
36078
1ff4790b7605 Fix Bug #1378022, UTF-8 files with a leading BOM crashed the interpreter.
Neal Norwitz <nnorwitz@gmail.com>
parents: 35666
diff changeset
80 self.verify_bad_module(module_name)
84063
15aa786b723b Issue #18038: SyntaxError raised during compilation sources with illegal
Serhiy Storchaka <storchaka@gmail.com>
parents: 68257
diff changeset
81
36078
1ff4790b7605 Fix Bug #1378022, UTF-8 files with a leading BOM crashed the interpreter.
Neal Norwitz <nnorwitz@gmail.com>
parents: 35666
diff changeset
82 def test_bad_coding2(self):
1ff4790b7605 Fix Bug #1378022, UTF-8 files with a leading BOM crashed the interpreter.
Neal Norwitz <nnorwitz@gmail.com>
parents: 35666
diff changeset
83 module_name = 'bad_coding2'
1ff4790b7605 Fix Bug #1378022, UTF-8 files with a leading BOM crashed the interpreter.
Neal Norwitz <nnorwitz@gmail.com>
parents: 35666
diff changeset
84 self.verify_bad_module(module_name)
1ff4790b7605 Fix Bug #1378022, UTF-8 files with a leading BOM crashed the interpreter.
Neal Norwitz <nnorwitz@gmail.com>
parents: 35666
diff changeset
85
1ff4790b7605 Fix Bug #1378022, UTF-8 files with a leading BOM crashed the interpreter.
Neal Norwitz <nnorwitz@gmail.com>
parents: 35666
diff changeset
86 def verify_bad_module(self, module_name):
35666
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
87 self.assertRaises(SyntaxError, __import__, 'test.' + module_name)
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
88
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
89 path = os.path.dirname(__file__)
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
90 filename = os.path.join(path, module_name + '.py')
59671
80dc4d131d85 Merged revisions 79030-79032 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents: 54917
diff changeset
91 with open(filename, "rb") as fp:
80dc4d131d85 Merged revisions 79030-79032 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents: 54917
diff changeset
92 bytes = fp.read()
51956
8fe2988cf550 ignore the coding cookie in compile(), exec(), and eval() if the source is a string #4626
Benjamin Peterson <benjamin@python.org>
parents: 51721
diff changeset
93 self.assertRaises(SyntaxError, compile, bytes, filename, 'exec')
35666
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
94
42548
e0f62286a9a4 Fix problem when exec'ing a string with a coding
Neal Norwitz <nnorwitz@gmail.com>
parents: 36078
diff changeset
95 def test_exec_valid_coding(self):
e0f62286a9a4 Fix problem when exec'ing a string with a coding
Neal Norwitz <nnorwitz@gmail.com>
parents: 36078
diff changeset
96 d = {}
84218
959f4ce4d590 Issue #18202: Fix minor bugs and cleanup test_source_encoding.py.
Serhiy Storchaka <storchaka@gmail.com>
parents: 84164
diff changeset
97 exec(b'# coding: cp949\na = "\xaa\xa7"\n', d)
959f4ce4d590 Issue #18202: Fix minor bugs and cleanup test_source_encoding.py.
Serhiy Storchaka <storchaka@gmail.com>
parents: 84164
diff changeset
98 self.assertEqual(d['a'], '\u3047')
51634
969378ea4c77 Merged revisions 69617 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
99
43873
1739869cbc6e Correction for issue1134: all source files with a coding spec, except latin-1
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 42574
diff changeset
100 def test_file_parse(self):
1739869cbc6e Correction for issue1134: all source files with a coding spec, except latin-1
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 42574
diff changeset
101 # issue1134: all encodings outside latin-1 and utf-8 fail on
1739869cbc6e Correction for issue1134: all source files with a coding spec, except latin-1
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 42574
diff changeset
102 # multiline strings and long lines (>512 columns)
59671
80dc4d131d85 Merged revisions 79030-79032 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents: 54917
diff changeset
103 unload(TESTFN)
84218
959f4ce4d590 Issue #18202: Fix minor bugs and cleanup test_source_encoding.py.
Serhiy Storchaka <storchaka@gmail.com>
parents: 84164
diff changeset
104 filename = TESTFN + ".py"
959f4ce4d590 Issue #18202: Fix minor bugs and cleanup test_source_encoding.py.
Serhiy Storchaka <storchaka@gmail.com>
parents: 84164
diff changeset
105 f = open(filename, "w", encoding="cp1252")
59671
80dc4d131d85 Merged revisions 79030-79032 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents: 54917
diff changeset
106 sys.path.insert(0, os.curdir)
43873
1739869cbc6e Correction for issue1134: all source files with a coding spec, except latin-1
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 42574
diff changeset
107 try:
84218
959f4ce4d590 Issue #18202: Fix minor bugs and cleanup test_source_encoding.py.
Serhiy Storchaka <storchaka@gmail.com>
parents: 84164
diff changeset
108 with f:
959f4ce4d590 Issue #18202: Fix minor bugs and cleanup test_source_encoding.py.
Serhiy Storchaka <storchaka@gmail.com>
parents: 84164
diff changeset
109 f.write("# -*- coding: cp1252 -*-\n")
959f4ce4d590 Issue #18202: Fix minor bugs and cleanup test_source_encoding.py.
Serhiy Storchaka <storchaka@gmail.com>
parents: 84164
diff changeset
110 f.write("'''A short string\n")
959f4ce4d590 Issue #18202: Fix minor bugs and cleanup test_source_encoding.py.
Serhiy Storchaka <storchaka@gmail.com>
parents: 84164
diff changeset
111 f.write("'''\n")
959f4ce4d590 Issue #18202: Fix minor bugs and cleanup test_source_encoding.py.
Serhiy Storchaka <storchaka@gmail.com>
parents: 84164
diff changeset
112 f.write("'A very long string %s'\n" % ("X" * 1000))
43873
1739869cbc6e Correction for issue1134: all source files with a coding spec, except latin-1
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 42574
diff changeset
113
76306
02f251c41a17 Fix an import race condition.
Brett Cannon <brett@python.org>
parents: 59671
diff changeset
114 importlib.invalidate_caches()
43880
4a6a7aea57f4 Correct a failing test when test_import is run after test_coding:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 43873
diff changeset
115 __import__(TESTFN)
43873
1739869cbc6e Correction for issue1134: all source files with a coding spec, except latin-1
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 42574
diff changeset
116 finally:
84218
959f4ce4d590 Issue #18202: Fix minor bugs and cleanup test_source_encoding.py.
Serhiy Storchaka <storchaka@gmail.com>
parents: 84164
diff changeset
117 del sys.path[0]
59671
80dc4d131d85 Merged revisions 79030-79032 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents: 54917
diff changeset
118 unlink(filename)
80dc4d131d85 Merged revisions 79030-79032 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents: 54917
diff changeset
119 unlink(filename + "c")
84218
959f4ce4d590 Issue #18202: Fix minor bugs and cleanup test_source_encoding.py.
Serhiy Storchaka <storchaka@gmail.com>
parents: 84164
diff changeset
120 unlink(filename + "o")
59671
80dc4d131d85 Merged revisions 79030-79032 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents: 54917
diff changeset
121 unload(TESTFN)
43873
1739869cbc6e Correction for issue1134: all source files with a coding spec, except latin-1
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 42574
diff changeset
122
54917
f94c09aa4444 Merged revisions 73623-73624 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 51956
diff changeset
123 def test_error_from_string(self):
f94c09aa4444 Merged revisions 73623-73624 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 51956
diff changeset
124 # See http://bugs.python.org/issue6289
f94c09aa4444 Merged revisions 73623-73624 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 51956
diff changeset
125 input = "# coding: ascii\n\N{SNOWMAN}".encode('utf-8')
59671
80dc4d131d85 Merged revisions 79030-79032 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents: 54917
diff changeset
126 with self.assertRaises(SyntaxError) as c:
54917
f94c09aa4444 Merged revisions 73623-73624 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 51956
diff changeset
127 compile(input, "<string>", "exec")
59671
80dc4d131d85 Merged revisions 79030-79032 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents: 54917
diff changeset
128 expected = "'ascii' codec can't decode byte 0xe2 in position 16: " \
80dc4d131d85 Merged revisions 79030-79032 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents: 54917
diff changeset
129 "ordinal not in range(128)"
84218
959f4ce4d590 Issue #18202: Fix minor bugs and cleanup test_source_encoding.py.
Serhiy Storchaka <storchaka@gmail.com>
parents: 84164
diff changeset
130 self.assertTrue(c.exception.args[0].startswith(expected),
959f4ce4d590 Issue #18202: Fix minor bugs and cleanup test_source_encoding.py.
Serhiy Storchaka <storchaka@gmail.com>
parents: 84164
diff changeset
131 msg=c.exception.args[0])
59671
80dc4d131d85 Merged revisions 79030-79032 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents: 54917
diff changeset
132
54917
f94c09aa4444 Merged revisions 73623-73624 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 51956
diff changeset
133
35666
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
134 if __name__ == "__main__":
84113
464e8fd7300d Issue #18048: Merge test_pep263.py and test_coding.py into test_source_encoding.py.
Serhiy Storchaka <storchaka@gmail.com>
parents: 84112 84111
diff changeset
135 unittest.main()