summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2018-09-11 12:51:11 -0400
committerTim Graham <timograham@gmail.com>2018-09-11 12:51:24 -0400
commit5bbcf83fce5e5fb1d7369f2bfb81b7e06a4b1a85 (patch)
treecd845776c595b9ea40f6ad47b83c93d3c8e7df52
parent5cd053600e722467a4ddcd3cb7a75d21af4a9ad0 (diff)
[2.1.x] Fixed #29749 -- Made the migrations loader ignore files starting with a tilde or underscore.
Regression in 29150d5da880ac1db15e47052330790cf1b802d2. Backport of 32fbccab406b680bc0a0a8d39a9b95c3a08bbc5a from master
-rw-r--r--django/db/migrations/loader.py5
-rw-r--r--docs/releases/2.1.2.txt3
-rw-r--r--tests/migrations/test_loader.py8
-rw-r--r--tests/migrations/test_migrations_private/.util.py0
-rw-r--r--tests/migrations/test_migrations_private/0001_initial.py5
-rw-r--r--tests/migrations/test_migrations_private/__init__.py0
-rw-r--r--tests/migrations/test_migrations_private/_util.py0
-rw-r--r--tests/migrations/test_migrations_private/~util.py0
8 files changed, 20 insertions, 1 deletions
diff --git a/django/db/migrations/loader.py b/django/db/migrations/loader.py
index 4147cc3f09..518212b6d0 100644
--- a/django/db/migrations/loader.py
+++ b/django/db/migrations/loader.py
@@ -97,7 +97,10 @@ class MigrationLoader:
if was_loaded:
reload(module)
self.migrated_apps.add(app_config.label)
- migration_names = {name for _, name, is_pkg in pkgutil.iter_modules(module.__path__) if not is_pkg}
+ migration_names = {
+ name for _, name, is_pkg in pkgutil.iter_modules(module.__path__)
+ if not is_pkg and name[0] not in '_~'
+ }
# Load migrations
for migration_name in migration_names:
migration_path = '%s.%s' % (module_name, migration_name)
diff --git a/docs/releases/2.1.2.txt b/docs/releases/2.1.2.txt
index 17c50fffd7..753b87a7fb 100644
--- a/docs/releases/2.1.2.txt
+++ b/docs/releases/2.1.2.txt
@@ -11,3 +11,6 @@ Bugfixes
* Fixed a regression where nonexistent joins in ``F()`` no longer raised
``FieldError`` (:ticket:`29727`).
+
+* Fixed a regression where files starting with a tilde or underscore weren't
+ ignored by the migrations loader (:ticket:`29749`).
diff --git a/tests/migrations/test_loader.py b/tests/migrations/test_loader.py
index 71d3c9ca36..a7666c5c2d 100644
--- a/tests/migrations/test_loader.py
+++ b/tests/migrations/test_loader.py
@@ -500,6 +500,14 @@ class LoaderTests(TestCase):
}
self.assertEqual(plan, expected_plan)
+ @override_settings(MIGRATION_MODULES={'migrations': 'migrations.test_migrations_private'})
+ def test_ignore_files(self):
+ """Files prefixed with underscore, tilde, or dot aren't loaded."""
+ loader = MigrationLoader(connection)
+ loader.load_disk()
+ migrations = [name for app, name in loader.disk_migrations if app == 'migrations']
+ self.assertEqual(migrations, ['0001_initial'])
+
class PycLoaderTests(MigrationTestBase):
diff --git a/tests/migrations/test_migrations_private/.util.py b/tests/migrations/test_migrations_private/.util.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/migrations/test_migrations_private/.util.py
diff --git a/tests/migrations/test_migrations_private/0001_initial.py b/tests/migrations/test_migrations_private/0001_initial.py
new file mode 100644
index 0000000000..bd613aa95e
--- /dev/null
+++ b/tests/migrations/test_migrations_private/0001_initial.py
@@ -0,0 +1,5 @@
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+ pass
diff --git a/tests/migrations/test_migrations_private/__init__.py b/tests/migrations/test_migrations_private/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/migrations/test_migrations_private/__init__.py
diff --git a/tests/migrations/test_migrations_private/_util.py b/tests/migrations/test_migrations_private/_util.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/migrations/test_migrations_private/_util.py
diff --git a/tests/migrations/test_migrations_private/~util.py b/tests/migrations/test_migrations_private/~util.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/migrations/test_migrations_private/~util.py