mirror of
https://github.com/python/cpython.git
synced 2025-11-01 18:51:43 +00:00
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
........
................
This commit is contained in:
parent
b0ba27dff1
commit
d481e3d791
16 changed files with 201 additions and 60 deletions
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue