Skip to content

Commit 80fd264

Browse files
committed
fix CI test matrix
1 parent d5c26d0 commit 80fd264

File tree

2 files changed

+42
-90
lines changed

2 files changed

+42
-90
lines changed

.github/workflows/test.yml

Lines changed: 34 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ jobs:
107107
detached: true
108108
timeout-minutes: 60
109109
- name: Install Basic Dependencies
110+
# it'd be great if you could just tell poetry to lock to specific versions
110111
run: |
111112
poetry config virtualenvs.in-project true
112113
poetry run pip install --upgrade pip
@@ -143,7 +144,7 @@ jobs:
143144
- name: Run Full Unit Tests
144145
run: |
145146
poetry run pytest --cov-append
146-
mv py${{ matrix.python-version }}-dj${{ matrix.django-version }}-${{ matrix.psycopg-version }}-pg${{ matrix.postgres-version }}.coverage
147+
mv .coverage py${{ matrix.python-version }}-dj${{ matrix.django-version }}-${{ matrix.psycopg-version }}-pg${{ matrix.postgres-version }}.coverage
147148
148149
- name: Store coverage files
149150
uses: actions/upload-artifact@v4
@@ -158,34 +159,16 @@ jobs:
158159
strategy:
159160
matrix:
160161
python-version: [ '3.8', '3.12']
161-
mysqlclient-version: ['^1.0.3']
162+
#mysqlclient-version: ['^1.0.3']
162163
django-version:
163164
- '3.2' # LTS April 2024
164165
- '4.2' # LTS April 2026
165166
- '5.1' # December 2025
166-
drf-version:
167-
- '>=3.14.0,<3.15.0'
168-
- '^3.15'
169-
filter-version:
170-
- '23.5'
171-
- '24.0'
172167
exclude:
173168
- python-version: '3.8'
174169
django-version: '5.1'
175170
- python-version: '3.12'
176171
django-version: '3.2'
177-
- django-version: '3.2'
178-
drf-version: '^3.15'
179-
- django-version: '3.2'
180-
filter-version: '24.0'
181-
- django-version: '4.2'
182-
drf-version: '>=3.14.0,<3.15.0'
183-
- django-version: '4.2'
184-
filter-version: '23.5'
185-
- django-version: '5.1'
186-
drf-version: '>=3.14.0,<3.15.0'
187-
- django-version: '5.1'
188-
filter-version: '23.5'
189172

190173
steps:
191174
- uses: actions/checkout@v4
@@ -215,12 +198,18 @@ jobs:
215198
poetry run pip install --upgrade pip
216199
sed -i 's/^python = .*/python = "^${{ matrix.python-version }}"/' pyproject.toml
217200
poetry add django@^${{ matrix.django-version }}
218-
poetry add django-filter@^${{ matrix.filter-version }} --optional
219-
poetry add djangorestframework@"${{ matrix.drf-version }}" --optional
220201
poetry install --no-interaction -E all
221202
- name: Run Full Unit Tests
222203
run: |
223204
poetry run pytest
205+
mv .coverage py${{ matrix.python-version }}-dj${{ matrix.django-version }}-sqlite.coverage
206+
207+
- name: Store coverage files
208+
uses: actions/upload-artifact@v4
209+
with:
210+
name: coverage-py${{ matrix.python-version }}-dj${{ matrix.django-version }}-sqlite
211+
path: py${{ matrix.python-version }}-dj${{ matrix.django-version }}-sqlite.coverage
212+
224213

225214
mysql:
226215
runs-on: ubuntu-latest
@@ -235,12 +224,6 @@ jobs:
235224
- '3.2' # LTS April 2024
236225
- '4.2' # LTS April 2026
237226
- '5.1' # December 2025
238-
drf-version:
239-
- '>=3.14.0,<3.15.0'
240-
- '^3.15'
241-
filter-version:
242-
- '23.5'
243-
- '24.0'
244227
exclude:
245228
- python-version: '3.12'
246229
django-version: '3.2'
@@ -259,18 +242,6 @@ jobs:
259242
- mysql-version: 'latest'
260243
mysqlclient-version: '1.4.3'
261244

262-
- django-version: '3.2'
263-
drf-version: '^3.15'
264-
- django-version: '3.2'
265-
filter-version: '24.0'
266-
- django-version: '4.2'
267-
drf-version: '>=3.14.0,<3.15.0'
268-
- django-version: '4.2'
269-
filter-version: '23.5'
270-
- django-version: '5.1'
271-
drf-version: '>=3.14.0,<3.15.0'
272-
- django-version: '5.1'
273-
filter-version: '23.5'
274245

275246
services:
276247
mysql:
@@ -318,8 +289,6 @@ jobs:
318289
poetry run pip install --upgrade pip
319290
sed -i 's/^python = .*/python = "^${{ matrix.python-version }}"/' pyproject.toml
320291
poetry add django@^${{ matrix.django-version }}
321-
poetry add django-filter@^${{ matrix.filter-version }} --optional
322-
poetry add djangorestframework@"${{ matrix.drf-version }}" --optional
323292
poetry install -E all --with mysql
324293
- name: Install mysqlclient if needed
325294
if: ${{ matrix.mysqlclient-version != '' }}
@@ -329,6 +298,14 @@ jobs:
329298
MYSQL_VERSION: ${{ matrix.mysql-version }}
330299
run: |
331300
poetry run pytest
301+
mv .coverage py${{ matrix.python-version }}-dj${{ matrix.django-version }}-myclient${{ matrix.mysqlclient-version }}-mysql${{ matrix.mysql-version }}.coverage
302+
303+
- name: Store coverage files
304+
uses: actions/upload-artifact@v4
305+
with:
306+
name: coverage-py${{ matrix.python-version }}-dj${{ matrix.django-version }}-myclient${{ matrix.mysqlclient-version }}-mysql${{ matrix.mysql-version }}
307+
path: py${{ matrix.python-version }}-dj${{ matrix.django-version }}-myclient${{ matrix.mysqlclient-version }}-mysql${{ matrix.mysql-version }}.coverage
308+
332309

333310
mariadb:
334311
runs-on: ubuntu-latest
@@ -344,12 +321,6 @@ jobs:
344321
- '3.2' # LTS April 2024
345322
- '4.2' # LTS April 2026
346323
- '5.1' # December 2025
347-
drf-version:
348-
- '>=3.14.0,<3.15.0'
349-
- '^3.15'
350-
filter-version:
351-
- '23.5'
352-
- '24.0'
353324
exclude:
354325
- python-version: '3.12'
355326
django-version: '3.2'
@@ -373,19 +344,6 @@ jobs:
373344
- mariadb-version: '10.2'
374345
mariadb-healthcheck: "healthcheck.sh --connect --innodb_initialized"
375346

376-
- django-version: '3.2'
377-
drf-version: '^3.15'
378-
- django-version: '3.2'
379-
filter-version: '24.0'
380-
- django-version: '4.2'
381-
drf-version: '>=3.14.0,<3.15.0'
382-
- django-version: '4.2'
383-
filter-version: '23.5'
384-
- django-version: '5.1'
385-
drf-version: '>=3.14.0,<3.15.0'
386-
- django-version: '5.1'
387-
filter-version: '23.5'
388-
389347
services:
390348
mysql:
391349
# Docker Hub image
@@ -432,15 +390,21 @@ jobs:
432390
poetry run pip install --upgrade pip
433391
sed -i 's/^python = .*/python = "^${{ matrix.python-version }}"/' pyproject.toml
434392
poetry add django@^${{ matrix.django-version }}
435-
poetry add django-filter@^${{ matrix.filter-version }} --optional
436-
poetry add djangorestframework@"${{ matrix.drf-version }}" --optional
437393
poetry install -E all --with mysql
438394
- name: Install mysqlclient if needed
439395
if: ${{ matrix.mysqlclient-version != '' }}
440396
run: poetry run pip install -U mysqlclient=="${{ matrix.mysqlclient-version }}"
441397
- name: Run Full Unit Tests
442398
run: |
443399
poetry run pytest
400+
mv .coverage py${{ matrix.python-version }}-dj${{ matrix.django-version }}-myclient${{ matrix.mysqlclient-version }}-mariadb${{ matrix.mariadb-version }}.coverage
401+
402+
- name: Store coverage files
403+
uses: actions/upload-artifact@v4
404+
with:
405+
name: coverage-py${{ matrix.python-version }}-dj${{ matrix.django-version }}-myclient${{ matrix.mysqlclient-version }}-mariadb${{ matrix.mariadb-version }}
406+
path: py${{ matrix.python-version }}-dj${{ matrix.django-version }}-myclient${{ matrix.mysqlclient-version }}-mariadb${{ matrix.mariadb-version }}.coverage
407+
444408

445409
oracle:
446410
runs-on: ubuntu-latest
@@ -456,12 +420,6 @@ jobs:
456420
oracle-version:
457421
- '18'
458422
- 'latest'
459-
drf-version:
460-
- '>=3.14.0,<3.15.0'
461-
- '^3.15'
462-
filter-version:
463-
- '23.5'
464-
- '24.0'
465423
exclude:
466424
- python-version: '3.8'
467425
django-version: '5.1'
@@ -481,19 +439,6 @@ jobs:
481439
oracle-version: '18'
482440
- django-version: '5.1'
483441
oracle-version: '18'
484-
485-
- django-version: '3.2'
486-
drf-version: '^3.15'
487-
- django-version: '3.2'
488-
filter-version: '24.0'
489-
- django-version: '4.2'
490-
drf-version: '>=3.14.0,<3.15.0'
491-
- django-version: '4.2'
492-
filter-version: '23.5'
493-
- django-version: '5.1'
494-
drf-version: '>=3.14.0,<3.15.0'
495-
- django-version: '5.1'
496-
filter-version: '23.5'
497442

498443
services:
499444
oracle:
@@ -554,12 +499,17 @@ jobs:
554499
poetry run pip install --upgrade pip
555500
sed -i 's/^python = .*/python = "^${{ matrix.python-version }}"/' pyproject.toml
556501
poetry add django@^${{ matrix.django-version }}
557-
poetry add django-filter@^${{ matrix.filter-version }} --optional
558-
poetry add djangorestframework@"${{ matrix.drf-version }}" --optional
559502
poetry install -E all --with oracle
560503
- name: Run Full Unit Tests
561504
run: |
562505
poetry run pytest -s
506+
mv .coverage py${{ matrix.python-version }}-dj${{ matrix.django-version }}-oracle${{ matrix.oracle-version }}.coverage
507+
508+
- name: Store coverage files
509+
uses: actions/upload-artifact@v4
510+
with:
511+
name: coverage-py${{ matrix.python-version }}-dj${{ matrix.django-version }}-oracle${{ matrix.oracle-version }}
512+
path: py${{ matrix.python-version }}-dj${{ matrix.django-version }}-oracle${{ matrix.oracle-version }}.coverage
563513

564514

565515
coverage-combine:

tests/tests.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
)
3636
from django_enum.forms import EnumChoiceField # dont remove this
3737

38+
condition = "condition" if django_version[0:2] >= (5, 1) else "check"
39+
3840
# from tests.djenum.enums import (
3941
# BigIntEnum,
4042
# BigPosIntEnum,
@@ -4368,15 +4370,15 @@ def test_makemigrate_01(self):
43684370
"tests_edit_tests_MigrationTester_int_enum_IntEnum",
43694371
)
43704372
self.assertEqual(
4371-
migration.operations[0].options['constraints'][0].check,
4373+
migration.operations[0].options['constraints'][0].condition,
43724374
Q(int_enum__in=[0, 1, 2])
43734375
)
43744376
self.assertEqual(
43754377
migration.operations[0].options['constraints'][1].name,
43764378
"tests_edit_tests_MigrationTester_color_Color",
43774379
)
43784380
self.assertEqual(
4379-
migration.operations[0].options['constraints'][1].check,
4381+
migration.operations[0].options['constraints'][1].condition,
43804382
Q(color__in=["R", "G", "B", "K"])
43814383
)
43824384
else:
@@ -4471,7 +4473,7 @@ def revert_enum_values(apps, schema_editor):
44714473
migration.operations[-1], migrations.AddConstraint
44724474
)
44734475
self.assertEqual(
4474-
migration.operations[-1].constraint.check, Q(int_enum__in=[1, 2, 3])
4476+
getattr(migration.operations[-1].constraint, condition), Q(int_enum__in=[1, 2, 3])
44754477
)
44764478
self.assertEqual(
44774479
migration.operations[-1].constraint.name,
@@ -4531,7 +4533,7 @@ def remove_color_values(apps, schema_editor):
45314533
migration.operations[-1], migrations.AddConstraint
45324534
)
45334535
self.assertEqual(
4534-
migration.operations[-1].constraint.check,
4536+
getattr(migration.operations[-1].constraint, condition),
45354537
Q(color__in=["R", "G", "B"]),
45364538
)
45374539
self.assertEqual(
@@ -4642,11 +4644,11 @@ def test_makemigrate_08(self):
46424644
self.assertIsInstance(migration.operations[3], migrations.AddConstraint)
46434645
self.assertIsInstance(migration.operations[4], migrations.AddConstraint)
46444646
self.assertEqual(
4645-
migration.operations[3].constraint.check,
4647+
getattr(migration.operations[3].constraint, condition),
46464648
Q(int_enum__in=["A", "B", "C"]) | Q(int_enum__isnull=True),
46474649
)
46484650
self.assertEqual(
4649-
migration.operations[4].constraint.check,
4651+
getattr(migration.operations[4].constraint, condition),
46504652
Q(color__in=["R", "G", "B", "K"]),
46514653
)
46524654
self.assertEqual(

0 commit comments

Comments
 (0)