Files
goodbuddy/resources/skills/longdoc-docx/tests/test_verify_pdf.py
T

77 lines
2.6 KiB
Python

import importlib.util
import tempfile
import unittest
from pathlib import Path
import fitz
SKILL_DIR = Path(__file__).resolve().parents[1]
SCRIPT_PATH = SKILL_DIR / "scripts" / "verify_pdf.py"
SPEC = importlib.util.spec_from_file_location("verify_pdf", SCRIPT_PATH)
verify_pdf = importlib.util.module_from_spec(SPEC)
SPEC.loader.exec_module(verify_pdf)
class VerifyPdfTests(unittest.TestCase):
def create_pdf(self, path):
document = fitz.open()
text_page = document.new_page()
text_page.insert_text(
(72, 72),
"This page contains enough verification text and a forbidden term.",
)
document.new_page()
document.save(path)
document.close()
def test_reports_forbidden_terms_and_blank_pages(self):
with tempfile.TemporaryDirectory() as tmp:
pdf = Path(tmp) / "sample.pdf"
self.create_pdf(pdf)
report = verify_pdf.inspect_pdf(
pdf,
forbidden=["forbidden"],
min_text_chars=30,
)
self.assertEqual(report["page_count"], 2)
self.assertEqual(report["forbidden"]["forbidden"]["pages"], [1])
self.assertEqual(report["suspicious_blank_pages"], [2])
self.assertTrue(verify_pdf.has_failures(report))
def test_allows_known_blank_page(self):
with tempfile.TemporaryDirectory() as tmp:
pdf = Path(tmp) / "sample.pdf"
self.create_pdf(pdf)
report = verify_pdf.inspect_pdf(
pdf,
min_text_chars=30,
allowed_blank_pages=[2],
)
self.assertEqual(report["suspicious_blank_pages"], [])
self.assertFalse(verify_pdf.has_failures(report))
def test_renders_pages(self):
with tempfile.TemporaryDirectory() as tmp:
root = Path(tmp)
pdf = root / "sample.pdf"
self.create_pdf(pdf)
rendered = verify_pdf.render_pages(pdf, root / "pages", dpi=72)
self.assertEqual(len(rendered), 2)
self.assertTrue(all(Path(path).is_file() for path in rendered))
def test_rejects_render_directory_with_old_pages(self):
with tempfile.TemporaryDirectory() as tmp:
root = Path(tmp)
pdf = root / "sample.pdf"
pages = root / "pages"
pages.mkdir()
(pages / "page-999.png").write_bytes(b"old")
self.create_pdf(pdf)
with self.assertRaisesRegex(FileExistsError, "空目录"):
verify_pdf.render_pages(pdf, pages, dpi=72)
if __name__ == "__main__":
unittest.main()