Skip to content

Commit 86d5885

Browse files
committed
speed up CI by running each test app separately
Since django-mongodb does not support transactions, the database must be flushed between tests which means a collection.delete_many({}) for every collection that exists. By running each test app separately, it avoids the need to flush the collections in other apps.
1 parent 3c5bae4 commit 86d5885

File tree

2 files changed

+82
-63
lines changed

2 files changed

+82
-63
lines changed

.github/workflows/runtests.py

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
#!/usr/bin/env python
2+
import os
3+
import pathlib
4+
import sys
5+
6+
test_apps = [
7+
"admin_filters",
8+
"aggregation",
9+
"aggregation_regress",
10+
"annotations",
11+
"auth_tests.test_models.UserManagerTestCase",
12+
"backends",
13+
"basic",
14+
"bulk_create",
15+
"custom_pk",
16+
"dates",
17+
"datetimes",
18+
"db_functions",
19+
"dbshell_",
20+
"defer",
21+
"defer_regress",
22+
"delete",
23+
"delete_regress",
24+
"empty",
25+
"expressions",
26+
"expressions_case",
27+
"force_insert_update",
28+
"from_db_value",
29+
"generic_relations",
30+
"generic_relations_regress",
31+
"introspection",
32+
"known_related_objects",
33+
"lookup",
34+
"m2m_and_m2o",
35+
"m2m_intermediary",
36+
"m2m_multiple",
37+
"m2m_recursive",
38+
"m2m_regress",
39+
"m2m_signals",
40+
"m2m_through",
41+
"m2m_through_regress",
42+
"m2o_recursive",
43+
"many_to_many",
44+
"many_to_one",
45+
"many_to_one_null",
46+
"migrations",
47+
"model_fields",
48+
"model_fields_",
49+
"model_forms",
50+
"model_formsets",
51+
"model_inheritance_regress",
52+
"mutually_referential",
53+
"nested_foreign_keys",
54+
"null_fk",
55+
"null_fk_ordering",
56+
"null_queries",
57+
"one_to_one",
58+
"or_lookups",
59+
"ordering",
60+
"queries",
61+
"queries_",
62+
"schema",
63+
"select_related",
64+
"select_related_onetoone",
65+
"select_related_regress",
66+
"sessions_tests",
67+
"timezones",
68+
"update",
69+
"xor_lookups",
70+
]
71+
runtests = pathlib.Path(__file__).parent.resolve() / "runtests.py"
72+
run_tests_cmd = f"python3 {runtests} %s --settings mongodb_settings -v 2"
73+
74+
shouldFail = False
75+
for app_name in test_apps:
76+
res = os.system(run_tests_cmd % app_name) # noqa: S605
77+
if res != 0:
78+
shouldFail = True
79+
sys.exit(1 if shouldFail else 0)

.github/workflows/test-python.yml

Lines changed: 3 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -44,71 +44,11 @@ jobs:
4444
pip3 install -r requirements/py3.txt
4545
- name: Copy the test settings file
4646
run: cp .github/workflows/mongodb_settings.py django_repo/tests/
47+
- name: Copy the test runner file
48+
run: cp .github/workflows/runtests.py django_repo/tests/runtests_.py
4749
- name: Start MongoDB
4850
uses: supercharge/[email protected]
4951
with:
5052
mongodb-version: 5.0
5153
- name: Run tests
52-
run: >
53-
python3 django_repo/tests/runtests.py --settings mongodb_settings -v 2
54-
admin_filters
55-
aggregation
56-
aggregation_regress
57-
annotations
58-
auth_tests.test_models.UserManagerTestCase
59-
backends
60-
basic
61-
bulk_create
62-
custom_pk
63-
dates
64-
datetimes
65-
db_functions
66-
dbshell_
67-
delete
68-
delete_regress
69-
empty
70-
expressions
71-
expressions_case
72-
defer
73-
defer_regress
74-
force_insert_update
75-
from_db_value
76-
generic_relations
77-
generic_relations_regress
78-
introspection
79-
known_related_objects
80-
lookup
81-
m2m_and_m2o
82-
m2m_intermediary
83-
m2m_multiple
84-
m2m_recursive
85-
m2m_regress
86-
m2m_signals
87-
m2m_through
88-
m2m_through_regress
89-
m2o_recursive
90-
many_to_many
91-
many_to_one
92-
many_to_one_null
93-
migrations
94-
model_fields
95-
model_forms
96-
model_formsets
97-
model_inheritance_regress
98-
mutually_referential
99-
nested_foreign_keys
100-
null_fk
101-
null_fk_ordering
102-
null_queries
103-
one_to_one
104-
ordering
105-
or_lookups
106-
queries
107-
schema
108-
select_related
109-
select_related_onetoone
110-
select_related_regress
111-
sessions_tests
112-
timezones
113-
update
114-
xor_lookups
54+
run: python3 django_repo/tests/runtests_.py

0 commit comments

Comments
 (0)