| from __future__ import annotations | |
| import pytest | |
| from pre_commit_hooks.check_json import main | |
| from testing.util import get_resource_path | |
| @pytest.mark.parametrize( | |
| ('filename', 'expected_retval'), ( | |
| ('bad_json.notjson', 1), | |
| ('bad_json_latin1.nonjson', 1), | |
| ('ok_json.json', 0), | |
| ('duplicate_key_json.notjson', 1), | |
| ), | |
| ) | |
| def test_main(capsys, filename, expected_retval): | |
| ret = main([get_resource_path(filename)]) | |
| assert ret == expected_retval | |
| if expected_retval == 1: | |
| stdout, _ = capsys.readouterr() | |
| assert filename in stdout | |
| def test_non_utf8_file(tmpdir): | |
| f = tmpdir.join('t.json') | |
| f.write_binary(b'\xa9\xfe\x12') | |
| assert main((str(f),)) |