import os from pathlib import Path import jinja2 import pytest from bopytex.service import main @pytest.fixture def template_path(tmp_path): template = tmp_path / "tpl_source.tex" with open(template, "w") as tpl: tpl.write( """ \\documentclass{article} \\begin{document} First document. Subject {{ number }} \\end{document} """ ) return template @pytest.fixture def bad_template_path(tmp_path): template = tmp_path / "tpl_source.tex" with open(template, "w") as tpl: tpl.write( """ \\documentclass{article} \\begin{document} First document. Subject {{ number }} """ ) return template @pytest.fixture def jinja2_env(tmp_path): templateEnv = jinja2.Environment(loader=jinja2.FileSystemLoader(tmp_path)) return templateEnv def test_with_default_planner(template_path, jinja2_env, tmp_path): os.chdir(tmp_path) options = { "template": str(template_path.name), "quantity_subjects": 3, "corr": False, "no_join": False, "no_pdf": False, "jinja2": { "environment": jinja2_env, }, } for message in main(**options): assert message.status == 0 assert Path("joined_source.pdf").exists() def test_with_default_planner_bad_template(bad_template_path, jinja2_env, tmp_path): os.chdir(tmp_path) options = { "template": str(bad_template_path.name), "quantity_subjects": 3, "corr": False, "no_join": False, "no_pdf": False, "jinja2": { "environment": jinja2_env, }, } for message in main(**options): pass assert not Path("joined_source.pdf").exists()