Files
quant_engine/tests/governance/test_ci_contract.py
T
2026-08-24 20:56:36 +08:00

33 lines
1.3 KiB
Python

from __future__ import annotations
import re
import unittest
from pathlib import Path
ROOT = Path(__file__).resolve().parents[2]
class CiContractTests(unittest.TestCase):
def test_ci_is_one_locked_shared_runtime_lite_gate(self) -> None:
workflow = (ROOT / ".gitea/workflows/ci.yml").read_text(encoding="utf-8")
jobs = workflow.split("jobs:", 1)[1]
self.assertEqual(re.findall(r"(?m)^ ([a-z][a-z0-9_-]*):\s*$", jobs), ["lite"])
self.assertIn("actions/checkout@524e936cd9e579adf00e308bfdf971aebc7de09e", workflow)
self.assertIn("persist-credentials: false", workflow)
self.assertIn("UV_PYTHON_DOWNLOADS: never", workflow)
self.assertIn('test "$(python3 --version)" = "Python 3.13.15"', workflow)
self.assertIn(
'test "$(uv --version | cut -d\' \' -f1-2)" = "uv 0.12.3"',
workflow,
)
self.assertIn("uv sync --locked --extra dev", workflow)
self.assertIn("uv run --locked --no-sync python", workflow)
self.assertIn("tests/governance/test_ci_contract.py", workflow)
for forbidden in ("setup-python", "setup-uv", "pip ", "curl ", "wget ", "docker pull"):
self.assertNotIn(forbidden, workflow)
if __name__ == "__main__":
unittest.main()