diff --git a/pre_commit_hooks/pretty_format_json.py b/pre_commit_hooks/pretty_format_json.py index a9738df..2fdc173 100644 --- a/pre_commit_hooks/pretty_format_json.py +++ b/pre_commit_hooks/pretty_format_json.py @@ -8,11 +8,14 @@ from collections.abc import Mapping from collections.abc import Sequence from difflib import unified_diff + def _insert_linebreaks(json_str: str) -> str: return re.sub( - r'\n(?P\s*)(?P.*): {}(?P,??)', - '\n\g\g: {\n\g}\g', - json_str) + r'\n(?P\s*)(?P.*): {}(?P,??)', + '\n\\g\\g: {\n\\g}\\g', + json_str, + ) + def _get_pretty_format( contents: str, @@ -110,8 +113,8 @@ def main(argv: Sequence[str] | None = None) -> int: action='store_true', dest='empty_object_with_newline', default=False, - help='Format empty JSON objects to have a linebreak, ' \ - + 'also activates --no-sort-keys', + help='Format empty JSON objects to have a linebreak, ' + + 'also activates --no-sort-keys', ) parser.add_argument('filenames', nargs='*', help='Filenames to fix') args = parser.parse_args(argv) @@ -150,7 +153,7 @@ def main(argv: Sequence[str] | None = None) -> int: diff_output = get_diff( contents, pretty_contents, - json_file + json_file, ) sys.stdout.buffer.write(diff_output.encode()) status = 1 diff --git a/tests/pretty_format_json_test.py b/tests/pretty_format_json_test.py index 44884ad..4efbf0f 100644 --- a/tests/pretty_format_json_test.py +++ b/tests/pretty_format_json_test.py @@ -165,7 +165,7 @@ def test_empty_object_with_newline(tmpdir): assert ret == 1 # a template to be compared against. - multiline = get_resource_path("empty_object_json_multiline.json") + multiline = get_resource_path('empty_object_json_multiline.json') # file has empty object with newline => expect fail with default settings ret = main([str(multiline)]) @@ -173,20 +173,22 @@ def test_empty_object_with_newline(tmpdir): # launch the autofix with empty object with newline support on that file to_be_formatted_sameline = tmpdir.join( - "not_pretty_formatted_empty_object_json_sameline.json" + 'not_pretty_formatted_empty_object_json_sameline.json', ) shutil.copyfile(str(sameline), str(to_be_formatted_sameline)) ret = main( - ["--autofix", - "--empty-object-with-newline", - str(to_be_formatted_sameline)] + [ + '--autofix', + '--empty-object-with-newline', + str(to_be_formatted_sameline), + ], ) # it should have formatted it and don't raise an error code # to not stop the the commit assert ret == 0 - # file was formatted (shouldn't trigger linter with + # file was formatted (shouldn't trigger linter with # --empty-object-with-newline switch) - ret = main(["--empty-object-with-newline", str(to_be_formatted_sameline)]) + ret = main(['--empty-object-with-newline', str(to_be_formatted_sameline)]) assert ret == 0 assert filecmp.cmp(to_be_formatted_sameline, multiline)