• Eric Appelt's avatar
    closes bpo-30117: fix lib2to3 ParserIdempotency test (GH-1242) · 14e976e0
    Eric Appelt yazdı
    Fix two (in my opinion) spurious failure conditions in the lib2to3.tests.test_parser.TestParserIdempotency test_parser test.
    
        Use the same encoding found in the initial file to write a temp file for a diff. This retains the BOM if the encoding was initially utf-8-sig.
    
        If the file cannot be parsed using the normal grammar, try again with no print statement which should succeed for valid files using future print_function
    
    For case (1), the driver was correctly handling a BOM in a utf-8 file, but then the test was not writing a comparison file using 'utf-8-sig' to diff against, so the BOM got removed. I don't think that is the fault of the parser, and lib2to3 will retain the BOM.
    
    For case (2), lib2to3 pre-detects the use of from __future__ import print_function or allows the user to force this interpretation with a -p flag, and then selects a different grammar with the print statement removed. That makes the test cases unfair to this test as the driver itself doesn't know which grammar to use. As a minimal fix, the test will try using a grammar with the print statement, and if that fails fall back on a grammar without it. A more thorough handling of the idempotency test would to be to parse all files using both grammars and ignore if one of the two failed but otherwise check both. I didn't think this was necessary but can change.
    14e976e0
Adı
Son kayıt (commit)
Son güncelleme
..
fixes Loading commit data...
pgen2 Loading commit data...
tests Loading commit data...
Grammar.txt Loading commit data...
PatternGrammar.txt Loading commit data...
__init__.py Loading commit data...
__main__.py Loading commit data...
btm_matcher.py Loading commit data...
btm_utils.py Loading commit data...
fixer_base.py Loading commit data...
fixer_util.py Loading commit data...
main.py Loading commit data...
patcomp.py Loading commit data...
pygram.py Loading commit data...
pytree.py Loading commit data...
refactor.py Loading commit data...