Fixed #20550 -- Added keepdb argument to destroy_test_db
This commit is contained in:
parent
7be646425f
commit
72f055e535
1
AUTHORS
1
AUTHORS
|
@ -154,6 +154,7 @@ answer newbie questions, and generally made Django that much better:
|
||||||
Antonio Cavedoni <http://cavedoni.com/>
|
Antonio Cavedoni <http://cavedoni.com/>
|
||||||
cedric@terramater.net
|
cedric@terramater.net
|
||||||
Chris Chamberlin <dja@cdc.msbx.net>
|
Chris Chamberlin <dja@cdc.msbx.net>
|
||||||
|
Greg Chapple <gregchapple1@gmail.com>
|
||||||
Amit Chakradeo <http://amit.chakradeo.net/>
|
Amit Chakradeo <http://amit.chakradeo.net/>
|
||||||
ChaosKCW
|
ChaosKCW
|
||||||
Kowito Charoenratchatabhan <kowito@felspar.com>
|
Kowito Charoenratchatabhan <kowito@felspar.com>
|
||||||
|
|
|
@ -449,7 +449,7 @@ class BaseDatabaseCreation(object):
|
||||||
|
|
||||||
return test_database_name
|
return test_database_name
|
||||||
|
|
||||||
def destroy_test_db(self, old_database_name, verbosity=1):
|
def destroy_test_db(self, old_database_name, verbosity=1, keepdb=False):
|
||||||
"""
|
"""
|
||||||
Destroy a test database, prompting the user for confirmation if the
|
Destroy a test database, prompting the user for confirmation if the
|
||||||
database already exists.
|
database already exists.
|
||||||
|
@ -458,12 +458,18 @@ class BaseDatabaseCreation(object):
|
||||||
test_database_name = self.connection.settings_dict['NAME']
|
test_database_name = self.connection.settings_dict['NAME']
|
||||||
if verbosity >= 1:
|
if verbosity >= 1:
|
||||||
test_db_repr = ''
|
test_db_repr = ''
|
||||||
|
action = 'Destroying'
|
||||||
if verbosity >= 2:
|
if verbosity >= 2:
|
||||||
test_db_repr = " ('%s')" % test_database_name
|
test_db_repr = " ('%s')" % test_database_name
|
||||||
print("Destroying test database for alias '%s'%s..." % (
|
if keepdb:
|
||||||
self.connection.alias, test_db_repr))
|
action = 'Preserving'
|
||||||
|
print("%s test database for alias '%s'%s..." % (
|
||||||
|
action, self.connection.alias, test_db_repr))
|
||||||
|
|
||||||
self._destroy_test_db(test_database_name, verbosity)
|
# if we want to preserve the database
|
||||||
|
# skip the actual destroying piece.
|
||||||
|
if not keepdb:
|
||||||
|
self._destroy_test_db(test_database_name, verbosity)
|
||||||
|
|
||||||
def _destroy_test_db(self, test_database_name, verbosity):
|
def _destroy_test_db(self, test_database_name, verbosity):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -124,8 +124,8 @@ class DiscoverRunner(object):
|
||||||
"""
|
"""
|
||||||
old_names, mirrors = old_config
|
old_names, mirrors = old_config
|
||||||
for connection, old_name, destroy in old_names:
|
for connection, old_name, destroy in old_names:
|
||||||
if destroy and not self.keepdb:
|
if destroy:
|
||||||
connection.creation.destroy_test_db(old_name, self.verbosity)
|
connection.creation.destroy_test_db(old_name, self.verbosity, self.keepdb)
|
||||||
|
|
||||||
def teardown_test_environment(self, **kwargs):
|
def teardown_test_environment(self, **kwargs):
|
||||||
unittest.removeHandler()
|
unittest.removeHandler()
|
||||||
|
|
|
@ -485,7 +485,7 @@ django.db.connection.creation
|
||||||
The creation module of the database backend also provides some utilities that
|
The creation module of the database backend also provides some utilities that
|
||||||
can be useful during testing.
|
can be useful during testing.
|
||||||
|
|
||||||
.. function:: create_test_db([verbosity=1, autoclobber=False])
|
.. function:: create_test_db([verbosity=1, autoclobber=False, keepdb=False])
|
||||||
|
|
||||||
Creates a new test database and runs ``migrate`` against it.
|
Creates a new test database and runs ``migrate`` against it.
|
||||||
|
|
||||||
|
@ -501,13 +501,19 @@ can be useful during testing.
|
||||||
* If autoclobber is ``True``, the database will be destroyed
|
* If autoclobber is ``True``, the database will be destroyed
|
||||||
without consulting the user.
|
without consulting the user.
|
||||||
|
|
||||||
|
``keepdb`` determines if the test run should use an existing
|
||||||
|
database, or create a new one. If ``True``, the existing
|
||||||
|
database will be used, or created if not present. If ``False``,
|
||||||
|
a new database will be created, prompting the user to remove
|
||||||
|
the existing one, if present.
|
||||||
|
|
||||||
Returns the name of the test database that it created.
|
Returns the name of the test database that it created.
|
||||||
|
|
||||||
``create_test_db()`` has the side effect of modifying the value of
|
``create_test_db()`` has the side effect of modifying the value of
|
||||||
:setting:`NAME` in :setting:`DATABASES` to match the name of the test
|
:setting:`NAME` in :setting:`DATABASES` to match the name of the test
|
||||||
database.
|
database.
|
||||||
|
|
||||||
.. function:: destroy_test_db(old_database_name, [verbosity=1])
|
.. function:: destroy_test_db(old_database_name, [verbosity=1, keepdb=False])
|
||||||
|
|
||||||
Destroys the database whose name is the value of :setting:`NAME` in
|
Destroys the database whose name is the value of :setting:`NAME` in
|
||||||
:setting:`DATABASES`, and sets :setting:`NAME` to the value of
|
:setting:`DATABASES`, and sets :setting:`NAME` to the value of
|
||||||
|
@ -516,6 +522,9 @@ can be useful during testing.
|
||||||
The ``verbosity`` argument has the same behavior as for
|
The ``verbosity`` argument has the same behavior as for
|
||||||
:class:`~django.test.runner.DiscoverRunner`.
|
:class:`~django.test.runner.DiscoverRunner`.
|
||||||
|
|
||||||
|
If the ``keepdb`` argument is ``True``, then the connection to the
|
||||||
|
database will be closed, but the database will not be destroyed.
|
||||||
|
|
||||||
.. _topics-testing-code-coverage:
|
.. _topics-testing-code-coverage:
|
||||||
|
|
||||||
Integration with coverage.py
|
Integration with coverage.py
|
||||||
|
|
|
@ -309,7 +309,7 @@ class AliasedDatabaseTeardownTest(unittest.TestCase):
|
||||||
old_create_test_db = DatabaseCreation.create_test_db
|
old_create_test_db = DatabaseCreation.create_test_db
|
||||||
try:
|
try:
|
||||||
destroyed_names = []
|
destroyed_names = []
|
||||||
DatabaseCreation.destroy_test_db = lambda self, old_database_name, verbosity=1: destroyed_names.append(old_database_name)
|
DatabaseCreation.destroy_test_db = lambda self, old_database_name, verbosity=1, keepdb=False: destroyed_names.append(old_database_name)
|
||||||
DatabaseCreation.create_test_db = lambda self, verbosity=1, autoclobber=False, keepdb=False: self._get_test_db_name()
|
DatabaseCreation.create_test_db = lambda self, verbosity=1, autoclobber=False, keepdb=False: self._get_test_db_name()
|
||||||
|
|
||||||
db.connections = db.ConnectionHandler({
|
db.connections = db.ConnectionHandler({
|
||||||
|
|
Loading…
Reference in New Issue