summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/core/management/commands/migrate.py1
-rw-r--r--tests/migrations/test_commands.py21
2 files changed, 22 insertions, 0 deletions
diff --git a/django/core/management/commands/migrate.py b/django/core/management/commands/migrate.py
index aecbcd48f1..d7bc67392d 100644
--- a/django/core/management/commands/migrate.py
+++ b/django/core/management/commands/migrate.py
@@ -165,6 +165,7 @@ class Command(BaseCommand):
database=db,
reset_sequences=False,
inhibit_post_migrate=True,
+ skip_checks=True,
)
# Migrate!
diff --git a/tests/migrations/test_commands.py b/tests/migrations/test_commands.py
index 798dd86fe5..5baa508d50 100644
--- a/tests/migrations/test_commands.py
+++ b/tests/migrations/test_commands.py
@@ -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):
"""