1
0
mirror of https://github.com/TheLocehiliosan/yadm synced 2024-10-27 20:34:27 +00:00
TheLocehiliosan_yadm/test/test_unit_template_default.py

128 lines
3.6 KiB
Python
Raw Normal View History

2019-10-30 22:29:17 +00:00
"""Unit tests: template_default"""
2019-10-01 13:12:18 +00:00
# these values are also testing the handling of bizarre characters
2019-10-30 22:29:17 +00:00
LOCAL_CLASS = "default_Test+@-!^Class"
LOCAL_SYSTEM = "default_Test+@-!^System"
LOCAL_HOST = "default_Test+@-!^Host"
LOCAL_USER = "default_Test+@-!^User"
LOCAL_DISTRO = "default_Test+@-!^Distro"
2019-10-01 13:12:18 +00:00
TEMPLATE = f'''
start of template
2019-10-30 22:29:17 +00:00
default class = >{{{{yadm.class}}}}<
default os = >{{{{yadm.os}}}}<
default host = >{{{{yadm.hostname}}}}<
default user = >{{{{yadm.user}}}}<
default distro = >{{{{yadm.distro}}}}<
{{% if yadm.class == "else1" %}}
wrong else 1
{{% else %}}
Included section from else
{{% endif %}}
{{% if yadm.class == "wrongclass1" %}}
2019-10-01 13:12:18 +00:00
wrong class 1
{{% endif %}}
{{% if yadm.class == "{LOCAL_CLASS}" %}}
Included section for class = {{{{yadm.class}}}} ({{{{yadm.class}}}} repeated)
Multiple lines
{{% else %}}
Should not be included...
{{% endif %}}
{{% if yadm.class == "wrongclass2" %}}
2019-10-01 13:12:18 +00:00
wrong class 2
{{% endif %}}
{{% if yadm.os == "wrongos1" %}}
2019-10-01 13:12:18 +00:00
wrong os 1
{{% endif %}}
{{% if yadm.os == "{LOCAL_SYSTEM}" %}}
Included section for os = {{{{yadm.os}}}} ({{{{yadm.os}}}} repeated)
{{% endif %}}
{{% if yadm.os == "wrongos2" %}}
2019-10-01 13:12:18 +00:00
wrong os 2
{{% endif %}}
{{% if yadm.hostname == "wronghost1" %}}
2019-10-01 13:12:18 +00:00
wrong host 1
{{% endif %}}
{{% if yadm.hostname == "{LOCAL_HOST}" %}}
Included section for host = {{{{yadm.hostname}}}} ({{{{yadm.hostname}}}} again)
{{% endif %}}
{{% if yadm.hostname == "wronghost2" %}}
2019-10-01 13:12:18 +00:00
wrong host 2
{{% endif %}}
{{% if yadm.user == "wronguser1" %}}
2019-10-01 13:12:18 +00:00
wrong user 1
{{% endif %}}
{{% if yadm.user == "{LOCAL_USER}" %}}
Included section for user = {{{{yadm.user}}}} ({{{{yadm.user}}}} repeated)
{{% endif %}}
{{% if yadm.user == "wronguser2" %}}
2019-10-01 13:12:18 +00:00
wrong user 2
{{% endif %}}
{{% if yadm.distro == "wrongdistro1" %}}
2019-10-01 13:12:18 +00:00
wrong distro 1
{{% endif %}}
{{% if yadm.distro == "{LOCAL_DISTRO}" %}}
Included section for distro = {{{{yadm.distro}}}} ({{{{yadm.distro}}}} again)
{{% endif %}}
{{% if yadm.distro == "wrongdistro2" %}}
2019-10-01 13:12:18 +00:00
wrong distro 2
{{% endif %}}
2019-10-01 13:12:18 +00:00
end of template
'''
EXPECTED = f'''
start of template
2019-10-30 22:29:17 +00:00
default class = >{LOCAL_CLASS}<
default os = >{LOCAL_SYSTEM}<
default host = >{LOCAL_HOST}<
default user = >{LOCAL_USER}<
default distro = >{LOCAL_DISTRO}<
Included section from else
2019-10-01 13:12:18 +00:00
Included section for class = {LOCAL_CLASS} ({LOCAL_CLASS} repeated)
Multiple lines
2019-10-01 13:12:18 +00:00
Included section for os = {LOCAL_SYSTEM} ({LOCAL_SYSTEM} repeated)
Included section for host = {LOCAL_HOST} ({LOCAL_HOST} again)
2019-10-01 13:12:18 +00:00
Included section for user = {LOCAL_USER} ({LOCAL_USER} repeated)
Included section for distro = {LOCAL_DISTRO} ({LOCAL_DISTRO} again)
2019-10-01 13:12:18 +00:00
end of template
'''
2019-10-30 22:29:17 +00:00
def test_template_default(runner, yadm, tmpdir):
"""Test template_default"""
2019-10-01 13:12:18 +00:00
input_file = tmpdir.join('input')
input_file.write(TEMPLATE, ensure=True)
output_file = tmpdir.join('output')
script = f"""
YADM_TEST=1 source {yadm}
2019-12-05 04:18:55 +00:00
set_awk
2019-10-01 13:12:18 +00:00
local_class="{LOCAL_CLASS}"
local_system="{LOCAL_SYSTEM}"
local_host="{LOCAL_HOST}"
local_user="{LOCAL_USER}"
local_distro="{LOCAL_DISTRO}"
2019-10-30 22:29:17 +00:00
template_default "{input_file}" "{output_file}"
2019-10-01 13:12:18 +00:00
"""
run = runner(command=['bash'], inp=script)
assert run.success
assert run.err == ''
assert output_file.read() == EXPECTED
def test_source(runner, yadm, tmpdir):
"""Test yadm.source"""
input_file = tmpdir.join('input')
input_file.write('{{yadm.source}}', ensure=True)
output_file = tmpdir.join('output')
script = f"""
YADM_TEST=1 source {yadm}
2019-12-05 04:18:55 +00:00
set_awk
2019-10-30 22:29:17 +00:00
template_default "{input_file}" "{output_file}"
"""
run = runner(command=['bash'], inp=script)
assert run.success
assert run.err == ''
assert output_file.read().strip() == str(input_file)