Fixed -- Fixed isolation of migrations.test_executor.ExecutorTests.test_custom_user().
@@ -10,6 +10,7 @@ from django.db.migrations.state import ProjectState
from django.test import (
SimpleTestCase, modify_settings, override_settings, skipUnlessDBFeature,
)
+from django.test.utils import isolate_lru_cache
from .test_base import MigrationTestBase
@@ -344,32 +345,39 @@ class ExecutorTests(MigrationTestBase):
Regression test for #22325 - references to a custom user model defined in the
same app are not resolved correctly.
"""
+ with isolate_lru_cache(global_apps.get_swappable_settings_name):
executor = MigrationExecutor(connection)
- self.assertTableNotExists("migrations_author")
- self.assertTableNotExists("migrations_tribble")
+ self.assertTableNotExists('migrations_author')
+ self.assertTableNotExists('migrations_tribble')
# Migrate forwards
- executor.migrate([("migrations", "0001_initial")])
- self.assertTableExists("migrations_author")
- self.assertTableExists("migrations_tribble")
- # Make sure the soft-application detection works (#23093)
- # Change table_names to not return auth_user during this as
- # it wouldn't be there in a normal run, and ensure migrations.Author
+ executor.migrate([('migrations', '0001_initial')])
+ self.assertTableExists('migrations_author')
+ self.assertTableExists('migrations_tribble')
+ # The soft-application detection works.
+ # Change table_names to not return auth_user during this as it
+ # wouldn't be there in a normal run, and ensure migrations.Author
# exists in the global app registry temporarily.
old_table_names = connection.introspection.table_names
- connection.introspection.table_names = lambda c: [x for x in old_table_names(c) if x != "auth_user"]
- migrations_apps = executor.loader.project_state(("migrations", "0001_initial")).apps
- global_apps.get_app_config("migrations").models["author"] = migrations_apps.get_model("migrations", "author")
+ connection.introspection.table_names = lambda c: [
+ x for x in old_table_names(c) if x != 'auth_user'
+ ]
+ migrations_apps = executor.loader.project_state(
+ ('migrations', '0001_initial'),
+ ).apps
+ global_apps.get_app_config('migrations').models['author'] = (
+ migrations_apps.get_model('migrations', 'author')
+ )
try:
- migration = executor.loader.get_migration("auth", "0001_initial")
+ migration = executor.loader.get_migration('auth', '0001_initial')
self.assertIs(executor.detect_soft_applied(None, migration)[0], True)
finally:
connection.introspection.table_names = old_table_names
- del global_apps.get_app_config("migrations").models["author"]
- # And migrate back to clean up the database
+ del global_apps.get_app_config('migrations').models['author']
+ # Migrate back to clean up the database.
executor.loader.build_graph()
- executor.migrate([("migrations", None)])
- self.assertTableNotExists("migrations_author")
- self.assertTableNotExists("migrations_tribble")
+ executor.migrate([('migrations', None)])
+ self.assertTableNotExists('migrations_author')
+ self.assertTableNotExists('migrations_tribble')
@override_settings(
MIGRATION_MODULES={
