summaryrefslogtreecommitdiffstats
path: root/test/test_ansiblelintrule.py
blob: 4afcd596e1d9551db758bc88772bd5f8915000ac (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
"""Generic tests for AnsibleLintRule class."""
from __future__ import annotations

from typing import Any

import pytest
from _pytest.monkeypatch import MonkeyPatch

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


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())