name: Run PyGreSQL test matrix # this has been shamelessly copied from Psycopg on: push: pull_request: jobs: tests: name: Unit tests run runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: include: - { python: "3.8", postgres: "12" } - { python: "3.9", postgres: "13" } - { python: "3.10", postgres: "14" } - { python: "3.11", postgres: "15" } - { python: "3.12", postgres: "16" } - { python: "3.13", postgres: "17" } - { python: "3.14", postgres: "18" } # Opposite extremes of the supported Py/PG range, other architecture - { python: "3.8", postgres: "18", architecture: "x86" } - { python: "3.9", postgres: "17", architecture: "x86" } - { python: "3.10", postgres: "16", architecture: "x86" } - { python: "3.11", postgres: "15", architecture: "x86" } - { python: "3.12", postgres: "14", architecture: "x86" } - { python: "3.13", postgres: "13", architecture: "x86" } - { python: "3.14", postgres: "12", architecture: "x86" } env: PYGRESQL_DB: test PYGRESQL_HOST: 127.0.0.1 PYGRESQL_USER: test PYGRESQL_PASSWD: test services: postgresql: image: postgres:${{ matrix.postgres }} env: POSTGRES_USER: test POSTGRES_PASSWORD: test ports: - 5432:5432 # Set health checks to wait until postgres has started options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - name: Check out repository uses: actions/checkout@v6 - name: Install tox run: pip install tox - name: Setup Python uses: actions/setup-python@v6 with: python-version: ${{ matrix.python }} - name: Run tests env: MATRIX_PYTHON: ${{ matrix.python }} run: tox -e py${MATRIX_PYTHON/./} timeout-minutes: 5