Fixed #23650 -- Prevented migrate from calling checks 3 times

Thanks Ilya Baryshev for the report and Tim Graham for the review.
This commit is contained in:
Claude Paroz 2014-10-17 14:13:59 +02:00
parent 7ae03204ac
commit 8d6e1afe0b
2 changed files with 22 additions and 0 deletions

View File

@ -165,6 +165,7 @@ class Command(BaseCommand):
database=db,
reset_sequences=False,
inhibit_post_migrate=True,
skip_checks=True,
)
# Migrate!

View File

@ -139,6 +139,27 @@ class MigrateTests(MigrationTestBase):
stdout = six.StringIO()
call_command("migrate", "migrated_unapplied_app", stdout=stdout)
@override_system_checks([])
@override_settings(MIGRATION_MODULES={"migrations": "migrations.test_migrations"})
def test_migrate_system_checks(self):
"""
Migrate should only call system checks once, even with test_flush=True (Refs #23650).
"""
from django.core.management.base import BaseCommand
self.counter = 0
def patched_check(self_, **kwargs):
self.counter = self.counter + 1
saved_check = BaseCommand.check
BaseCommand.check = patched_check
try:
call_command("migrate", "migrations", verbosity=0, test_flush=True)
finally:
BaseCommand.check = saved_check
self.assertEqual(self.counter, 1)
class MakeMigrationsTests(MigrationTestBase):
"""