Files
CosmicClash/scripts/test_verify_release_gate.py
T
2026-09-01 18:26:56 +01:00

57 lines
1.7 KiB
Python

import sys
import unittest
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent))
from verify_release_gate import validate_release_report
def valid_report():
return {
"release_id": "release-2026-09-01-001",
"from_stage": "development",
"to_stage": "internal",
"slo_passed": True,
"security_passed": True,
"cost_passed": True,
"rollback_rehearsed": True,
"playtests": {"eu_passed": True, "na_passed": True},
"legacy": {"phase6_passed": True, "enet_passed": True},
}
class ReleaseGateTest(unittest.TestCase):
def test_accepts_one_complete_promotion(self):
self.assertEqual(validate_release_report(valid_report()), ("development", "internal"))
def test_rejects_skipped_stage(self):
report = valid_report()
report["to_stage"] = "casual"
with self.assertRaises(ValueError):
validate_release_report(report)
def test_rejects_missing_or_false_gate(self):
report = valid_report()
del report["playtests"]["na_passed"]
with self.assertRaises(ValueError):
validate_release_report(report)
report = valid_report()
report["cost_passed"] = 1
with self.assertRaises(ValueError):
validate_release_report(report)
def test_rejects_unknown_stage_and_blank_release(self):
report = valid_report()
report["release_id"] = " "
with self.assertRaises(ValueError):
validate_release_report(report)
report = valid_report()
report["from_stage"] = "experimental"
with self.assertRaises(ValueError):
validate_release_report(report)
if __name__ == "__main__":
unittest.main()