mirror of
https://github.com/pre-commit/pre-commit-hooks.git
synced 2026-04-04 19:26:52 +00:00
This new option for the yaml checker modify ruamel to remove the "!" from the "!vault" tag if it is found. Removing that part allows the file to be parsed correctly, so other errors could be found. fixes: #273
72 lines
1.9 KiB
Python
72 lines
1.9 KiB
Python
from __future__ import annotations
|
|
|
|
import pytest
|
|
|
|
from pre_commit_hooks.check_yaml import main
|
|
from testing.util import get_resource_path
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
('filename', 'expected_retval'), (
|
|
('bad_yaml.notyaml', 1),
|
|
('ok_yaml.yaml', 0),
|
|
),
|
|
)
|
|
def test_main(filename, expected_retval):
|
|
ret = main([get_resource_path(filename)])
|
|
assert ret == expected_retval
|
|
|
|
|
|
def test_main_allow_multiple_documents(tmpdir):
|
|
f = tmpdir.join('test.yaml')
|
|
f.write('---\nfoo\n---\nbar\n')
|
|
|
|
# should fail without the setting
|
|
assert main((str(f),))
|
|
|
|
# should pass when we allow multiple documents
|
|
assert not main(('--allow-multiple-documents', str(f)))
|
|
|
|
|
|
def test_fails_even_with_allow_multiple_documents(tmpdir):
|
|
f = tmpdir.join('test.yaml')
|
|
f.write('[')
|
|
assert main(('--allow-multiple-documents', str(f)))
|
|
|
|
|
|
def test_main_unsafe(tmpdir):
|
|
f = tmpdir.join('test.yaml')
|
|
f.write(
|
|
'some_foo: !vault |\n'
|
|
' $ANSIBLE_VAULT;1.1;AES256\n'
|
|
' deadbeefdeadbeefdeadbeef\n',
|
|
)
|
|
# should fail "safe" check
|
|
assert main((str(f),))
|
|
# should pass when we allow unsafe documents
|
|
assert not main(('--unsafe', str(f)))
|
|
|
|
|
|
def test_main_unsafe_still_fails_on_syntax_errors(tmpdir):
|
|
f = tmpdir.join('test.yaml')
|
|
f.write('[')
|
|
assert main(('--unsafe', str(f)))
|
|
|
|
|
|
def test_main_ignore_ansible_vault(tmpdir):
|
|
f = tmpdir.join('test.yaml')
|
|
f.write(
|
|
'some_foo: !vault |\n'
|
|
' $ANSIBLE_VAULT;1.1;AES256\n'
|
|
' deadbeefdeadbeefdeadbeef\n',
|
|
)
|
|
# should fail "safe" check
|
|
assert main((str(f),))
|
|
# should pass when we allow unsafe documents
|
|
assert not main(('--ignore-ansible-vault', str(f)))
|
|
|
|
|
|
def test_main_ignore_ansible_vault_still_fails_on_syntax_errors(tmpdir):
|
|
f = tmpdir.join('test.yaml')
|
|
f.write('[')
|
|
assert main(('--ignore-ansible-vault', str(f)))
|