#!/opt/homebrew/bin/python3.11 """Unit tests for probe_file.py""" import sys import json import os import unittest sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) import probe_file # noqa: E402 class TestProbePDF(unittest.TestCase): def setUp(self): self.path = "/tmp/_test_probe.pdf" if not os.path.exists(self.path): from PyPDF2 import PdfWriter w = PdfWriter() w.add_blank_page(210, 297) with open(self.path, 'wb') as f: w.write(f) def test_pdf_has_pages(self): result = json.loads(probe_file.probe(self.path)) self.assertIn("document", result) self.assertGreater(result["document"]["pages"], 0) def test_pdf_has_streams(self): result = json.loads(probe_file.probe(self.path)) self.assertEqual(result["streams"], []) class TestProbeDOCX(unittest.TestCase): def setUp(self): self.path = "/tmp/_test_probe.docx" if not os.path.exists(self.path): from docx import Document d = Document() d.add_paragraph("Test paragraph.") d.save(self.path) def test_docx_has_paragraphs(self): result = json.loads(probe_file.probe(self.path)) self.assertIn("document", result) self.assertGreater(result["document"]["paragraphs"], 0) class TestProbeXLSX(unittest.TestCase): def setUp(self): self.path = "/tmp/_test_probe.xlsx" if not os.path.exists(self.path): import openpyxl wb = openpyxl.Workbook() ws = wb.active ws.title = "Sheet1" ws.append(["A", 1]) wb.save(self.path) def test_xlsx_has_sheets(self): result = json.loads(probe_file.probe(self.path)) self.assertIn("spreadsheet", result) self.assertGreater(result["spreadsheet"]["sheet_count"], 0) class TestProbePPTX(unittest.TestCase): def setUp(self): self.path = "/tmp/_test_probe.pptx" if not os.path.exists(self.path): from pptx import Presentation prs = Presentation() slide = prs.slides.add_slide(prs.slide_layouts[0]) slide.shapes.title.text = "Test" prs.save(self.path) def test_pptx_has_slides(self): result = json.loads(probe_file.probe(self.path)) self.assertIn("presentation", result) self.assertGreater(result["presentation"]["slide_count"], 0) class TestProbeUnknown(unittest.TestCase): def test_unknown_extension(self): path = "/tmp/_test_probe.xyz" with open(path, 'w') as f: f.write("test") result = json.loads(probe_file.probe(path)) os.remove(path) self.assertEqual(result["streams"], []) if __name__ == "__main__": unittest.main()