diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index cfa1236a5..d17b6d23b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,7 +14,7 @@ jobs: fail-fast: false max-parallel: 5 matrix: - python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] services: mariadb: @@ -73,25 +73,33 @@ jobs: fail-fast: false max-parallel: 5 matrix: - # Skip 3.13 here, it needs the psycopg3 / postgis3 database - python-version: ['3.9', '3.10', '3.11', '3.12'] - database: [postgresql, postgis] - # Add psycopg3 to our matrix for modern python versions - include: - - python-version: '3.10' - database: psycopg3 - - python-version: '3.11' - database: psycopg3 - - python-version: '3.12' + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] + database: [postgresql, postgis, psycopg3] + exclude: + - python-version: '3.9' database: psycopg3 - python-version: '3.13' - database: psycopg3 + database: postgis + - python-version: '3.13' + database: postgresql + - python-version: '3.14' + database: postgis + - python-version: '3.14' + database: postgresql + # Add postgis3 to our matrix for modern Python versions + include: - python-version: '3.13' database: postgis3 - python-version: '3.13' database: psycopg3 env: DJANGO_SELENIUM_TESTS=true + - python-version: '3.14' + database: postgis3 + - python-version: '3.14' + database: psycopg3 + env: + DJANGO_SELENIUM_TESTS=true services: postgres: @@ -155,7 +163,7 @@ jobs: fail-fast: false max-parallel: 5 matrix: - python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] steps: - uses: actions/checkout@v5 diff --git a/tox.ini b/tox.ini index 7e7047717..39f2adc9e 100644 --- a/tox.ini +++ b/tox.ini @@ -6,6 +6,7 @@ envlist = py{39,310,311,312}-dj{42}-{sqlite,postgresql,postgis,mysql} py{310,311,312}-dj{42,50,51,52}-{sqlite,postgresql,psycopg3,postgis,mysql} py{313}-dj{51,52,main}-{sqlite,psycopg3,postgis3,mysql} + py{314}-dj{52,main}-{sqlite,psycopg3,postgis3,mysql} [testenv] deps = @@ -52,28 +53,28 @@ pip_pre = True commands = python -b -W always -m coverage run -m django test -v2 {posargs:tests} -[testenv:py{39,310,311,312,313}-dj{42,50,51,52,main}-{postgresql,psycopg3}] +[testenv:py{39,310,311,312,313,314}-dj{42,50,51,52,main}-{postgresql,psycopg3}] setenv = {[testenv]setenv} DB_BACKEND = postgresql DB_PORT = {env:DB_PORT:5432} -[testenv:py{39,310,311,312,313}-dj{42,50,51,52,main}-{postgis,postgis3}] +[testenv:py{39,310,311,312,313,314}-dj{42,50,51,52,main}-{postgis,postgis3}] setenv = {[testenv]setenv} DB_BACKEND = postgis DB_PORT = {env:DB_PORT:5432} -[testenv:py{39,310,311,312,313}-dj{42,50,51,52,main}-mysql] +[testenv:py{39,310,311,312,313,314}-dj{42,50,51,52,main}-mysql] setenv = {[testenv]setenv} DB_BACKEND = mysql DB_PORT = {env:DB_PORT:3306} -[testenv:py{39,310,311,312,313}-dj{42,50,51,52,main}-sqlite] +[testenv:py{39,310,311,312,313,314}-dj{42,50,51,52,main}-sqlite] setenv = {[testenv]setenv} DB_BACKEND = sqlite3 @@ -103,6 +104,7 @@ python = 3.11: py311 3.12: py312 3.13: py313 + 3.14: py314 [gh-actions:env] DB_BACKEND =