diff options
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/backends/dummy/base.py | 1 | ||||
| -rw-r--r-- | django/test/utils.py | 18 |
2 files changed, 15 insertions, 4 deletions
diff --git a/django/db/backends/dummy/base.py b/django/db/backends/dummy/base.py index 36c6480a78..0e2edc73cf 100644 --- a/django/db/backends/dummy/base.py +++ b/django/db/backends/dummy/base.py @@ -39,6 +39,7 @@ class DatabaseClient(BaseDatabaseClient): class DatabaseCreation(BaseDatabaseCreation): create_test_db = ignore destroy_test_db = ignore + serialize_db_to_string = ignore class DatabaseIntrospection(BaseDatabaseIntrospection): diff --git a/django/test/utils.py b/django/test/utils.py index ddb85127dc..a4e80b0b53 100644 --- a/django/test/utils.py +++ b/django/test/utils.py @@ -189,6 +189,7 @@ def setup_databases( test_databases, mirrored_aliases = get_unique_databases_and_mirrors(aliases) old_names = [] + serialize_connections = [] for db_name, aliases in test_databases.values(): first_alias = None @@ -200,15 +201,14 @@ def setup_databases( if first_alias is None: first_alias = alias with time_keeper.timed(" Creating '%s'" % alias): - serialize_alias = ( - serialized_aliases is None or alias in serialized_aliases - ) connection.creation.create_test_db( verbosity=verbosity, autoclobber=not interactive, keepdb=keepdb, - serialize=serialize_alias, + serialize=False, ) + if serialized_aliases is None or alias in serialized_aliases: + serialize_connections.append(connection) if parallel > 1: for index in range(parallel): with time_keeper.timed(" Cloning '%s'" % alias): @@ -229,6 +229,16 @@ def setup_databases( connections[mirror_alias].settings_dict ) + # Serialize content of test databases only once all of them are setup to + # account for database mirroring and routing during serialization. This + # slightly horrific process is so people who are testing on databases + # without transactions or using TransactionTestCase still get a clean + # database on every test run. + for serialize_connection in serialize_connections: + serialize_connection._test_serialized_contents = ( + serialize_connection.creation.serialize_db_to_string() + ) + if debug_sql: for alias in connections: connections[alias].force_debug_cursor = True |
