Ensured that the test suite creates the default DB before any others.

Refs #14799. Technically this fixes the problem, but I'm far from convinced
it's the perfect solution, so I'm leaving the ticket open. I'm committing
this now because it's the minimum required to get the test suite running
again, but this commit can -- and probably should -- be reverted in favor of
a more holistic fix later on.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@14756 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Jacob Kaplan-Moss 2010-11-30 22:14:03 +00:00
parent 0714b0f390
commit 2fa22a4b64
1 changed files with 14 additions and 4 deletions

View File

@ -216,7 +216,7 @@ class DjangoTestSuiteRunner(object):
return reorder_suite(suite, (TestCase,)) return reorder_suite(suite, (TestCase,))
def setup_databases(self, **kwargs): def setup_databases(self, **kwargs):
from django.db import connections from django.db import connections, DEFAULT_DB_ALIAS
# First pass -- work out which databases actually need to be created, # First pass -- work out which databases actually need to be created,
# and which ones are test mirrors or duplicate entries in DATABASES # and which ones are test mirrors or duplicate entries in DATABASES
@ -239,10 +239,20 @@ class DjangoTestSuiteRunner(object):
connection.settings_dict['NAME'], connection.settings_dict['NAME'],
), []).append(alias) ), []).append(alias)
# Second pass -- actually create the databases. # Re-order the list of databases to create, making sure the default
# database is first. Otherwise, creation order is semi-random (i.e.
# dict ordering dependent).
dbs_to_create = []
for dbinfo, aliases in test_databases.items():
if DEFAULT_DB_ALIAS in aliases:
dbs_to_create.insert(0, (dbinfo, aliases))
else:
dbs_to_create.append((dbinfo, aliases))
# Final pass -- actually create the databases.
old_names = [] old_names = []
mirrors = [] mirrors = []
for (host, port, engine, db_name), aliases in test_databases.items(): for (host, port, engine, db_name), aliases in dbs_to_create:
# Actually create the database for the first connection # Actually create the database for the first connection
connection = connections[aliases[0]] connection = connections[aliases[0]]
old_names.append((connection, db_name, True)) old_names.append((connection, db_name, True))