summaryrefslogtreecommitdiffstats
path: root/test/test_ansiblelintrule.py
blob: c576e0f9fbffb27b1498182e3d98439c454c4a4f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
"""Generic tests for AnsibleLintRule class."""
from __future__ import annotations

from typing import TYPE_CHECKING, Any

import pytest

from ansiblelint.config import options
from ansiblelint.rules import AnsibleLintRule

if TYPE_CHECKING:
    from _pytest.monkeypatch import MonkeyPatch


def test_unjinja() -> None:
    """Verify that unjinja understands nested mustache."""
    text = "{{ a }} {% b %} {# try to confuse parsing inside a comment { {{}} } #}"
    output = "JINJA_EXPRESSION JINJA_STATEMENT JINJA_COMMENT"
    assert AnsibleLintRule.unjinja(text) == output


@pytest.mark.parametrize("rule_config", ({}, {"foo": True, "bar": 1}))
def test_rule_config(rule_config: dict[str, Any], monkeypatch: MonkeyPatch) -> None:
    """Check that a rule config is inherited from options."""
    rule_id = "rule-0"
    monkeypatch.setattr(AnsibleLintRule, "id", rule_id)
    monkeypatch.setitem(options.rules, rule_id, rule_config)

    rule = AnsibleLintRule()
    assert set(rule.rule_config.items()) == set(rule_config.items())
    assert all(rule.get_config(k) == v for k, v in rule_config.items())