@@ -142,15 +142,15 @@ jobs:
142
142
TEST_DATABASE_VERSION : " sqlite"
143
143
strategy :
144
144
matrix :
145
- python-version : [ '3.9', '3.12 ']
145
+ python-version : [ '3.9', '3.13 ']
146
146
django-version :
147
147
- ' 3.2' # LTS April 2024
148
148
- ' 4.2' # LTS April 2026
149
149
- ' 5.1' # December 2025
150
150
exclude :
151
151
- python-version : ' 3.9'
152
152
django-version : ' 5.1'
153
- - python-version : ' 3.12 '
153
+ - python-version : ' 3.13 '
154
154
django-version : ' 3.2'
155
155
156
156
steps :
@@ -196,15 +196,15 @@ jobs:
196
196
actions : write
197
197
strategy :
198
198
matrix :
199
- python-version : [ '3.9', '3.12 ']
199
+ python-version : [ '3.9', '3.13 ']
200
200
mysql-version : ['5.7', 'latest']
201
201
mysqlclient-version : ['1.4.3', '']
202
202
django-version :
203
203
- ' 3.2' # LTS April 2024
204
204
- ' 4.2' # LTS April 2026
205
205
- ' 5.1' # December 2025
206
206
exclude :
207
- - python-version : ' 3.12 '
207
+ - python-version : ' 3.13 '
208
208
django-version : ' 3.2'
209
209
- python-version : ' 3.9'
210
210
django-version : ' 5.1'
@@ -301,7 +301,7 @@ jobs:
301
301
302
302
strategy :
303
303
matrix :
304
- python-version : [ '3.9', '3.12 ']
304
+ python-version : [ '3.9', '3.13 ']
305
305
mysqlclient-version : ['1.4.3', '']
306
306
mariadb-version : ['10.2', 'latest']
307
307
mariadb-healthcheck : ["mysqladmin ping", "healthcheck.sh --connect --innodb_initialized"]
@@ -310,7 +310,7 @@ jobs:
310
310
- ' 4.2' # LTS April 2026
311
311
- ' 5.1' # December 2025
312
312
exclude :
313
- - python-version : ' 3.12 '
313
+ - python-version : ' 3.13 '
314
314
django-version : ' 3.2'
315
315
- python-version : ' 3.9'
316
316
django-version : ' 5.1'
@@ -492,10 +492,129 @@ jobs:
492
492
with :
493
493
name : ${{ env.COVERAGE_FILE }}
494
494
path : ${{ env.COVERAGE_FILE }}
495
-
495
+
496
+
497
+ windows :
498
+ runs-on : windows-latest
499
+ permissions :
500
+ actions : write
501
+ env :
502
+ RDBMS : sqlite
503
+ COVERAGE_FILE : windows-py${{ matrix.python-version }}-dj${{ matrix.django-version }}-sqlite.coverage
504
+ TEST_PYTHON_VERSION : ${{ matrix.python-version }}
505
+ TEST_DJANGO_VERSION : ${{ matrix.django-version }}
506
+ TEST_DATABASE_VERSION : " sqlite"
507
+ strategy :
508
+ matrix :
509
+ python-version : [ '3.9', '3.13']
510
+ django-version :
511
+ - ' 3.2' # LTS April 2024
512
+ - ' 4.2' # LTS April 2026
513
+ - ' 5.1' # December 2025
514
+ exclude :
515
+ - python-version : ' 3.9'
516
+ django-version : ' 5.1'
517
+ - python-version : ' 3.13'
518
+ django-version : ' 3.2'
519
+
520
+ steps :
521
+ - uses : actions/checkout@v4
522
+ - name : Set up Python ${{ matrix.python-version }}
523
+ uses : actions/setup-python@v5
524
+ id : sp
525
+ with :
526
+ python-version : ${{ matrix.python-version }}
527
+
528
+ - name : Setup Just
529
+ uses : extractions/setup-just@v2
530
+ - name : Install Release Dependencies
531
+ run : |
532
+ just init ${{ steps.sp.outputs.python-path }}
533
+ just install
534
+ just test-lock Django~=${{ matrix.django-version }}.0
535
+ - name : install-vim-windows
536
+ if : ${{ github.event.inputs.debug == 'true' }}
537
+ uses : rhysd/action-setup-vim@v1
538
+ - name : Setup tmate session
539
+ if : ${{ github.event.inputs.debug == 'true' }}
540
+
541
+ with :
542
+ detached : true
543
+ timeout-minutes : 60
544
+ - name : Run Unit Tests
545
+ run : |
546
+ just run ./manage.py makemigrations
547
+ just test ./tests/verify_environment.py
548
+ just test-all
549
+ - name : Store coverage files
550
+ uses : actions/upload-artifact@v4
551
+ with :
552
+ name : ${{ env.COVERAGE_FILE }}
553
+ path : ${{ env.COVERAGE_FILE }}
554
+
555
+
556
+ macos :
557
+ runs-on : macos-latest
558
+ permissions :
559
+ actions : write
560
+ env :
561
+ RDBMS : sqlite
562
+ COVERAGE_FILE : macos-py${{ matrix.python-version }}-dj${{ matrix.django-version }}-sqlite.coverage
563
+ TEST_PYTHON_VERSION : ${{ matrix.python-version }}
564
+ TEST_DJANGO_VERSION : ${{ matrix.django-version }}
565
+ TEST_DATABASE_VERSION : " sqlite"
566
+ strategy :
567
+ matrix :
568
+ python-version : [ '3.9', '3.13']
569
+ django-version :
570
+ - ' 3.2' # LTS April 2024
571
+ - ' 4.2' # LTS April 2026
572
+ - ' 5.1' # December 2025
573
+ exclude :
574
+ - python-version : ' 3.9'
575
+ django-version : ' 5.1'
576
+ - python-version : ' 3.13'
577
+ django-version : ' 3.2'
578
+
579
+ steps :
580
+ - uses : actions/checkout@v4
581
+ - name : Set up Python ${{ matrix.python-version }}
582
+ uses : actions/setup-python@v5
583
+ id : sp
584
+ with :
585
+ python-version : ${{ matrix.python-version }}
586
+
587
+ - name : Setup Just
588
+ uses : extractions/setup-just@v2
589
+ - name : Install Release Dependencies
590
+ run : |
591
+ just init ${{ steps.sp.outputs.python-path }}
592
+ just install
593
+ just test-lock Django~=${{ matrix.django-version }}.0
594
+ - name : install-emacs-macos
595
+ if : ${{ github.event.inputs.debug == 'true' }}
596
+ run : |
597
+ brew install emacs
598
+ - name : Setup tmate session
599
+ if : ${{ github.event.inputs.debug == 'true' }}
600
+
601
+ with :
602
+ detached : true
603
+ timeout-minutes : 60
604
+ - name : Run Unit Tests
605
+ run : |
606
+ just run ./manage.py makemigrations
607
+ just test ./tests/verify_environment.py
608
+ just test-all
609
+ - name : Store coverage files
610
+ uses : actions/upload-artifact@v4
611
+ with :
612
+ name : ${{ env.COVERAGE_FILE }}
613
+ path : ${{ env.COVERAGE_FILE }}
614
+
496
615
497
616
coverage-combine :
498
- needs : [postgres, sqlite, mysql, mariadb, oracle]
617
+ needs : [postgres, sqlite, mysql, mariadb, oracle, windows, macos ]
499
618
runs-on : ubuntu-latest
500
619
501
620
steps :
0 commit comments