Fixed #34052 -- Made migrate --check don't emit signals and output when up to date.
This commit is contained in:
parent
cff1f888e9
commit
1a7b6909ac
|
@ -240,23 +240,27 @@ class Command(BaseCommand):
|
||||||
self.stdout.write(" No migrations to prune.")
|
self.stdout.write(" No migrations to prune.")
|
||||||
|
|
||||||
plan = executor.migration_plan(targets)
|
plan = executor.migration_plan(targets)
|
||||||
exit_dry = plan and options["check_unapplied"]
|
|
||||||
|
|
||||||
if options["plan"]:
|
if options["plan"]:
|
||||||
self.stdout.write("Planned operations:", self.style.MIGRATE_LABEL)
|
self.stdout.write("Planned operations:", self.style.MIGRATE_LABEL)
|
||||||
if not plan:
|
if not plan:
|
||||||
self.stdout.write(" No planned migration operations.")
|
self.stdout.write(" No planned migration operations.")
|
||||||
for migration, backwards in plan:
|
else:
|
||||||
self.stdout.write(str(migration), self.style.MIGRATE_HEADING)
|
for migration, backwards in plan:
|
||||||
for operation in migration.operations:
|
self.stdout.write(str(migration), self.style.MIGRATE_HEADING)
|
||||||
message, is_error = self.describe_operation(operation, backwards)
|
for operation in migration.operations:
|
||||||
style = self.style.WARNING if is_error else None
|
message, is_error = self.describe_operation(
|
||||||
self.stdout.write(" " + message, style)
|
operation, backwards
|
||||||
if exit_dry:
|
)
|
||||||
|
style = self.style.WARNING if is_error else None
|
||||||
|
self.stdout.write(" " + message, style)
|
||||||
|
if options["check_unapplied"]:
|
||||||
|
sys.exit(1)
|
||||||
|
return
|
||||||
|
if options["check_unapplied"]:
|
||||||
|
if plan:
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
return
|
return
|
||||||
if exit_dry:
|
|
||||||
sys.exit(1)
|
|
||||||
if options["prune"]:
|
if options["prune"]:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
|
@ -156,3 +156,15 @@ class MigrateSignalTests(TransactionTestCase):
|
||||||
],
|
],
|
||||||
["migrate_signals.Signal"],
|
["migrate_signals.Signal"],
|
||||||
)
|
)
|
||||||
|
# Migrating with an empty plan and --check doesn't emit signals.
|
||||||
|
pre_migrate_receiver = Receiver(signals.pre_migrate)
|
||||||
|
post_migrate_receiver = Receiver(signals.post_migrate)
|
||||||
|
management.call_command(
|
||||||
|
"migrate",
|
||||||
|
database=MIGRATE_DATABASE,
|
||||||
|
verbosity=MIGRATE_VERBOSITY,
|
||||||
|
interactive=MIGRATE_INTERACTIVE,
|
||||||
|
check_unapplied=True,
|
||||||
|
)
|
||||||
|
self.assertEqual(pre_migrate_receiver.call_counter, 0)
|
||||||
|
self.assertEqual(post_migrate_receiver.call_counter, 0)
|
||||||
|
|
|
@ -355,6 +355,26 @@ class MigrateTests(MigrationTestBase):
|
||||||
self.assertTableNotExists("migrations_tribble")
|
self.assertTableNotExists("migrations_tribble")
|
||||||
self.assertTableNotExists("migrations_book")
|
self.assertTableNotExists("migrations_book")
|
||||||
|
|
||||||
|
@override_settings(
|
||||||
|
INSTALLED_APPS=[
|
||||||
|
"migrations.migrations_test_apps.migrated_app",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
def test_migrate_check_migrated_app(self):
|
||||||
|
out = io.StringIO()
|
||||||
|
try:
|
||||||
|
call_command("migrate", "migrated_app", verbosity=0)
|
||||||
|
call_command(
|
||||||
|
"migrate",
|
||||||
|
"migrated_app",
|
||||||
|
stdout=out,
|
||||||
|
check_unapplied=True,
|
||||||
|
)
|
||||||
|
self.assertEqual(out.getvalue(), "")
|
||||||
|
finally:
|
||||||
|
# Unmigrate everything.
|
||||||
|
call_command("migrate", "migrated_app", "zero", verbosity=0)
|
||||||
|
|
||||||
@override_settings(
|
@override_settings(
|
||||||
MIGRATION_MODULES={
|
MIGRATION_MODULES={
|
||||||
"migrations": "migrations.test_migrations_plan",
|
"migrations": "migrations.test_migrations_plan",
|
||||||
|
|
Loading…
Reference in New Issue