[Python-checkins] compare with difflib not diff(1) (GH-5450)

Benjamin Peterson webhook-mailer at python.org
Tue Jan 30 12:03:19 EST 2018


https://github.com/python/cpython/commit/1e17d4aaff5c7ca972bab437949d2bb51c5b30f7
commit: 1e17d4aaff5c7ca972bab437949d2bb51c5b30f7
branch: master
author: Benjamin Peterson <benjamin at python.org>
committer: GitHub <noreply at github.com>
date: 2018年01月30日T09:03:12-08:00
summary:
compare with difflib not diff(1) (GH-5450)
files:
M Lib/lib2to3/tests/test_parser.py
diff --git a/Lib/lib2to3/tests/test_parser.py b/Lib/lib2to3/tests/test_parser.py
index 15f5b63f1f1e..0cbba26bec04 100644
--- a/Lib/lib2to3/tests/test_parser.py
+++ b/Lib/lib2to3/tests/test_parser.py
@@ -12,6 +12,7 @@
 from test.support import verbose
 
 # Python imports
+import difflib
 import importlib
 import operator
 import os
@@ -429,8 +430,8 @@ def test_all_project_files(self):
 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):
@@ -480,17 +481,12 @@ def test_trailing_comma_after_generator_expression_argument_works(self):
 self.validate("set(x for x in [],)")
 
 
-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="")
 
 
 if __name__ == '__main__':


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /