# Run the project's test suite on every PR push and on push to main. # # The suite uses stdlib `unittest` discovery — no external Python # dependencies are required to execute it. Tests are split by directory: # # tests/unit/ — pure unit tests; always run # tests/integration/ — need a reachable Docker daemon; skip cleanly # (via tests/_docker.py:skip_unless_docker) when # Docker isn't available on the runner # tests/canaries/ — upstream regression canaries; run on a separate # schedule (see canaries.yml), not here # # This workflow assumes the Gitea Actions runner exposes the host Docker # socket to the job container so `docker` commands inside the job can # reach the daemon. If that's not yet configured on the runner the # integration tests will skip rather than fail. name: test on: push: branches: - main pull_request: jobs: unit: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.12" - name: Run unit tests run: python3 -m unittest discover -t . -s tests/unit -v integration: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.12" - name: Show environment run: | python3 --version if command -v docker >/dev/null 2>&1; then docker version || true else echo "docker not on PATH — integration tests will skip" fi - name: Run integration tests run: python3 -m unittest discover -t . -s tests/integration -v