#!/usr/bin/env python3 from __future__ import annotations import subprocess import sys from pathlib import Path ROOT = Path(__file__).resolve().parents[2] GUARD = ROOT / "ops/runner/guard-gitea-runner-pressure.py" def write_workflow(root: Path, text: str) -> None: workflow_dir = root / ".gitea/workflows" workflow_dir.mkdir(parents=True, exist_ok=True) (workflow_dir / "cd.yaml").write_text(text, encoding="utf-8") def run_guard(root: Path) -> subprocess.CompletedProcess[str]: return subprocess.run( [sys.executable, str(GUARD), "--root", str(root)], check=False, text=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, ) def test_manual_awoooi_host_is_allowed(tmp_path: Path) -> None: write_workflow( tmp_path, """ name: manual on: workflow_dispatch: jobs: deploy: runs-on: awoooi-host steps: - run: true """, ) result = run_guard(tmp_path) assert result.returncode == 0, result.stdout + result.stderr def test_push_to_110_incident_label_is_blocked(tmp_path: Path) -> None: write_workflow( tmp_path, """ name: push on: push: branches: [main] jobs: deploy: runs-on: awoooi-host steps: - run: true """, ) result = run_guard(tmp_path) assert result.returncode == 1 assert "auto_branch_event_targets_110_incident_runner" in result.stdout def test_generic_label_is_blocked_even_for_manual(tmp_path: Path) -> None: write_workflow( tmp_path, """ name: generic on: workflow_dispatch: jobs: deploy: runs-on: ubuntu-latest steps: - run: true """, ) result = run_guard(tmp_path) assert result.returncode == 1 assert "generic_runner_label_reintroduced" in result.stdout def test_push_to_non110_dedicated_label_is_allowed(tmp_path: Path) -> None: write_workflow( tmp_path, """ name: push-non110 on: push: branches: [main] jobs: deploy: runs-on: awoooi-non110-host steps: - run: true """, ) result = run_guard(tmp_path) assert result.returncode == 0, result.stdout + result.stderr