Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions Lib/lib2to3/tests/support.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,13 @@
proj_dir = os.path.normpath(os.path.join(test_dir, ".."))
grammar_path = os.path.join(test_dir, "..", "Grammar.txt")
grammar = pgen2_driver.load_grammar(grammar_path)
grammar_no_print_statement = pgen2_driver.load_grammar(grammar_path)
del grammar_no_print_statement.keywords["print"]
driver = pgen2_driver.Driver(grammar, convert=pytree.convert)
driver_no_print_statement = pgen2_driver.Driver(
grammar_no_print_statement,
convert=pytree.convert
)

def parse_string(string):
return driver.parse_string(reformat(string), debug=True)
Expand Down
19 changes: 9 additions & 10 deletions Lib/lib2to3/tests/test_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

# Testing imports
from . import support
from .support import driver
from .support import driver, driver_no_print_statement
from test.support import verbose

# Python imports
Expand Down Expand Up @@ -413,8 +413,6 @@ 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:
Expand All @@ -425,12 +423,13 @@ def test_all_project_files(self):
source = fp.read()
try:
tree = driver.parse_string(source)
except ParseError as err:
if verbose > 0:
warnings.warn('ParseError on file %s (%s)' % (filepath, err))
continue
except ParseError:
try:
tree = driver_no_print_statement.parse_string(source)
except ParseError as err:
self.fail('ParseError on file %s (%s)' % (filepath, err))
new = str(tree)
x = diff(filepath, new)
x = diff(filepath, new, encoding=encoding)
if x:
self.fail("Idempotency failed: %s" % filepath)

Expand Down Expand Up @@ -481,9 +480,9 @@ def test_trailing_comma_after_generator_expression_argument_works(self):
self.validate("set(x for x in [],)")


def diff(fn, result):
def diff(fn, result, encoding='utf-8'):
try:
with open('@', 'w') as f:
with open('@', 'w', encoding=encoding, newline='\n') as f:
f.write(str(result))
fn = fn.replace('"', '\\"')
return subprocess.call(['diff', '-u', fn, '@'], stdout=(subprocess.DEVNULL if verbose < 1 else None))
Expand Down