shoc-backend/scripts/test_require_commit_checks.py

90 lines
2.8 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
"""Tests for require_commit_checks.classify_checks."""
from __future__ import annotations
import unittest
from require_commit_checks import classify_checks
class ClassifyChecksTests(unittest.TestCase):
def test_success(self) -> None:
state, _ = classify_checks(
[
{"name": "ci-complete", "status": "completed", "conclusion": "success"},
]
)
self.assertEqual(state, "success")
def test_pending_missing(self) -> None:
state, details = classify_checks([])
self.assertEqual(state, "pending")
self.assertTrue(any("ci-complete" in line for line in details))
def test_pending_in_progress(self) -> None:
state, _ = classify_checks(
[
{"name": "ci-complete", "status": "in_progress", "conclusion": None},
]
)
self.assertEqual(state, "pending")
def test_failure(self) -> None:
state, _ = classify_checks(
[
{"name": "ci-complete", "status": "completed", "conclusion": "failure"},
]
)
self.assertEqual(state, "failure")
def test_latest_rerun_success_wins_over_older_failure(self) -> None:
state, _ = classify_checks(
[
{
"name": "ci-complete",
"id": 1,
"started_at": "2026-09-16T12:00:00Z",
"completed_at": "2026-09-16T12:05:00Z",
"status": "completed",
"conclusion": "failure",
},
{
"name": "ci-complete",
"id": 3,
"started_at": "2026-09-16T12:10:00Z",
"completed_at": "2026-09-16T12:12:00Z",
"status": "completed",
"conclusion": "success",
},
]
)
self.assertEqual(state, "success")
def test_latest_rerun_failure_wins_over_older_success(self) -> None:
state, _ = classify_checks(
[
{
"name": "ci-complete",
"id": 9,
"started_at": "2026-09-16T13:00:00Z",
"completed_at": "2026-09-16T13:02:00Z",
"status": "completed",
"conclusion": "failure",
},
{
"name": "ci-complete",
"id": 4,
"started_at": "2026-09-16T12:00:00Z",
"completed_at": "2026-09-16T12:01:00Z",
"status": "completed",
"conclusion": "success",
},
]
)
self.assertEqual(state, "failure")
if __name__ == "__main__":
unittest.main()