annotate Lib/test/test_coding.py @ 47201:9c930a32cebb

#2621 rename test.test_support to test.support
author Benjamin Peterson <benjamin@python.org>
date Tue, 20 May 2008 21:35:26 +0000
parents 48289645cdef
children 8fe2988cf550
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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')
42574
4bce94d9ec31 Fix a test failure on non-UTF-8 locales: bad_coding2.py is encoded
Hye-Shik Chang <hyeshik@gmail.com>
parents: 42548
diff changeset
20 fp = open(filename, encoding='utf-8')
35666
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
21 text = fp.read()
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
22 fp.close()
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
23 self.assertRaises(SyntaxError, compile, text, filename, 'exec')
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
35666
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
52 def test_main():
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 46463
diff changeset
53 test.support.run_unittest(CodingTest)
35666
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
54
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
55 if __name__ == "__main__":
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
56 test_main()