diff --git a/.github/workflows/data/test_postgres.py.tpl b/.github/workflows/data/test_postgres.py.tpl index e121946d3f2..15dfa0d62ee 100644 --- a/.github/workflows/data/test_postgres.py.tpl +++ b/.github/workflows/data/test_postgres.py.tpl @@ -1,3 +1,4 @@ +import os from test_sqlite import * # NOQA DATABASES = { @@ -8,6 +9,9 @@ DATABASES = { "PASSWORD": "postgres", "HOST": "localhost", "PORT": 5432, + "OPTIONS": { + "server_side_binding": os.getenv("SERVER_SIDE_BINDING") == "1", + }, }, "other": { "ENGINE": "django.db.backends.postgresql", diff --git a/.github/workflows/schedule_tests.yml b/.github/workflows/schedule_tests.yml index 8b1f01ad867..78b06ba5de6 100644 --- a/.github/workflows/schedule_tests.yml +++ b/.github/workflows/schedule_tests.yml @@ -195,3 +195,47 @@ jobs: working-directory: ./tests/ run: | python -Wall runtests.py --verbosity 2 --noinput --selenium=chrome --headless --settings=test_postgres --parallel 2 + + postgresql: + strategy: + fail-fast: false + matrix: + version: [16, 17rc1] + server_side_bindings: [0, 1] + runs-on: ubuntu-latest + name: Newer PostgreSQL Versions + env: + SERVER_SIDE_BINDING: ${{ matrix.server_side_bindings }} + services: + postgres: + image: postgres:${{ matrix.version }}-alpine + env: + POSTGRES_DB: django + POSTGRES_USER: user + POSTGRES_PASSWORD: postgres + ports: + - 5432:5432 + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + cache: 'pip' + cache-dependency-path: 'tests/requirements/py3.txt' + - name: Install libmemcached-dev for pylibmc + run: sudo apt-get install libmemcached-dev + - name: Install and upgrade packaging tools + run: python -m pip install --upgrade pip setuptools wheel + - run: python -m pip install -r tests/requirements/py3.txt -r tests/requirements/postgres.txt -e . + - name: Create PostgreSQL settings file + run: mv ./.github/workflows/data/test_postgres.py.tpl ./tests/test_postgres.py + - name: Run tests + working-directory: ./tests/ + run: python -Wall runtests.py --settings=test_postgres --verbosity=2