18
18
"db" ,
19
19
"transactional_db" ,
20
20
"django_db_reset_sequences" ,
21
+ "django_db_serialized_rollback" ,
21
22
"admin_user" ,
22
23
"django_user_model" ,
23
24
"django_username_field" ,
@@ -124,7 +125,8 @@ def teardown_database():
124
125
125
126
126
127
def _django_db_fixture_helper (
127
- request , django_db_blocker , transactional = False , reset_sequences = False
128
+ request , django_db_blocker , transactional = False , reset_sequences = False ,
129
+ serialized_rollback = False
128
130
):
129
131
if is_django_unittest (request ):
130
132
return
@@ -149,6 +151,7 @@ class ResetSequenceTestCase(django_case):
149
151
from django .test import TestCase as django_case
150
152
151
153
test_case = django_case (methodName = "__init__" )
154
+ test_case .serialized_rollback = serialized_rollback
152
155
test_case ._pre_setup ()
153
156
request .addfinalizer (test_case ._post_teardown )
154
157
@@ -207,13 +210,16 @@ def db(request, django_db_setup, django_db_blocker):
207
210
"""
208
211
if "django_db_reset_sequences" in request .fixturenames :
209
212
request .getfixturevalue ("django_db_reset_sequences" )
213
+ if "django_db_serialized_rollback" in request .fixturenames :
214
+ request .getfixturevalue ("django_db_serialized_rollback" )
210
215
if (
211
216
"transactional_db" in request .fixturenames
212
217
or "live_server" in request .fixturenames
213
218
):
214
219
request .getfixturevalue ("transactional_db" )
215
220
else :
216
- _django_db_fixture_helper (request , django_db_blocker , transactional = False )
221
+ _django_db_fixture_helper (request , django_db_blocker , transactional = False ,
222
+ serialized_rollback = False )
217
223
218
224
219
225
@pytest .fixture (scope = "function" )
@@ -232,6 +238,8 @@ def transactional_db(request, django_db_setup, django_db_blocker):
232
238
"""
233
239
if "django_db_reset_sequences" in request .fixturenames :
234
240
request .getfixturevalue ("django_db_reset_sequences" )
241
+ if "django_db_serialized_rollback" in request .fixturenames :
242
+ request .getfixturevalue ("django_db_serialized_rollback" )
235
243
_django_db_fixture_helper (request , django_db_blocker , transactional = True )
236
244
237
245
@@ -253,6 +261,20 @@ def django_db_reset_sequences(request, django_db_setup, django_db_blocker):
253
261
)
254
262
255
263
264
+ @pytest .fixture (scope = "function" )
265
+ def django_db_serialized_rollback (request , django_db_setup , django_db_blocker ):
266
+ """Enable serialized rollback after transaction test cases
267
+
268
+ This fixture only has an effect when the ``transactional_db``
269
+ fixture is active, which happen as a side-effect of requesting
270
+ ``live_server``.
271
+
272
+ """
273
+ _django_db_fixture_helper (
274
+ request , django_db_blocker , transactional = True , serialized_rollback = True
275
+ )
276
+
277
+
256
278
@pytest .fixture ()
257
279
def client ():
258
280
"""A Django test client instance."""
0 commit comments