Skip to content

Commit

Permalink
Merge pull request #1039 from amarvin/patch-1
Browse files Browse the repository at this point in the history
Continues processing JSONs even if hook fails (fixes #1038)
  • Loading branch information
asottile committed Apr 20, 2024
2 parents 8c24e2c + 25cdd54 commit 528a309
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 9 deletions.
22 changes: 13 additions & 9 deletions pre_commit_hooks/pretty_format_json.py
Expand Up @@ -115,16 +115,20 @@ def main(argv: Sequence[str] | None = None) -> int:
f'Input File {json_file} is not a valid JSON, consider using '
f'check-json',
)
return 1

if contents != pretty_contents:
if args.autofix:
_autofix(json_file, pretty_contents)
else:
diff_output = get_diff(contents, pretty_contents, json_file)
sys.stdout.buffer.write(diff_output.encode())

status = 1
else:
if contents != pretty_contents:
if args.autofix:
_autofix(json_file, pretty_contents)
else:
diff_output = get_diff(
contents,
pretty_contents,
json_file,
)
sys.stdout.buffer.write(diff_output.encode())

status = 1

return status

Expand Down
18 changes: 18 additions & 0 deletions tests/pretty_format_json_test.py
Expand Up @@ -82,6 +82,24 @@ def test_autofix_main(tmpdir):
assert ret == 0


def test_invalid_main(tmpdir):
srcfile1 = tmpdir.join('not_valid_json.json')
srcfile1.write(
'{\n'
' // not json\n'
' "a": "b"\n'
'}',
)
srcfile2 = tmpdir.join('to_be_json_formatted.json')
srcfile2.write('{ "a": "b" }')

# it should have skipped the first file and formatted the second one
assert main(['--autofix', str(srcfile1), str(srcfile2)]) == 1

# confirm second file was formatted (shouldn't trigger linter again)
assert main([str(srcfile2)]) == 0


def test_orderfile_get_pretty_format():
ret = main((
'--top-keys=alist', get_resource_path('pretty_formatted_json.json'),
Expand Down

0 comments on commit 528a309

Please sign in to comment.