Bopytex/test/test_e2e.py

62 lines
1.5 KiB
Python

import os
import jinja2
from pathlib import Path
from bopytex.message import Message
from bopytex.planner.generate_compile_join_planner import planner
from bopytex.service import orcherstrator
from bopytex.worker import Dispatcher
from bopytex.worker.clean import clean
from bopytex.worker.compile import latexmk
from bopytex.worker.generate import generate
from bopytex.worker.join_pdf import pdfjam
import pytest
@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 {{ subject }}
\\end{document}
"""
)
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,
},
}
dispatcher = Dispatcher(
{"GENERATE": generate, "COMPILE": latexmk, "JOIN": pdfjam, "CLEAN": clean}
)
orcherstre = orcherstrator(options, planner=planner, dispatcher=dispatcher)
messages = []
for message in orcherstre:
assert message.status == 0
assert Path("joined_source.pdf").exists()