Print filenames in the diff

This commit is contained in:
Joey Pinhas 2019-09-24 15:42:24 -04:00
parent 7d878b55ff
commit ec6c39ee62
2 changed files with 20 additions and 9 deletions

View file

@ -1,11 +1,11 @@
from __future__ import print_function from __future__ import print_function
import argparse import argparse
import difflib
import io import io
import json import json
import sys import sys
from collections import OrderedDict from collections import OrderedDict
from difflib import unified_diff
from typing import List from typing import List
from typing import Mapping from typing import Mapping
from typing import Optional from typing import Optional
@ -56,11 +56,11 @@ def parse_topkeys(s): # type: (str) -> List[str]
return s.split(',') return s.split(',')
def get_diff(source, target): # type: (str, str) -> str def get_diff(source, target, file): # type: (str, str, str) -> str
source_lines = source.splitlines(True) source_lines = source.splitlines(True)
target_lines = target.splitlines(True) target_lines = target.splitlines(True)
diff = ''.join(difflib.unified_diff(source_lines, target_lines)) diff = unified_diff(source_lines, target_lines, fromfile=file, tofile=file)
return diff return ''.join(diff)
def main(argv=None): # type: (Optional[Sequence[str]]) -> int def main(argv=None): # type: (Optional[Sequence[str]]) -> int
@ -129,7 +129,13 @@ def main(argv=None): # type: (Optional[Sequence[str]]) -> int
if args.autofix: if args.autofix:
_autofix(json_file, pretty_contents) _autofix(json_file, pretty_contents)
else: else:
print(get_diff(''.join(contents), pretty_contents)) print(
get_diff(
''.join(contents),
pretty_contents,
json_file,
),
)
status = 1 status = 1
except ValueError: except ValueError:

View file

@ -1,3 +1,4 @@
import os
import shutil import shutil
import pytest import pytest
@ -110,9 +111,13 @@ def test_badfile_main():
def test_diffing_output(capsys): def test_diffing_output(capsys):
resource_path = get_resource_path('not_pretty_formatted_json.json') resource_path = get_resource_path('not_pretty_formatted_json.json')
expected_retval = 1 expected_retval = 1
a = os.path.join('a', resource_path)
b = os.path.join('b', resource_path)
expected_out = '''\ expected_out = '''\
--- \n+++ \n@@ -1,6 +1,9 @@ --- {}
{ +++ {}
@@ -1,6 +1,9 @@
{{
- "foo": - "foo":
- "bar", - "bar",
- "alist": [2, 34, 234], - "alist": [2, 34, 234],
@ -124,9 +129,9 @@ def test_diffing_output(capsys):
+ ], + ],
+ "blah": null, + "blah": null,
+ "foo": "bar" + "foo": "bar"
} }}
''' '''.format(a, b)
expected_err = 'File {} is not pretty-formatted\n'.format(resource_path) expected_err = 'File {} is not pretty-formatted\n'.format(resource_path)
actual_retval = main([resource_path]) actual_retval = main([resource_path])