diff options
author | Benjamin Peterson <benjamin@python.org> | 2018-01-30 19:31:10 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-30 19:31:10 (GMT) |
commit | eb126eddbd7542ac9d7cd2736116aee2e0bd03dd (patch) | |
tree | f6d54aa0d27cfd2fc5e47891c1512217a84f81da | |
parent | a23a2c555c4187f349276fe2f2ceffa953d0afe9 (diff) | |
download | cpython-eb126eddbd7542ac9d7cd2736116aee2e0bd03dd.zip cpython-eb126eddbd7542ac9d7cd2736116aee2e0bd03dd.tar.gz cpython-eb126eddbd7542ac9d7cd2736116aee2e0bd03dd.tar.bz2 |
[3.6] compare with difflib not diff(1) (GH-5450) (GH-5453)
Co-authored-by: Benjamin Peterson <benjamin@python.org>
-rw-r--r-- | Lib/lib2to3/tests/test_parser.py | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/Lib/lib2to3/tests/test_parser.py b/Lib/lib2to3/tests/test_parser.py index 9d444c2..3fc4995 100644 --- a/Lib/lib2to3/tests/test_parser.py +++ b/Lib/lib2to3/tests/test_parser.py @@ -12,6 +12,7 @@ from .support import driver, driver_no_print_statement from test.support import verbose # Python imports +import difflib import importlib import operator import os @@ -429,8 +430,8 @@ class TestParserIdempotency(support.TestCase): except ParseError as err: self.fail('ParseError on file %s (%s)' % (filepath, err)) new = str(tree) - x = diff(filepath, new, encoding=encoding) - if x: + if new != source: + print(diff_texts(source, new, filepath)) self.fail("Idempotency failed: %s" % filepath) def test_extended_unpacking(self): @@ -473,14 +474,9 @@ class TestLiterals(GrammarTest): self.validate(s) -def diff(fn, result, encoding='utf-8'): - try: - 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)) - finally: - try: - os.remove("@") - except OSError: - pass +def diff_texts(a, b, filename): + a = a.splitlines() + b = b.splitlines() + return difflib.unified_diff(a, b, filename, filename, + "(original)", "(reserialized)", + lineterm="") |