annotate Lib/test/test_coding.py @ 84007:dbfbdf2b5c19 3.3

Fix #17967: For ftp urls CWD to target instead of hopping to each directory towards target. This fixes a bug where target is accessible, but parent directories are restricted.
author Senthil Kumaran <senthil@uthcode.com>
date Sat, 01 Jun 2013 08:27:06 -0700
parents 02f251c41a17
children 410ea970866e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 46463
diff changeset
1 import test.support, unittest
59671
80dc4d131d85 Merged revisions 79030-79032 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents: 54917
diff changeset
2 from test.support import TESTFN, unlink, unload
76306
02f251c41a17 Fix an import race condition.
Brett Cannon <brett@python.org>
parents: 59671
diff changeset
3 import importlib, os, sys
35666
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
4
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
5 class CodingTest(unittest.TestCase):
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
6 def test_bad_coding(self):
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
7 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
8 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
9
1ff4790b7605 Fix Bug #1378022, UTF-8 files with a leading BOM crashed the interpreter.
Neal Norwitz <nnorwitz@gmail.com>
parents: 35666
diff changeset
10 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
11 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
12 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
13
1ff4790b7605 Fix Bug #1378022, UTF-8 files with a leading BOM crashed the interpreter.
Neal Norwitz <nnorwitz@gmail.com>
parents: 35666
diff changeset
14 def verify_bad_module(self, module_name):
35666
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
15 self.assertRaises(SyntaxError, __import__, 'test.' + module_name)
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
16
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
17 path = os.path.dirname(__file__)
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
18 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
19 with open(filename, "rb") as fp:
80dc4d131d85 Merged revisions 79030-79032 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents: 54917
diff changeset
20 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: 47201
diff changeset
21 self.assertRaises(SyntaxError, compile, bytes, filename, 'exec')
35666
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
22
42548
e0f62286a9a4 Fix problem when exec'ing a string with a coding
Neal Norwitz <nnorwitz@gmail.com>
parents: 36078
diff changeset
23 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
24 d = {}
e0f62286a9a4 Fix problem when exec'ing a string with a coding
Neal Norwitz <nnorwitz@gmail.com>
parents: 36078
diff changeset
25 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
26 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
27
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
28 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
29 # 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
30 # 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
31 unload(TESTFN)
80dc4d131d85 Merged revisions 79030-79032 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents: 54917
diff changeset
32 sys.path.insert(0, os.curdir)
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 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
34 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
35 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
36 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
37 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
38 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
39 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
40 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
41
76306
02f251c41a17 Fix an import race condition.
Brett Cannon <brett@python.org>
parents: 59671
diff changeset
42 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
43 __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
44 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
45 f.close()
59671
80dc4d131d85 Merged revisions 79030-79032 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents: 54917
diff changeset
46 unlink(filename)
80dc4d131d85 Merged revisions 79030-79032 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents: 54917
diff changeset
47 unlink(filename + "c")
80dc4d131d85 Merged revisions 79030-79032 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents: 54917
diff changeset
48 unload(TESTFN)
80dc4d131d85 Merged revisions 79030-79032 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents: 54917
diff changeset
49 del sys.path[0]
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
54917
f94c09aa4444 Merged revisions 73623-73624 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 51956
diff changeset
51 def test_error_from_string(self):
f94c09aa4444 Merged revisions 73623-73624 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 51956
diff changeset
52 # See http://bugs.python.org/issue6289
f94c09aa4444 Merged revisions 73623-73624 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 51956
diff changeset
53 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
54 with self.assertRaises(SyntaxError) as c:
54917
f94c09aa4444 Merged revisions 73623-73624 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 51956
diff changeset
55 compile(input, "<string>", "exec")
59671
80dc4d131d85 Merged revisions 79030-79032 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents: 54917
diff changeset
56 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
57 "ordinal not in range(128)"
80dc4d131d85 Merged revisions 79030-79032 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents: 54917
diff changeset
58 self.assertTrue(c.exception.args[0].startswith(expected))
80dc4d131d85 Merged revisions 79030-79032 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents: 54917
diff changeset
59
54917
f94c09aa4444 Merged revisions 73623-73624 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 51956
diff changeset
60
35666
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
61 def test_main():
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 46463
diff changeset
62 test.support.run_unittest(CodingTest)
35666
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
63
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
64 if __name__ == "__main__":
b8e571e6de2e - Fix segfault with invalid coding.
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
65 test_main()