diff options
author | Benjamin Peterson <benjamin@python.org> | 2009-05-09 19:42:23 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2009-05-09 19:42:23 (GMT) |
commit | d481e3d7914d20238c62c76991255b3b2b5e4a17 (patch) | |
tree | fb9a3831c561486f09fde515d41410c3f8753007 /Lib/lib2to3/tests/test_parser.py | |
parent | b0ba27dff1442fe6dc7b00ce7d8488afb159d9b8 (diff) | |
download | cpython-d481e3d7914d20238c62c76991255b3b2b5e4a17.zip cpython-d481e3d7914d20238c62c76991255b3b2b5e4a17.tar.gz cpython-d481e3d7914d20238c62c76991255b3b2b5e4a17.tar.bz2 |
Merged revisions 72494 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
................
r72494 | benjamin.peterson | 2009-05-08 20:01:14 -0500 (Fri, 08 May 2009) | 21 lines
Merged revisions 72491-72493 via svnmerge from
svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3
........
r72491 | benjamin.peterson | 2009-05-08 19:33:27 -0500 (Fri, 08 May 2009) | 7 lines
make 2to3 use unicode internally on 2.x
This started out as a fix for #2660, but became this large refactoring
when I realized the dire state this was in. 2to3 now uses
tokenize.detect_encoding to decode the files correctly into unicode.
........
r72492 | benjamin.peterson | 2009-05-08 19:35:38 -0500 (Fri, 08 May 2009) | 1 line
remove compat code
........
r72493 | benjamin.peterson | 2009-05-08 19:54:15 -0500 (Fri, 08 May 2009) | 1 line
add a test for \r\n newlines
........
................
Diffstat (limited to 'Lib/lib2to3/tests/test_parser.py')
-rw-r--r-- | Lib/lib2to3/tests/test_parser.py | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/Lib/lib2to3/tests/test_parser.py b/Lib/lib2to3/tests/test_parser.py index 83aa812..2aa737c 100644 --- a/Lib/lib2to3/tests/test_parser.py +++ b/Lib/lib2to3/tests/test_parser.py @@ -14,9 +14,9 @@ from .support import driver, test_dir # Python imports import os -import os.path # Local imports +from lib2to3.pgen2 import tokenize from ..pgen2.parse import ParseError @@ -150,13 +150,25 @@ class TestParserIdempotency(support.TestCase): def test_all_project_files(self): for filepath in support.all_project_files(): print("Parsing %s..." % filepath) - tree = driver.parse_file(filepath, debug=True) - if diff(filepath, tree): + with open(filepath, "rb") as fp: + encoding = tokenize.detect_encoding(fp.readline)[0] + fp.seek(0) + source = fp.read() + if encoding: + source = source.decode(encoding) + tree = driver.parse_string(source) + new = str(tree) + if encoding: + new = new.encode(encoding) + if diff(filepath, new): self.fail("Idempotency failed: %s" % filepath) class TestLiterals(GrammarTest): + def validate(self, s): + driver.parse_string(support.dedent(s) + "\n\n") + def test_multiline_bytes_literals(self): s = """ md5test(b"\xaa" * 80, @@ -185,10 +197,10 @@ class TestLiterals(GrammarTest): self.validate(s) -def diff(fn, tree): +def diff(fn, result): f = open("@", "w") try: - f.write(str(tree)) + f.write(result) finally: f.close() try: |