name: CI All Files on: workflow_dispatch: permissions: contents: read jobs: test-changed: runs-on: ubuntu-latest timeout-minutes: 30 strategy: fail-fast: false matrix: python-version: ["3.12", "3.13"] steps: - uses: actions/checkout@v4 with: fetch-depth: 0 # Need full history to detect changes - name: Free disk space run: | # Remove large, preinstalled toolchains we don't need on the runner sudo rm -rf /usr/share/dotnet sudo rm -rf /opt/ghc sudo rm -rf /usr/local/lib/android sudo rm -rf /opt/hostedtoolcache/CodeQL # Prune docker to reclaim space (safe on GH runners) docker system prune -af || true df -h - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Prepare environment with uv run: | python -m pip install --upgrade pip uv uv venv --python "${{ matrix.python-version }}" --seed echo "VIRTUAL_ENV=${PWD}/.venv" >> "$GITHUB_ENV" echo "PATH=${PWD}/.venv/bin:$PATH" >> "$GITHUB_ENV" source .venv/bin/activate uv pip install -e ".[dev]" - name: Run tests run: | if [ ! -d tests ]; then echo "tests/ directory not found. Skipping pytest run." exit 0 fi TEST_FILES=$(find tests -type f \( -name "test_*.py" -o -name "*_test.py" \)) if [ -z "$TEST_FILES" ]; then echo "No pytest-compatible test files detected under tests/. Skipping pytest run." exit 0 fi pytest tests/ -v -m "not slow"