diff options
Diffstat (limited to 'tests/migrations/test_executor.py')
| -rw-r--r-- | tests/migrations/test_executor.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/migrations/test_executor.py b/tests/migrations/test_executor.py index b51e7be90e..7c33c1be5c 100644 --- a/tests/migrations/test_executor.py +++ b/tests/migrations/test_executor.py @@ -477,6 +477,34 @@ class ExecutorTests(MigrationTestBase): self.assertTableNotExists("lookuperror_b_b1") self.assertTableNotExists("lookuperror_c_c1") + @override_settings( + INSTALLED_APPS=[ + 'migrations.migrations_test_apps.mutate_state_a', + 'migrations.migrations_test_apps.mutate_state_b', + ] + ) + def test_unrelated_applied_migrations_mutate_state(self): + """ + #26647 - Unrelated applied migrations should be part of the final + state in both directions. + """ + executor = MigrationExecutor(connection) + executor.migrate([ + ('mutate_state_b', '0002_add_field'), + ]) + # Migrate forward. + executor.loader.build_graph() + state = executor.migrate([ + ('mutate_state_a', '0001_initial'), + ]) + self.assertIn('added', dict(state.models['mutate_state_b', 'b'].fields)) + executor.loader.build_graph() + # Migrate backward. + state = executor.migrate([ + ('mutate_state_a', None), + ]) + self.assertIn('added', dict(state.models['mutate_state_b', 'b'].fields)) + @override_settings(MIGRATION_MODULES={"migrations": "migrations.test_migrations"}) def test_process_callback(self): """ |
