orquestador/scripts/test_verify_acceptance.py

36 lines
2.0 KiB
Python

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('<testsuite name="Suite"><testcase classname="example.Suite" name="case(int)[1]"/></testsuite>')
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('<testsuite name="Extra"><testcase classname="example.Extra" name="unmapped"><skipped/></testcase></testsuite>')
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'<testsuite name="Suite"><testcase classname="example.Suite" name="case(int)[1]"><{status}/></testcase></testsuite>')
self.assertFalse(inspect(root, manifest)["passed"])
(root / "failsafe-reports/TEST-Suite.xml").write_text('<testsuite name="Suite"><properties><property name="migration.test.external" value="true"/></properties><testcase classname="example.Suite" name="case(int)[1]"/></testsuite>')
self.assertEqual(["external-postgresql"], inspect(root, manifest)["environment"])
manifest["A03"] = ["Suite#missing"]
self.assertFalse(inspect(root, manifest)["passed"])
if __name__ == "__main__":
unittest.main()