diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 12:06:49 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 12:06:49 +0000 |
commit | 2fe34b6444502079dc0b84365ce82dbc92de308e (patch) | |
tree | 8fedcab52bbbc3db6c5aa909a88a7a7b81685018 /test/test_examples.py | |
parent | Initial commit. (diff) | |
download | ansible-lint-upstream/6.17.2.tar.xz ansible-lint-upstream/6.17.2.zip |
Adding upstream version 6.17.2.upstream/6.17.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | test/test_examples.py | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/test/test_examples.py b/test/test_examples.py new file mode 100644 index 0000000..2842930 --- /dev/null +++ b/test/test_examples.py @@ -0,0 +1,102 @@ +"""Assure samples produced desire outcomes.""" +import pytest + +from ansiblelint.app import get_app +from ansiblelint.rules import RulesCollection +from ansiblelint.runner import Runner +from ansiblelint.testing import run_ansible_lint + + +def test_example(default_rules_collection: RulesCollection) -> None: + """example.yml is expected to have exact number of errors inside.""" + result = Runner( + "examples/playbooks/example.yml", + rules=default_rules_collection, + ).run() + assert len(result) == 22 + + +@pytest.mark.parametrize( + ("filename", "line", "column"), + ( + pytest.param( + "examples/playbooks/syntax-error-string.yml", + 6, + 7, + id="syntax-error", + ), + pytest.param("examples/playbooks/syntax-error.yml", 2, 3, id="syntax-error"), + ), +) +def test_example_syntax_error( + default_rules_collection: RulesCollection, + filename: str, + line: int, + column: int, +) -> None: + """Validates that loading valid YAML string produce error.""" + result = Runner(filename, rules=default_rules_collection).run() + assert len(result) == 1 + assert result[0].rule.id == "syntax-check" + # This also ensures that line and column numbers start at 1, so they + # match what editors will show (or output from other linters) + assert result[0].lineno == line + assert result[0].column == column + + +def test_example_custom_module(default_rules_collection: RulesCollection) -> None: + """custom_module.yml is expected to pass.""" + app = get_app(offline=True) + result = Runner( + "examples/playbooks/custom_module.yml", + rules=default_rules_collection, + ).run() + assert len(result) == 0, f"{app.runtime.cache_dir}" + + +def test_vault_full(default_rules_collection: RulesCollection) -> None: + """Check ability to process fully vaulted files.""" + result = Runner( + "examples/playbooks/vars/vault_full.yml", + rules=default_rules_collection, + ).run() + assert len(result) == 0 + + +def test_vault_partial( + default_rules_collection: RulesCollection, + caplog: pytest.LogCaptureFixture, +) -> None: + """Check ability to precess files that container !vault inside.""" + result = Runner( + "examples/playbooks/vars/vault_partial.yml", + rules=default_rules_collection, + ).run() + assert len(result) == 0 + # Ensure that we do not have side-effect extra logging even if the vault + # content cannot be decrypted. + assert caplog.record_tuples == [] + + +def test_custom_kinds() -> None: + """Check if user defined kinds are used.""" + result = run_ansible_lint("-vv", "--offline", "examples/other/") + assert result.returncode == 0 + # .yaml-too is not a recognized extension and unless is manually defined + # in our ansible-lint config, the test would not identify it as yaml file. + assert "Examining examples/other/some.yaml-too of type yaml" in result.stderr + assert "Examining examples/other/some.j2.yaml of type jinja2" in result.stderr + + +def test_bug_3216(capsys: pytest.CaptureFixture[str]) -> None: + """Check that we hide ansible-core originating warning about fallback on unique filter.""" + result = run_ansible_lint( + "-vv", + "--offline", + "examples/playbooks/bug-core-warning-unique-filter-fallback.yml", + ) + captured = capsys.readouterr() + assert result.returncode == 0 + warn_msg = "Falling back to Ansible unique filter" + assert warn_msg not in captured.err + assert warn_msg not in captured.out |