diff --git a/pre_commit_hooks/check_yaml.py b/pre_commit_hooks/check_yaml.py index c94ea716..2c6fd2cd 100644 --- a/pre_commit_hooks/check_yaml.py +++ b/pre_commit_hooks/check_yaml.py @@ -63,7 +63,13 @@ def main(argv: Sequence[str] | None = None) -> int: with open(filename, encoding='UTF-8') as f: load_fn(f) except ruamel.yaml.YAMLError as exc: - print(exc) + print(f'{filename}: Failed to yaml parse ({exc})') + retval = 1 + except UnicodeDecodeError as exc: + print( + f'{filename}: Failed to read file due to encoding error ' + f'({exc})', + ) retval = 1 return retval diff --git a/testing/resources/bad_encoding_yaml.yaml b/testing/resources/bad_encoding_yaml.yaml new file mode 100644 index 00000000..adc14c21 --- /dev/null +++ b/testing/resources/bad_encoding_yaml.yaml @@ -0,0 +1,3 @@ +variables: + - name: CopyRights + value: "Copyright © $(date:YYYY)" diff --git a/tests/check_yaml_test.py b/tests/check_yaml_test.py index 54eb16e8..0cc840e1 100644 --- a/tests/check_yaml_test.py +++ b/tests/check_yaml_test.py @@ -9,6 +9,7 @@ @pytest.mark.parametrize( ('filename', 'expected_retval'), ( ('bad_yaml.notyaml', 1), + ('bad_encoding_yaml.yaml', 1), ('ok_yaml.yaml', 0), ), )