Skip to content

Commit ac7eb3b

Browse files
ryan-shawblueyed
authored andcommitted
Fix --reuse-db and --create-db not working together
Fixes pytest-dev#411. Closes pytest-dev#560.
1 parent d3d9bb3 commit ac7eb3b

File tree

4 files changed

+20
-3
lines changed

4 files changed

+20
-3
lines changed

docs/database.rst

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,16 @@ 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
238+
tests.
239+
240+
This fixture is by default requested from :fixture:`django_db_setup`.
241+
232242
django_db_blocker
233243
"""""""""""""""""
234244

pytest_django/fixtures.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,12 @@ 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')
65+
66+
67+
@pytest.fixture(scope='session')
68+
def django_db_createdb(request):
69+
return request.config.getvalue('create_db')
6670

6771

6872
@pytest.fixture(scope='session')
@@ -72,6 +76,7 @@ def django_db_setup(
7276
django_db_blocker,
7377
django_db_use_migrations,
7478
django_db_keepdb,
79+
django_db_createdb,
7580
django_db_modify_db_settings,
7681
):
7782
"""Top level fixture to ensure test databases are available"""
@@ -82,7 +87,7 @@ def django_db_setup(
8287
if not django_db_use_migrations:
8388
_disable_native_migrations()
8489

85-
if django_db_keepdb:
90+
if django_db_keepdb and not django_db_createdb:
8691
setup_databases_args['keepdb'] = True
8792

8893
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)