Miscs improvements (Interro02)

This commit is contained in:
2026-09-15 14:18:22 +02:00
parent 0a86403ca6
commit 9b22a8a137
15 changed files with 893 additions and 118 deletions
+48
View File
@@ -0,0 +1,48 @@
import contextlib
import io
import subprocess
import tempfile
import unittest
from pathlib import Path
from unittest.mock import patch
from copienator import utils
class CompileToPdfTests(unittest.TestCase):
def test_warns_when_latex_fails_even_if_partial_pdf_exists(self):
with tempfile.TemporaryDirectory() as temporary:
output = Path(temporary) / "result.pdf"
def failed_run(*_args, **kwargs):
(Path(kwargs["cwd"]) / "text.pdf").write_bytes(b"partial")
return subprocess.CompletedProcess(
args=[], returncode=1,
stdout="! LaTeX Error: Something's wrong--perhaps a missing \\item.\n",
)
console = io.StringIO()
with patch.object(utils.subprocess, "run", side_effect=failed_run), \
contextlib.redirect_stdout(console):
utils.compile_to_pdf("broken", output)
self.assertEqual(output.read_bytes(), b"partial")
self.assertIn("Warning: LaTeX compilation failed", console.getvalue())
self.assertIn("missing \\item", console.getvalue())
def test_warns_when_no_pdf_is_produced(self):
with tempfile.TemporaryDirectory() as temporary:
output = Path(temporary) / "result.pdf"
result = subprocess.CompletedProcess(args=[], returncode=0, stdout="")
console = io.StringIO()
with patch.object(utils.subprocess, "run", return_value=result), \
contextlib.redirect_stdout(console):
utils.compile_to_pdf("valid", output)
self.assertFalse(output.exists())
self.assertIn("produced no PDF", console.getvalue())
if __name__ == "__main__":
unittest.main()