import os import jinja2 import pytest from bopytex.worker.generate import generate @pytest.fixture def jinja2_env(tmp_path): templateEnv = jinja2.Environment(loader=jinja2.FileSystemLoader(tmp_path)) return templateEnv @pytest.fixture def template_path(tmp_path): template = tmp_path / "template.j2" with open(template, "w") as tpl: tpl.write("Plop {{ a }}") return template def test_generate(template_path, jinja2_env): tmp_path = template_path.parent os.chdir(tmp_path) assert template_path.exists template = str(template_path.name) output = "output" message = generate( args={ "options": { "direct_access": {"a": 2}, "jinja2": {"environment": jinja2_env}, }, "subject": {}, }, deps=[template], output=output, ) print(message.err) assert message.status == 0 assert message.out == ["GENERATE - template.j2 to output"] with open(output, "r") as out: lines = out.readlines() assert lines == ["Plop 2"] @pytest.fixture def template_path_with_random(tmp_path): template = tmp_path / "template.j2" with open(template, "w") as tpl: tpl.write("Plop {{ random.randint(0, 10) }}") return template def test_generate_with_random(template_path_with_random, jinja2_env): tmp_path = template_path_with_random.parent os.chdir(tmp_path) assert template_path_with_random.exists template = str(template_path_with_random.name) output = "output" import random message = generate( args={ "options": { "jinja2": {"environment": jinja2_env}, "direct_access": { "random": random, }, }, "subject": {}, }, deps=[template], output=output, ) print(message.err) assert message.status == 0 with open(output, "r") as out: lines = out.readlines() assert int(lines[0][-1]) >= 0 assert int(lines[0][-1]) < 10