File: test_jinja.py

package info (click to toggle)
scap-security-guide 0.1.76-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 110,644 kB
  • sloc: xml: 241,883; sh: 73,777; python: 32,527; makefile: 27
file content (55 lines) | stat: -rw-r--r-- 2,006 bytes parent folder | download
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import os
import pytest
import ssg.jinja


def get_definitions_with_substitution(subs_dict=None):
    if subs_dict is None:
        subs_dict = dict()

    definitions = os.path.join(os.path.dirname(__file__), "data", "definitions.jinja")
    ssg.jinja.update_substitutions_dict(definitions, subs_dict)
    return subs_dict


def test_macro_presence():
    actual_defs = get_definitions_with_substitution()
    assert "expand_to_bar" in actual_defs
    assert actual_defs["expand_to_bar"]() == "bar"


def test_macro_expansion():
    incomplete_defs = get_definitions_with_substitution()
    assert incomplete_defs["expand_to_global_var"]() == ""

    complete_defs = get_definitions_with_substitution(dict(global_var="value"))
    assert complete_defs["expand_to_global_var"]() == "value"


def test_load_macros_with_valid_directory(tmpdir):
    macros_dir = tmpdir.mkdir("macros")
    macro_file = macros_dir.join("test_macro.jinja")
    macro_file.write("{{% macro test_macro() %}}test{{% endmacro %}}")
    substitutions_dict = ssg.jinja._load_macros(str(macros_dir))

    assert "test_macro" in substitutions_dict
    assert substitutions_dict["test_macro"]() == "test"


def test_load_macros_with_nonexistent_directory():
    non_existent_dir = "/non/existent/directory"
    with pytest.raises(RuntimeError, match=f"The directory '{non_existent_dir}' does not exist."):
        ssg.jinja._load_macros(non_existent_dir)


def test_load_macros_with_existing_substitutions_dict(tmpdir):
    macros_dir = tmpdir.mkdir("macros")
    macro_file = macros_dir.join("test_macro.jinja")
    macro_file.write("{{% macro test_macro() %}}test{{% endmacro %}}")
    existing_dict = {"existing_key": "existing_value"}
    substitutions_dict = ssg.jinja._load_macros(str(macros_dir), existing_dict)

    assert "test_macro" in substitutions_dict
    assert substitutions_dict["test_macro"]() == "test"
    assert "existing_key" in substitutions_dict
    assert substitutions_dict["existing_key"] == "existing_value"