diff --git a/pre_commit_hooks/check_yaml.py b/pre_commit_hooks/check_yaml.py index c94ea71..2c6fd2c 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 0000000..adc14c2 --- /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 54eb16e..0cc840e 100644 --- a/tests/check_yaml_test.py +++ b/tests/check_yaml_test.py @@ -9,6 +9,7 @@ from testing.util import get_resource_path @pytest.mark.parametrize( ('filename', 'expected_retval'), ( ('bad_yaml.notyaml', 1), + ('bad_encoding_yaml.yaml', 1), ('ok_yaml.yaml', 0), ), )