93 lines
2.9 KiB
Python
93 lines
2.9 KiB
Python
import os
|
|
import subprocess
|
|
import sys
|
|
import tempfile
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
SRC = ROOT / "src"
|
|
sys.path.insert(0, str(SRC))
|
|
|
|
from iftypeset.rendering import detect_pdf_engines # noqa: E402
|
|
|
|
|
|
class IntegrationTests(unittest.TestCase):
|
|
def test_pipeline_on_fixture(self) -> None:
|
|
fixture = ROOT / "fixtures" / "headings_basic.md"
|
|
self.assertTrue(fixture.exists())
|
|
env = os.environ.copy()
|
|
env["PYTHONPATH"] = str(SRC)
|
|
|
|
with tempfile.TemporaryDirectory() as tmp:
|
|
out_dir = Path(tmp)
|
|
lint_cmd = [
|
|
sys.executable,
|
|
"-m",
|
|
"iftypeset.cli",
|
|
"lint",
|
|
"--input",
|
|
str(fixture),
|
|
"--out",
|
|
str(out_dir),
|
|
"--profile",
|
|
"web_pdf",
|
|
"--format",
|
|
"json",
|
|
"--degraded-ok",
|
|
]
|
|
lint = subprocess.run(lint_cmd, env=env, capture_output=True, text=True)
|
|
self.assertEqual(lint.returncode, 0)
|
|
|
|
render_cmd = [
|
|
sys.executable,
|
|
"-m",
|
|
"iftypeset.cli",
|
|
"render-html",
|
|
"--input",
|
|
str(fixture),
|
|
"--out",
|
|
str(out_dir),
|
|
"--profile",
|
|
"web_pdf",
|
|
]
|
|
render = subprocess.run(render_cmd, env=env, capture_output=True, text=True)
|
|
self.assertEqual(render.returncode, 0)
|
|
self.assertTrue((out_dir / "render.html").exists())
|
|
self.assertTrue((out_dir / "render.css").exists())
|
|
|
|
if detect_pdf_engines():
|
|
pdf_cmd = [
|
|
sys.executable,
|
|
"-m",
|
|
"iftypeset.cli",
|
|
"render-pdf",
|
|
"--input",
|
|
str(fixture),
|
|
"--out",
|
|
str(out_dir),
|
|
"--profile",
|
|
"web_pdf",
|
|
]
|
|
pdf = subprocess.run(pdf_cmd, env=env, capture_output=True, text=True)
|
|
self.assertIn(pdf.returncode, (0, 3))
|
|
self.assertTrue((out_dir / "render-log.json").exists())
|
|
|
|
qa_cmd = [
|
|
sys.executable,
|
|
"-m",
|
|
"iftypeset.cli",
|
|
"qa",
|
|
"--out",
|
|
str(out_dir),
|
|
"--profile",
|
|
"web_pdf",
|
|
]
|
|
qa = subprocess.run(qa_cmd, env=env, capture_output=True, text=True)
|
|
self.assertIn(qa.returncode, (0, 2))
|
|
self.assertTrue((out_dir / "layout-report.json").exists())
|
|
self.assertTrue((out_dir / "qa-report.json").exists())
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|