# The repo had no CI at all, which meant PdoIntegrationTest — the only test that runs the # delivered SQL rather than an in-memory double — had almost certainly never executed anywhere: # it skips itself unless pdo_sqlite is loaded, and no machine was loading it. # # Same two commands as the local `verify` in CLAUDE.md. Keep them identical; a CI that runs # something else is a CI that proves something else. name: verify on: push: pull_request: jobs: edge: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: '3.11' # Pi OS Bookworm ships CPython 3.11; match the target - run: pip install -e ".[dev]" # deps + pytest come from pyproject.toml - run: python -m pytest tests -q server: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: shivammathur/setup-php@v2 with: php-version: '8.2' # Cafe24's floor (see server/docs/server-deploy.md) # pdo_sqlite is what un-skips the DB integration test; gd/sodium mirror the host's # image + Argon2id requirements so a missing-extension failure shows up here, not # on the customer's shared hosting. extensions: pdo_sqlite, gd, sodium - run: composer install --no-interaction --prefer-dist working-directory: server - run: php vendor/bin/phpunit working-directory: server - name: fail if any test skipped working-directory: server # A skip is how the DB coverage silently disappeared in the first place. In CI every # test must actually run, so a re-introduced skip gate fails the build instead of # quietly shrinking coverage back down. run: php vendor/bin/phpunit --do-not-cache-result | tee out.txt; ! grep -q "Skipped:" out.txt