Skip to content

Commit ac7ae24

Browse files
committed
Fix --reuse-db and --create-db not working together. Fixes #411
1 parent 94cccb9 commit ac7ae24

File tree

4 files changed

+17
-3
lines changed

4 files changed

+17
-3
lines changed

docs/database.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,15 @@ command line options.
229229

230230
This fixture is by default requested from :fixture:`django_db_setup`.
231231

232+
django_db_createdb
233+
""""""""""""""""
234+
235+
.. fixture:: django_db_createdb
236+
237+
Returns whether or not the database is to be re-created before running any tests.
238+
239+
This fixture is by default requested from :fixture:`django_db_setup`.
240+
232241
django_db_blocker
233242
"""""""""""""""""
234243

pytest_django/fixtures.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,11 @@ def django_db_use_migrations(request):
6161

6262
@pytest.fixture(scope='session')
6363
def django_db_keepdb(request):
64-
return (request.config.getvalue('reuse_db') and not
65-
request.config.getvalue('create_db'))
64+
return request.config.getvalue('reuse_db')
6665

66+
@pytest.fixture(scope='session')
67+
def django_db_createdb(request):
68+
return request.config.getvalue('create_db')
6769

6870
@pytest.fixture(scope='session')
6971
def django_db_setup(
@@ -72,6 +74,7 @@ def django_db_setup(
7274
django_db_blocker,
7375
django_db_use_migrations,
7476
django_db_keepdb,
77+
django_db_createdb,
7578
django_db_modify_db_settings,
7679
):
7780
"""Top level fixture to ensure test databases are available"""
@@ -82,7 +85,7 @@ def django_db_setup(
8285
if not django_db_use_migrations:
8386
_disable_native_migrations()
8487

85-
if django_db_keepdb:
88+
if django_db_keepdb and not django_db_createdb:
8689
setup_databases_args['keepdb'] = True
8790

8891
with django_db_blocker.unblock():

pytest_django/plugin.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from .fixtures import django_db_setup # noqa
2020
from .fixtures import django_db_use_migrations # noqa
2121
from .fixtures import django_db_keepdb # noqa
22+
from .fixtures import django_db_createdb # noqa
2223
from .fixtures import django_db_modify_db_settings # noqa
2324
from .fixtures import django_db_modify_db_settings_xdist_suffix # noqa
2425
from .fixtures import _live_server_helper # noqa

tests/test_db_setup.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ def test_db_can_be_accessed():
7575
])
7676

7777
# Make sure the database has been re-created and the mark is gone
78+
assert db_exists()
7879
assert not mark_exists()
7980

8081

0 commit comments

Comments
 (0)