# Runs the test suite and validates every runbook pack, attribute set, project and template. # Follows the fleet pattern of work-records.yaml: no actions/checkout (the runner has no git), the repo comes # from the Forgejo archive endpoint. The engine needs Python 3.12 (pyproject: requires-python), so the job runs in a # python:3.12 container instead of the node:20-bookworm default, which ships an older Python. # NOT YET RUN on a real runner: verify the first execution and adjust the container or label if the runner refuses it. name: Tests on: push: branches: - main pull_request: workflow_dispatch: jobs: tests: runs-on: ubuntu-latest container: image: python:3.12-slim steps: - name: Fetch the repository, install, test and check run: | set -eu apt-get update -qq >/dev/null apt-get install -y -qq wget >/dev/null WORK="$(mktemp -d)"; trap 'rm -rf "$WORK"' EXIT REF="${GITHUB_SHA:-main}"; SHORT="${REF:0:7}" BASE="https://forgejo.coulomb.social" mkdir -p "$WORK/repo" # Forgejo archive endpoint accepts short SHA; full SHA can hang. wget -qO "$WORK/repo.tar.gz" "${BASE}/${GITHUB_REPOSITORY}/archive/${SHORT}.tar.gz" tar xzf "$WORK/repo.tar.gz" -C "$WORK/repo" --strip-components=1 cd "$WORK/repo" python -m pip install -q -e ".[test]" python -m pytest -q python -m rtut check .