Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_coding.py @ 64166:d0e9febfa00a 3.1
Merged revisions 84172 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r84172 | martin.v.loewis | 2010-08-18 18:12:23 +0200 (Mi, 18 Aug 2010) | 2 lines
Restore GIL in nis_cat in case of error.
........
| author | Martin v. Löwis <martin@v.loewis.de> |
|---|---|
| date | Thu, 19 Aug 2010 09:03:03 +0000 |
| parents | f94c09aa4444 |
| children | 80dc4d131d85 |
| rev | line source |
|---|---|
|
35666
b8e571e6de2e
- Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff
changeset
|
1 |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46463
diff
changeset
|
2 import test.support, unittest |
|
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46463
diff
changeset
|
3 from test.support import TESTFN, unlink |
|
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
|
4 import os, sys |
|
35666
b8e571e6de2e
- Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff
changeset
|
5 |
|
b8e571e6de2e
- Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff
changeset
|
6 class CodingTest(unittest.TestCase): |
|
b8e571e6de2e
- Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff
changeset
|
7 def test_bad_coding(self): |
|
b8e571e6de2e
- Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff
changeset
|
8 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
|
9 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
|
10 |
|
1ff4790b7605
Fix Bug #1378022, UTF-8 files with a leading BOM crashed the interpreter.
Neal Norwitz <nnorwitz@gmail.com>
parents:
35666
diff
changeset
|
11 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
|
12 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
|
13 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
|
14 |
|
1ff4790b7605
Fix Bug #1378022, UTF-8 files with a leading BOM crashed the interpreter.
Neal Norwitz <nnorwitz@gmail.com>
parents:
35666
diff
changeset
|
15 def verify_bad_module(self, module_name): |
|
35666
b8e571e6de2e
- Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff
changeset
|
16 self.assertRaises(SyntaxError, __import__, 'test.' + module_name) |
|
b8e571e6de2e
- Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff
changeset
|
17 |
|
b8e571e6de2e
- Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff
changeset
|
18 path = os.path.dirname(__file__) |
|
b8e571e6de2e
- Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff
changeset
|
19 filename = os.path.join(path, module_name + '.py') |
|
51956
8fe2988cf550
ignore the coding cookie in compile(), exec(), and eval() if the source is a string #4626
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
20 fp = open(filename, "rb") |
|
8fe2988cf550
ignore the coding cookie in compile(), exec(), and eval() if the source is a string #4626
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
21 bytes = fp.read() |
|
35666
b8e571e6de2e
- Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff
changeset
|
22 fp.close() |
|
51956
8fe2988cf550
ignore the coding cookie in compile(), exec(), and eval() if the source is a string #4626
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
23 self.assertRaises(SyntaxError, compile, bytes, filename, 'exec') |
|
35666
b8e571e6de2e
- Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff
changeset
|
24 |
|
42548
e0f62286a9a4
Fix problem when exec'ing a string with a coding
Neal Norwitz <nnorwitz@gmail.com>
parents:
36078
diff
changeset
|
25 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
|
26 d = {} |
|
e0f62286a9a4
Fix problem when exec'ing a string with a coding
Neal Norwitz <nnorwitz@gmail.com>
parents:
36078
diff
changeset
|
27 exec('# coding: cp949\na = 5\n', d) |
|
e0f62286a9a4
Fix problem when exec'ing a string with a coding
Neal Norwitz <nnorwitz@gmail.com>
parents:
36078
diff
changeset
|
28 self.assertEqual(d['a'], 5) |
|
e0f62286a9a4
Fix problem when exec'ing a string with a coding
Neal Norwitz <nnorwitz@gmail.com>
parents:
36078
diff
changeset
|
29 |
|
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
|
30 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
|
31 # 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
|
32 # multiline strings and long lines (>512 columns) |
|
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
|
33 if TESTFN in sys.modules: |
|
4a6a7aea57f4
Correct a failing test when test_import is run after test_coding:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
43873
diff
changeset
|
34 del sys.modules[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
|
35 sys.path.insert(0, ".") |
|
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
|
36 filename = TESTFN + ".py" |
|
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
|
37 f = open(filename, "w") |
|
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
|
38 try: |
|
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
|
39 f.write("# -*- coding: cp1252 -*-\n") |
|
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
|
40 f.write("'''A short string\n") |
|
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
|
41 f.write("'''\n") |
|
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
|
42 f.write("'A very long string %s'\n" % ("X" * 1000)) |
|
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
|
43 f.close() |
|
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
|
44 |
|
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
|
45 __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
|
46 finally: |
|
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
|
47 f.close() |
|
46463
48289645cdef
Have test_coding conditionally remove test files instead of assuming that they
Brett Cannon <bcannon@gmail.com>
parents:
43880
diff
changeset
|
48 unlink(TESTFN+".py") |
|
48289645cdef
Have test_coding conditionally remove test files instead of assuming that they
Brett Cannon <bcannon@gmail.com>
parents:
43880
diff
changeset
|
49 unlink(TESTFN+".pyc") |
|
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
|
50 sys.path.pop(0) |
|
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
|
51 |
|
54917
f94c09aa4444
Merged revisions 73623-73624 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51956
diff
changeset
|
52 def test_error_from_string(self): |
|
f94c09aa4444
Merged revisions 73623-73624 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51956
diff
changeset
|
53 # See http://bugs.python.org/issue6289 |
|
f94c09aa4444
Merged revisions 73623-73624 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51956
diff
changeset
|
54 input = "# coding: ascii\n\N{SNOWMAN}".encode('utf-8') |
|
f94c09aa4444
Merged revisions 73623-73624 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51956
diff
changeset
|
55 try: |
|
f94c09aa4444
Merged revisions 73623-73624 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51956
diff
changeset
|
56 compile(input, "<string>", "exec") |
|
f94c09aa4444
Merged revisions 73623-73624 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51956
diff
changeset
|
57 except SyntaxError as e: |
|
f94c09aa4444
Merged revisions 73623-73624 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51956
diff
changeset
|
58 expected = "'ascii' codec can't decode byte 0xe2 in position 16: " \ |
|
f94c09aa4444
Merged revisions 73623-73624 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51956
diff
changeset
|
59 "ordinal not in range(128)" |
|
f94c09aa4444
Merged revisions 73623-73624 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51956
diff
changeset
|
60 self.assertTrue(str(e).startswith(expected)) |
|
f94c09aa4444
Merged revisions 73623-73624 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51956
diff
changeset
|
61 else: |
|
f94c09aa4444
Merged revisions 73623-73624 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51956
diff
changeset
|
62 self.fail("didn't raise") |
|
f94c09aa4444
Merged revisions 73623-73624 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51956
diff
changeset
|
63 |
|
35666
b8e571e6de2e
- Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff
changeset
|
64 def test_main(): |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46463
diff
changeset
|
65 test.support.run_unittest(CodingTest) |
|
35666
b8e571e6de2e
- Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff
changeset
|
66 |
|
b8e571e6de2e
- Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff
changeset
|
67 if __name__ == "__main__": |
|
b8e571e6de2e
- Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff
changeset
|
68 test_main() |
