summaryrefslogtreecommitdiff
path: root/Lib/lib2to3/tests/test_parser.py
diff options
context:
space:
mode:
authorBarry Warsaw <barry@python.org>2011-10-07 14:44:49 -0400
committerBarry Warsaw <barry@python.org>2011-10-07 14:44:49 -0400
commit78f89d8c38e2c71c5e6a89a32022626a1d8d8922 (patch)
tree3e7f22261a5bd71fd56a2774c25ecf7c9651055d /Lib/lib2to3/tests/test_parser.py
parent7b847a46bca22797fcb3149d5e52627fc439ba18 (diff)
downloadcpython-git-78f89d8c38e2c71c5e6a89a32022626a1d8d8922.tar.gz
- Issue #11250: Back port fix from 3.3 branch, so that 2to3 can handle files
with line feeds. This was ported from the sandbox to the 3.3 branch, but didn't make it into 3.2. - Re-enable lib2to3's test_parser.py tests, though with an expected failure (see issue 13125).
Diffstat (limited to 'Lib/lib2to3/tests/test_parser.py')
-rw-r--r--Lib/lib2to3/tests/test_parser.py38
1 files changed, 26 insertions, 12 deletions
diff --git a/Lib/lib2to3/tests/test_parser.py b/Lib/lib2to3/tests/test_parser.py
index ce39e41700..f32404cc1b 100644
--- a/Lib/lib2to3/tests/test_parser.py
+++ b/Lib/lib2to3/tests/test_parser.py
@@ -14,10 +14,21 @@ from .support import driver, test_dir
# Python imports
import os
+import unittest
# Local imports
from lib2to3.pgen2 import tokenize
from ..pgen2.parse import ParseError
+from lib2to3.pygram import python_symbols as syms
+
+
+class TestDriver(support.TestCase):
+
+ def test_formfeed(self):
+ s = """print 1\n\x0Cprint 2\n"""
+ t = driver.parse_string(s)
+ self.assertEqual(t.children[0].children[0].type, syms.print_stmt)
+ self.assertEqual(t.children[1].children[0].type, syms.print_stmt)
class GrammarTest(support.TestCase):
@@ -147,19 +158,22 @@ class TestParserIdempotency(support.TestCase):
"""A cut-down version of pytree_idempotency.py."""
+ # Issue 13125
+ @unittest.expectedFailure
def test_all_project_files(self):
for filepath in support.all_project_files():
with open(filepath, "rb") as fp:
encoding = tokenize.detect_encoding(fp.readline)[0]
self.assertTrue(encoding is not None,
"can't detect encoding for %s" % filepath)
- with open(filepath, "r") as fp:
+ with open(filepath, "r", encoding=encoding) as fp:
source = fp.read()
- source = source.decode(encoding)
- tree = driver.parse_string(source)
+ try:
+ tree = driver.parse_string(source)
+ except ParseError as err:
+ print('ParseError on file', filepath, err)
+ continue
new = str(tree)
- if encoding:
- new = new.encode(encoding)
if diff(filepath, new):
self.fail("Idempotency failed: %s" % filepath)
@@ -202,14 +216,14 @@ class TestLiterals(GrammarTest):
self.validate(s)
-def diff(fn, result, encoding):
- f = open("@", "w")
- try:
- f.write(result.encode(encoding))
- finally:
- f.close()
+def diff(fn, result):
try:
+ with open('@', 'w') as f:
+ f.write(str(result))
fn = fn.replace('"', '\\"')
return os.system('diff -u "%s" @' % fn)
finally:
- os.remove("@")
+ try:
+ os.remove("@")
+ except OSError:
+ pass