# file: tests/test_markdown_headers.py # version: 1 """Exercise the Markdown header audit's real file and CLI contracts.""" from __future__ import annotations import pathlib import subprocess import sys import tempfile import unittest _SCRIPT = pathlib.Path(__file__).resolve().parents[1] / "scripts/audit_markdown_headers.py" class MarkdownHeaderAuditTests(unittest.TestCase): def setUp(self) -> None: temporary = tempfile.TemporaryDirectory(prefix="pgr-headers-") self.addCleanup(temporary.cleanup) self.root = pathlib.Path(temporary.name) def source(self, name: str, contents: str) -> pathlib.Path: path = self.root / name path.parent.mkdir(parents=True, exist_ok=True) path.write_text(contents, encoding="utf-8") return path def run_audit(self, *paths: str) -> subprocess.CompletedProcess[str]: return subprocess.run( [sys.executable, "-B", str(_SCRIPT), *paths], cwd=self.root, capture_output=True, text=True, check=False, ) def test_valid_root_and_nested_files_are_deduplicated(self) -> None: self.source("README.md", "\n\n") self.source("docs/page.md", "\n\n") result = self.run_audit("README.md", "docs", "docs/page.md") self.assertEqual(result.returncode, 0, result.stderr) self.assertIn("clean (2 file(s))", result.stdout) def test_wrong_path_and_nonpositive_revision_report_both_lines(self) -> None: self.source("docs/page.md", "\n\n") result = self.run_audit("docs/page.md") self.assertEqual(result.returncode, 1) self.assertIn("docs/page.md:1:", result.stderr) self.assertIn("docs/page.md:2:", result.stderr) self.assertIn("2 error(s)", result.stderr) def test_leading_zero_revision_is_rejected(self) -> None: self.source("README.md", "\n\n") result = self.run_audit("README.md") self.assertEqual(result.returncode, 1) self.assertIn("README.md:2:", result.stderr) def test_missing_path_is_a_selection_error(self) -> None: result = self.run_audit("missing.md") self.assertEqual(result.returncode, 2) self.assertIn("unsupported or missing path", result.stderr) def test_empty_directory_is_a_selection_error(self) -> None: (self.root / "docs").mkdir() result = self.run_audit("docs") self.assertEqual(result.returncode, 2) self.assertIn("no Markdown files selected", result.stderr) def test_generated_directory_is_skipped(self) -> None: self.source("docs/visible.md", "\n\n") self.source("docs/target/skip.md", "incorrect\n") result = self.run_audit("docs") self.assertEqual(result.returncode, 0, result.stderr) self.assertIn("clean (1 file(s))", result.stdout) if __name__ == "__main__": unittest.main()