#!/usr/bin/env python3
"""Regression tests for fail-closed JUnit evidence verification."""
from pathlib import Path
import subprocess
import sys
import tempfile
import unittest
VERIFIER = Path(__file__).with_name("verify-test-results.py")
class EvidenceVerifierTests(unittest.TestCase):
def verify(self, xml=None, minimum=1):
with tempfile.TemporaryDirectory(prefix="yuvomi-evidence-") as temporary:
if xml is not None:
(Path(temporary) / "TEST-fixture.xml").write_text(xml)
return subprocess.run(
[sys.executable, str(VERIFIER), temporary, "--minimum", str(minimum)],
capture_output=True, text=True,
).returncode
def test_missing_reports_fail(self):
self.assertNotEqual(self.verify(), 0)
def test_empty_reports_fail(self):
self.assertNotEqual(self.verify(""), 0)
def test_malformed_reports_fail(self):
self.assertNotEqual(self.verify(""), 0)
def test_failed_cases_fail(self):
self.assertNotEqual(self.verify(""), 0)
def test_errored_cases_fail(self):
self.assertNotEqual(self.verify(""), 0)
def test_skipped_cases_fail(self):
self.assertNotEqual(self.verify(""), 0)
def test_insufficient_cases_fail(self):
self.assertNotEqual(self.verify("", minimum=2), 0)
def test_passing_cases_succeed(self):
self.assertEqual(self.verify(""), 0)
if __name__ == "__main__":
unittest.main()