aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/test/test_coding.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_coding.py')
-rw-r--r--Lib/test/test_coding.py42
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()