119d1ddbaa
Move common template logic out to a new template() function that calls one of the existing template processors and then handles writing the result and copying permissions.
62 lines
1.8 KiB
Python
62 lines
1.8 KiB
Python
"""Unit tests: choose_template_processor"""
|
|
|
|
import pytest
|
|
|
|
|
|
@pytest.mark.parametrize("label", ["", "default", "other"])
|
|
@pytest.mark.parametrize("awk", [True, False], ids=["awk", "no-awk"])
|
|
def test_kind_default(runner, yadm, awk, label):
|
|
"""Test kind: default"""
|
|
|
|
expected = "default"
|
|
awk_avail = "true"
|
|
|
|
if not awk:
|
|
awk_avail = "false"
|
|
expected = ""
|
|
|
|
if label == "other":
|
|
expected = ""
|
|
|
|
script = f"""
|
|
YADM_TEST=1 source {yadm}
|
|
function awk_available {{ {awk_avail}; }}
|
|
template="$(choose_template_processor "{label}")"
|
|
echo "TEMPLATE:$template"
|
|
"""
|
|
run = runner(command=["bash"], inp=script)
|
|
assert run.success
|
|
assert run.err == ""
|
|
assert f"TEMPLATE:{expected}\n" in run.out
|
|
|
|
|
|
@pytest.mark.parametrize("label", ["envtpl", "j2cli", "j2", "other"])
|
|
@pytest.mark.parametrize("envtpl", [True, False], ids=["envtpl", "no-envtpl"])
|
|
@pytest.mark.parametrize("j2cli", [True, False], ids=["j2cli", "no-j2cli"])
|
|
def test_kind_j2cli_envtpl(runner, yadm, envtpl, j2cli, label):
|
|
"""Test kind: j2 (both j2cli & envtpl)
|
|
|
|
j2cli is preferred over envtpl if available.
|
|
"""
|
|
|
|
envtpl_avail = "true" if envtpl else "false"
|
|
j2cli_avail = "true" if j2cli else "false"
|
|
|
|
if label in ("j2cli", "j2") and j2cli:
|
|
expected = "j2cli"
|
|
elif label in ("envtpl", "j2") and envtpl:
|
|
expected = "envtpl"
|
|
else:
|
|
expected = ""
|
|
|
|
script = f"""
|
|
YADM_TEST=1 source {yadm}
|
|
function envtpl_available {{ {envtpl_avail}; }}
|
|
function j2cli_available {{ {j2cli_avail}; }}
|
|
template="$(choose_template_processor "{label}")"
|
|
echo "TEMPLATE:$template"
|
|
"""
|
|
run = runner(command=["bash"], inp=script)
|
|
assert run.success
|
|
assert run.err == ""
|
|
assert f"TEMPLATE:{expected}\n" in run.out
|