import tempfile from pathlib import Path import unittest from verify_acceptance import inspect class ReportGateTest(unittest.TestCase): def test_missing_reports_cannot_pass(self): with tempfile.TemporaryDirectory() as tmp: result = inspect(Path(tmp), {f"A{i:02}": ["Suite#case"] for i in range(1, 21)}) self.assertFalse(result["passed"]) def test_passed_skipped_failed_and_external_reports(self): with tempfile.TemporaryDirectory() as tmp: root = Path(tmp) for folder in ("surefire-reports", "failsafe-reports"): (root / folder).mkdir() (root / folder / "TEST-Suite.xml").write_text('') manifest = {f"A{i:02}": ["Suite#case"] for i in range(1, 21)} self.assertTrue(inspect(root, manifest)["passed"]) extra = root / "surefire-reports/TEST-Extra.xml" extra.write_text('') self.assertFalse(inspect(root, manifest)["passed"], "Even an unmapped skipped test must fail the gate") extra.unlink() for status in ("failure", "error", "skipped"): (root / "failsafe-reports/TEST-Suite.xml").write_text(f'<{status}/>') self.assertFalse(inspect(root, manifest)["passed"]) (root / "failsafe-reports/TEST-Suite.xml").write_text('') self.assertEqual(["external-postgresql"], inspect(root, manifest)["environment"]) manifest["A03"] = ["Suite#missing"] self.assertFalse(inspect(root, manifest)["passed"]) if __name__ == "__main__": unittest.main()