diff options
Diffstat (limited to 'Lib/test/test_coding.py')
-rw-r--r-- | Lib/test/test_coding.py | 42 |
1 files changed, 35 insertions, 7 deletions
diff --git a/Lib/test/test_coding.py b/Lib/test/test_coding.py index 7f5ddb1934b..f9db0b40f00 100644 --- a/Lib/test/test_coding.py +++ b/Lib/test/test_coding.py @@ -1,6 +1,7 @@ -import test.test_support, unittest -import os +import test.support, unittest +from test.support import TESTFN, unlink, unload +import os, sys class CodingTest(unittest.TestCase): def test_bad_coding(self): @@ -16,13 +17,40 @@ class CodingTest(unittest.TestCase): path = os.path.dirname(__file__) filename = os.path.join(path, module_name + '.py') - with open(filename) as fp: - text = fp.read() - self.assertRaises(SyntaxError, compile, text, filename, 'exec') + with open(filename, "rb") as fp: + bytes = fp.read() + self.assertRaises(SyntaxError, compile, bytes, filename, 'exec') + + def test_exec_valid_coding(self): + d = {} + exec('# coding: cp949\na = 5\n', d) + self.assertEqual(d['a'], 5) + + def test_file_parse(self): + # issue1134: all encodings outside latin-1 and utf-8 fail on + # multiline strings and long lines (>512 columns) + unload(TESTFN) + sys.path.insert(0, os.curdir) + filename = TESTFN + ".py" + f = open(filename, "w") + try: + f.write("# -*- coding: cp1252 -*-\n") + f.write("'''A short string\n") + f.write("'''\n") + f.write("'A very long string %s'\n" % ("X" * 1000)) + f.close() + + __import__(TESTFN) + finally: + f.close() + unlink(filename) + unlink(filename + "c") + unload(TESTFN) + del sys.path[0] def test_error_from_string(self): # See http://bugs.python.org/issue6289 - input = u"# coding: ascii\n\N{SNOWMAN}".encode('utf-8') + input = "# coding: ascii\n\N{SNOWMAN}".encode('utf-8') with self.assertRaises(SyntaxError) as c: compile(input, "<string>", "exec") expected = "'ascii' codec can't decode byte 0xe2 in position 16: " \ @@ -31,7 +59,7 @@ class CodingTest(unittest.TestCase): def test_main(): - test.test_support.run_unittest(CodingTest) + test.support.run_unittest(CodingTest) if __name__ == "__main__": test_main() |