You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ansible/test/units/template/test_native_concat.py

50 lines
1.7 KiB
Python

# Copyright: (c) 2019, Ansible Project
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
# Make coding more python3-ish
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import importlib
import sys
import pytest
from ansible import constants as C
from ansible.errors import AnsibleUndefinedVariable
from ansible.playbook.conditional import Conditional
from units.mock.loader import DictDataLoader
@pytest.fixture
def native_template_mod(monkeypatch):
monkeypatch.delitem(sys.modules, 'ansible.template')
monkeypatch.setattr(C, 'DEFAULT_JINJA2_NATIVE', True)
return importlib.import_module('ansible.template')
# https://github.com/ansible/ansible/issues/52158
def test_undefined_variable(native_template_mod):
fake_loader = DictDataLoader({})
variables = {}
templar = native_template_mod.Templar(loader=fake_loader, variables=variables)
assert isinstance(templar.environment, native_template_mod.AnsibleNativeEnvironment)
with pytest.raises(AnsibleUndefinedVariable):
templar.template("{{ missing }}")
def test_cond_eval(native_template_mod):
fake_loader = DictDataLoader({})
# True must be stored in a variable to trigger templating. Using True
# directly would be caught by optimization for bools to short-circuit
# templating.
variables = {"foo": True}
templar = native_template_mod.Templar(loader=fake_loader, variables=variables)
assert isinstance(templar.environment, native_template_mod.AnsibleNativeEnvironment)
cond = Conditional(loader=fake_loader)
cond.when = ["foo"]
assert cond.evaluate_conditional(templar, variables)