36 lines
2.0 KiB
Python
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()
|