Skip to content

Unify tests for speed #1206

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 104 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
4e57e34
Attempt to make codecov less important
kingbuzzman May 26, 2025
b4b9174
Update main.yml
kingbuzzman May 26, 2025
d85fe25
Update main.yml
kingbuzzman May 26, 2025
4674b61
Update main.yml
kingbuzzman May 26, 2025
8ee5187
Update pyproject.toml
kingbuzzman May 26, 2025
e05f94e
Update main.yml
kingbuzzman May 26, 2025
ed346b6
Update contributing.rst
kingbuzzman May 26, 2025
9faec5c
Update README.rst
kingbuzzman May 26, 2025
73883c5
Update pyproject.toml
kingbuzzman May 26, 2025
a0c7a97
Update tox.ini
kingbuzzman May 26, 2025
71151c2
Minor import fixes (100% automatic)
kingbuzzman May 26, 2025
bb091a5
Minor import fixes (100% manual)
kingbuzzman May 26, 2025
ab643df
Merge branch 'dev/remote-py38' into dev/remove-codecov
kingbuzzman May 26, 2025
ce156be
Update main.yml
kingbuzzman May 26, 2025
3dadd67
Update main.yml
kingbuzzman May 26, 2025
9598148
Update main.yml
kingbuzzman May 26, 2025
b2e9a9d
Update main.yml
kingbuzzman May 26, 2025
454fc18
Add debug output to coverage file preparation in main.yml
kingbuzzman May 26, 2025
574dea3
Remove coverage report and XML generation commands from tox.ini
kingbuzzman May 26, 2025
5f92bc2
Refactor coverage artifact naming in main.yml to remove leading dot
kingbuzzman May 26, 2025
0dff300
Streamline event triggers in main.yml to use array syntax for push an…
kingbuzzman May 26, 2025
f9bd682
.
kingbuzzman May 26, 2025
77a07e2
Enhance main.yml workflow by refining event triggers and simplifying …
kingbuzzman May 26, 2025
ef377e5
.
kingbuzzman May 26, 2025
d795df0
.
kingbuzzman May 26, 2025
9a1375a
Merge branch 'main' into dev/remove-codecov
kingbuzzman May 26, 2025
48e6ea9
Update pyproject.toml to exclude pytest_django/_version.py from coverage
kingbuzzman May 26, 2025
a36659e
Refactor coverage configuration in pyproject.toml to include and omit…
kingbuzzman May 26, 2025
45cb413
.
kingbuzzman May 26, 2025
9f9cf83
Update main.yml
kingbuzzman May 27, 2025
9bff05a
Update main.yml
kingbuzzman May 27, 2025
a5d66c7
Update main.yml
kingbuzzman May 27, 2025
1ffc476
.
kingbuzzman May 27, 2025
186dcc4
Enhance coverage report configuration in main.yml to include markdown…
kingbuzzman May 27, 2025
e3a6ea1
Remove pytest_django/_version.py from coverage omission list in pypro…
kingbuzzman May 27, 2025
febb65c
..i think copilot led me down the wrong road
kingbuzzman May 27, 2025
a946de1
Ok not soo wrong..
kingbuzzman May 27, 2025
e38450f
Update main.yml
kingbuzzman May 27, 2025
917a326
Refactor retention days logic in main.yml to use a dedicated step for…
kingbuzzman May 27, 2025
82180a5
Unify tests for speed
kingbuzzman May 27, 2025
f33ffd9
.
kingbuzzman May 27, 2025
f6fe9cb
.
kingbuzzman May 27, 2025
81c2e36
Add pytest import skip for xdist in test_fixtures.py to ensure compat…
kingbuzzman May 27, 2025
447de77
.
kingbuzzman May 27, 2025
5c74876
.
kingbuzzman May 27, 2025
17fc9c0
All these tests now run in 68s... damn!
kingbuzzman May 27, 2025
ec939d5
.
kingbuzzman May 27, 2025
bbe8909
Refactor tox commands in tox.ini and update workflow to use the -f fl…
kingbuzzman May 27, 2025
18abc2b
.
kingbuzzman May 27, 2025
9226882
.
kingbuzzman May 27, 2025
99ffdc4
simpler...
kingbuzzman May 27, 2025
7e0c82b
.
kingbuzzman May 27, 2025
94af128
.
kingbuzzman May 27, 2025
2506c02
.
kingbuzzman May 27, 2025
980a1ab
.
kingbuzzman May 27, 2025
8f26903
.
kingbuzzman May 27, 2025
291e541
more...
kingbuzzman May 27, 2025
278eb94
.
kingbuzzman May 27, 2025
d5ca2d0
.
kingbuzzman May 27, 2025
7aeb0a4
.
kingbuzzman May 27, 2025
e1aabb3
.
kingbuzzman May 27, 2025
3768ab8
.
kingbuzzman May 27, 2025
e7201f9
.
kingbuzzman May 27, 2025
c7c0d9f
.
kingbuzzman May 27, 2025
2b040cb
.
kingbuzzman May 27, 2025
a890bd3
Merge branch 'main' into dev/remove-codecov
kingbuzzman Jun 2, 2025
9bcbcd8
.
kingbuzzman Jun 3, 2025
3f519be
.
kingbuzzman Jun 3, 2025
075a8a9
Merge branch 'main' into dev/remove-codecov
kingbuzzman Jun 3, 2025
5ee4928
Merge branch 'main' into dev/remove-codecov
kingbuzzman Jun 3, 2025
78e77c6
zizmor changes
kingbuzzman Jun 3, 2025
f8f4e3f
Update main.yml
kingbuzzman Jun 3, 2025
e188210
Update pyproject.toml
kingbuzzman Jun 3, 2025
dfbc2eb
Update .github/zizmor.yml
kingbuzzman Jun 4, 2025
3faf64b
Update .github/workflows/main.yml
kingbuzzman Jun 4, 2025
6e8b318
Update .github/workflows/main.yml
kingbuzzman Jun 4, 2025
9958235
Update .github/workflows/main.yml
kingbuzzman Jun 4, 2025
a44cb3a
Merge branch 'main' into dev/remove-codecov
kingbuzzman Jun 4, 2025
595b61e
Update pyproject.toml
kingbuzzman Jun 4, 2025
c0c7494
Update pyproject.toml
kingbuzzman Jun 4, 2025
f9004d3
Update pyproject.toml
kingbuzzman Jun 4, 2025
7eb83ca
Update .github/workflows/main.yml
kingbuzzman Jun 4, 2025
764ae23
Update .github/workflows/main.yml
kingbuzzman Jun 4, 2025
1b90774
Update .github/workflows/main.yml
kingbuzzman Jun 4, 2025
66be0eb
Merge branch 'main' into dev/remove-codecov
kingbuzzman Jun 5, 2025
9ea2987
Merge branch 'main' into dev/remove-codecov
kingbuzzman Jun 5, 2025
c27c622
Merge branch 'dev/remove-codecov' into dev/speed-tests
kingbuzzman Jun 5, 2025
36344ac
Update main.yml
kingbuzzman Jun 5, 2025
2ed43eb
.
kingbuzzman Jun 5, 2025
b5f158d
.
kingbuzzman Jun 5, 2025
84b70ca
.
kingbuzzman Jun 5, 2025
903e05d
.
kingbuzzman Jun 5, 2025
72dc763
.
kingbuzzman Jun 5, 2025
43e1820
.
kingbuzzman Jun 5, 2025
2c12d04
p312 is pretty slow...
kingbuzzman Jun 5, 2025
faa344d
Merge branch 'main' into dev/remove-codecov
kingbuzzman Jun 16, 2025
d61a45d
Update .github/workflows/main.yml
kingbuzzman Jun 16, 2025
6824e48
Merge branch 'dev/remove-codecov' into dev/speed-tests
kingbuzzman Jun 27, 2025
e858136
Merge branch 'main' into dev/remove-codecov
kingbuzzman Aug 13, 2025
0054df5
Update main.yml
kingbuzzman Aug 13, 2025
c1fc14b
Merge branch 'dev/remove-codecov' into dev/speed-tests
kingbuzzman Aug 15, 2025
92d41ae
Merge branch 'main' into dev/speed-tests
kingbuzzman Aug 15, 2025
aeb6fc3
.
kingbuzzman Aug 15, 2025
ca99476
Minimize changes
kingbuzzman Aug 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
141 changes: 65 additions & 76 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,6 @@ jobs:
permissions:
contents: read
security-events: write
env:
TOXENV: ${{ matrix.name }}
steps:
- uses: actions/checkout@v4
with:
Expand Down Expand Up @@ -56,7 +54,9 @@ jobs:
uv tool install tox==4.28.4 --with tox-uv

- name: Run tox
run: tox
run: tox ${TOX_ARGS}
env:
TOX_ARGS: ${{ matrix.use_factor && format('-f {0}', matrix.name) || format('-e {0}', matrix.name) }}

- name: Upload zizmor SARIF report into the GitHub repo code scanning
if: contains(matrix.name, 'linting')
Expand All @@ -77,79 +77,68 @@ jobs:
fail-fast: false
matrix:
include:
- name: linting,docs
python: '3.13'
allow_failure: false

# Explicitly test min pytest.
- name: py313-dj52-sqlite-pytestmin-coverage
python: '3.13'
allow_failure: false

- name: py313-dj52-postgres-xdist-coverage
python: '3.13'
allow_failure: false

- name: py313-dj51-postgres-xdist-coverage
python: '3.13'
allow_failure: false

- name: py312-dj42-postgres-xdist-coverage
python: '3.12'
allow_failure: false

- name: py311-dj50-postgres-xdist-coverage
python: '3.11'
allow_failure: false

- name: py311-dj42-postgres-xdist-coverage
python: '3.11'
allow_failure: false

- name: py310-dj52-postgres-xdist-coverage
python: '3.10'
allow_failure: false

- name: py310-dj51-postgres-xdist-coverage
python: '3.10'
allow_failure: false

- name: py310-dj42-postgres-xdist-coverage
python: '3.10'
allow_failure: false

- name: py311-dj51-mysql-coverage
python: '3.11'
allow_failure: false

- name: py310-dj42-mysql-coverage
python: '3.10'
allow_failure: false

- name: py39-dj42-mysql-xdist-coverage
python: '3.9'
allow_failure: false

- name: py313-djmain-sqlite-coverage
python: '3.13'
allow_failure: true

- name: py313-dj52-sqlite-coverage
python: '3.13'
allow_failure: true

- name: py312-dj51-sqlite-xdist-coverage
python: '3.12'
allow_failure: false

- name: py311-dj42-sqlite-xdist-coverage
python: '3.11'
allow_failure: false

# pypy3: not included with coverage reports (much slower then).
- name: pypy3-dj42-postgres
python: 'pypy3.9'
allow_failure: false
- name: linting,docs
python: '3.13'
allow_failure: false
use_factor: false

- name: py39-sqlite-xdist-coverage
python: '3.9'
allow_failure: false
use_factor: true

- name: py310-sqlite-xdist-coverage
python: '3.10'
allow_failure: false
use_factor: true

- name: py311-sqlite-xdist-coverage
python: '3.11'
allow_failure: false
use_factor: true

# start: Speeding up tests by running them in parallel.
- name: py312-dj42-sqlite-xdist-coverage
python: '3.12'
allow_failure: false
use_factor: false

- name: py312-dj51-sqlite-xdist-coverage
python: '3.12'
allow_failure: false
use_factor: false

- name: py312-dj52-sqlite-xdist-coverage
python: '3.12'
allow_failure: false
use_factor: false
# end: Speeding up tests by running them in parallel.

- name: py313-sqlite-xdist-coverage
python: '3.13'
allow_failure: false
use_factor: true

- name: py313-djmain-postgres-coverage
python: '3.13'
allow_failure: false
use_factor: false

- name: py313-djmain-mysql-coverage
python: '3.13'
allow_failure: false
use_factor: false

- name: py313-djmain-sqlite-pytestmin
python: '3.13'
allow_failure: false
use_factor: false

# pypy3: not included with coverage reports (much slower then).
- name: pypy3-dj52-sqlite
python: 'pypy3.11'
allow_failure: false
use_factor: false

check: # This job does nothing and is only used for the branch protection
if: always()
Expand Down
3 changes: 3 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,9 @@ include = [
"pytest_django_test/*",
"tests/*",
]
omit = [
"pytest_django/_version.py", # coverage fails when the file stops existing randomly, see .gitignore
]
skip_covered = true
exclude_lines = [
"pragma: no cover",
Expand Down
16 changes: 9 additions & 7 deletions tox.ini
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
[tox]
envlist =
py313-dj{main,52,51}-postgres
py312-dj{main,52,51,42}-postgres
py311-dj{main,52,51,42}-postgres
py310-dj{main,52,51,42}-postgres
py39-dj42-postgres
py313-dj{main,52,51}-{sqlite,postgres,mysql}-{xdist}-{coverage}
py312-dj{main,52,51,42}-{sqlite,postgres,mysql}-{xdist}-{coverage}
py{py,}311-dj{52,51,42}-{sqlite,postgres,mysql}-{xdist}-{coverage}
py{py,}310-dj{52,51,42}-{sqlite,postgres,mysql}-{xdist}-{coverage}
py{py,}39-dj42-{sqlite,postgres,mysql}-{xdist}-{coverage}
linting

[testenv]
Expand All @@ -16,17 +16,19 @@ dependency_groups =
xdist: xdist
deps =
djmain: https://github.com/django/django/archive/main.tar.gz
dj52: Django>=5.2a1,<6.0
dj52: Django>=5.2,<6.0
dj51: Django>=5.1,<5.2
dj50: Django>=5.0,<5.1
dj42: Django>=4.2,<4.3

pytestmin: pytest>=7.0,<7.1

setenv =
mysql: DJANGO_SETTINGS_MODULE=pytest_django_test.settings_mysql
mysql: DJANGO_SETTINGS_MODULE=pytest_django_test.settings_mysql
postgres: DJANGO_SETTINGS_MODULE=pytest_django_test.settings_postgres
sqlite: DJANGO_SETTINGS_MODULE=pytest_django_test.settings_sqlite
sqlite_file: DJANGO_SETTINGS_MODULE=pytest_django_test.settings_sqlite_file
xdist: PYTEST_ADDOPTS=-n auto

coverage: PYTESTDJANGO_TEST_RUNNER=coverage run -m pytest
coverage: COVERAGE_PROCESS_START={toxinidir}/pyproject.toml
Expand Down