diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2026-03-14 19:11:27 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-14 19:11:27 +0100 |
| commit | 6b90f8a8d6994dc62cd91dde911fe56ec3389494 (patch) | |
| tree | 2489734ddd7c798ee1272ba4cf1bf43ceb64039d | |
| parent | 23f49c6b408d9b013e959f91c23813a7c0f6ed64 (diff) | |
Refs #12529, #22325 -- Fixed ExecutorTests.test_custom_user isolation.
| -rw-r--r-- | tests/migrations/test_executor.py | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/tests/migrations/test_executor.py b/tests/migrations/test_executor.py index 060a35e379..30ef63c662 100644 --- a/tests/migrations/test_executor.py +++ b/tests/migrations/test_executor.py @@ -2,6 +2,7 @@ from unittest import mock from django.apps.registry import apps as global_apps from django.db import DatabaseError, connection, migrations, models +from django.db.backends.base.introspection import BaseDatabaseIntrospection from django.db.migrations.exceptions import InvalidMigrationPlan from django.db.migrations.executor import MigrationExecutor from django.db.migrations.graph import MigrationGraph @@ -401,10 +402,12 @@ class ExecutorTests(MigrationTestBase): # 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" - ] + with connection.cursor() as cursor: + mock_existing_tables = [ + x + for x in connection.introspection.table_names(cursor) + if x != "auth_user" + ] migrations_apps = executor.loader.project_state( ("migrations", "0001_initial"), ).apps @@ -412,10 +415,14 @@ class ExecutorTests(MigrationTestBase): migrations_apps.get_model("migrations", "author") ) try: - migration = executor.loader.get_migration("auth", "0001_initial") + with mock.patch.object( + BaseDatabaseIntrospection, + "table_names", + return_value=mock_existing_tables, + ): + 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"] # Migrate back to clean up the database. executor.loader.build_graph() |
