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/plugins/lookup/test_template.py

32 lines
1.5 KiB
Python

from __future__ import annotations
import pathlib
from ansible._internal._templating._utils import Omit
from ansible.parsing.dataloader import DataLoader
from ansible.template import Templar, trust_as_template
def test_no_finalize_marker_passthru(tmp_path: pathlib.Path) -> None:
"""Return an Undefined marker from a template lookup to ensure that the internal templating operation does not finalize its result."""
template_path = tmp_path / 'template.txt'
template_path.write_text("{{ bogusvar }}")
templar = Templar(loader=DataLoader(), variables=dict(template_path=str(template_path)))
assert templar.template(trust_as_template('{{ lookup("template", template_path) | default("pass") }}')) == "pass"
def test_no_finalize_omit_passthru(tmp_path: pathlib.Path) -> None:
"""Return an Omit scalar from a template lookup to ensure that the internal templating operation does not finalize its result."""
template_path = tmp_path / 'template.txt'
template_path.write_text("{{ omitted }}")
data = dict(omitted=trust_as_template("{{ omit }}"), template_path=str(template_path))
# The result from the lookup should be an Omit value, since the result of the template lookup's internal templating call should not be finalized.
# If it were, finalize would trip the Omit and raise an error about a top-level template result resolving to an Omit scalar.
res = Templar(loader=DataLoader(), variables=data).template(trust_as_template("{{ lookup('template', template_path) | type_debug }}"))
assert res == type(Omit).__name__