iftypeset/tests/test_integration.py
2026-01-03 20:29:35 +00:00

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()