mirror of
https://github.com/django/django.git
synced 2025-08-03 18:38:50 +00:00
Fixed #24628 -- Fixed applied status for squashed migrations.
This commit is contained in:
parent
335fc44f68
commit
492537ac18
4 changed files with 42 additions and 0 deletions
|
@ -2,6 +2,7 @@ from django.apps.registry import apps as global_apps
|
|||
from django.db import connection
|
||||
from django.db.migrations.executor import MigrationExecutor
|
||||
from django.db.migrations.graph import MigrationGraph
|
||||
from django.db.migrations.recorder import MigrationRecorder
|
||||
from django.db.utils import DatabaseError
|
||||
from django.test import TestCase, modify_settings, override_settings
|
||||
|
||||
|
@ -411,6 +412,31 @@ class ExecutorTests(MigrationTestBase):
|
|||
self.assertTableNotExists("author_app_author")
|
||||
self.assertTableNotExists("book_app_book")
|
||||
|
||||
@override_settings(MIGRATION_MODULES={"migrations": "migrations.test_migrations_squashed"})
|
||||
def test_apply_all_replaced_marks_replacement_as_applied(self):
|
||||
"""
|
||||
Applying all replaced migrations marks the replacement as applied.
|
||||
|
||||
Ticket #24628.
|
||||
"""
|
||||
recorder = MigrationRecorder(connection)
|
||||
# Place the database in a state where the replaced migrations are
|
||||
# partially applied: 0001 is applied, 0002 is not.
|
||||
recorder.record_applied("migrations", "0001_initial")
|
||||
executor = MigrationExecutor(connection)
|
||||
# Use fake because we don't actually have the first migration
|
||||
# applied, so the second will fail. And there's no need to actually
|
||||
# create/modify tables here, we're just testing the
|
||||
# MigrationRecord, which works the same with or without fake.
|
||||
executor.migrate([("migrations", "0002_second")], fake=True)
|
||||
|
||||
# Because we've now applied 0001 and 0002 both, their squashed
|
||||
# replacement should be marked as applied.
|
||||
self.assertIn(
|
||||
("migrations", "0001_squashed_0002"),
|
||||
recorder.applied_migrations(),
|
||||
)
|
||||
|
||||
|
||||
class FakeLoader(object):
|
||||
def __init__(self, graph, applied):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue