summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2018-01-30 18:28:04 -0500
committerTim Graham <timograham@gmail.com>2018-01-31 09:36:36 -0500
commit0a37ea56d05208e31ed2f29fdffca65b6d92fa2e (patch)
tree1a7e5de3d17c1ad33db179284991a4a403689549
parentde59132afcd979a28a9db269b550d4b8356ef325 (diff)
Fixed #29091 -- Fixed makemigrations crash if migrations directory doesn't have __init__.py.
Regression in aadd3aeb2ba3153e35bd805c80c901f289a6f333.
-rw-r--r--django/db/migrations/questioner.py2
-rw-r--r--docs/releases/2.0.2.txt3
-rw-r--r--tests/migrations/test_commands.py7
-rw-r--r--tests/migrations/test_migrations_no_init/.gitkeep0
4 files changed, 11 insertions, 1 deletions
diff --git a/django/db/migrations/questioner.py b/django/db/migrations/questioner.py
index 337d50844d..2c34a8fd89 100644
--- a/django/db/migrations/questioner.py
+++ b/django/db/migrations/questioner.py
@@ -48,7 +48,7 @@ class MigrationQuestioner:
elif hasattr(migrations_module, "__path__"):
if len(migrations_module.__path__) > 1:
return False
- filenames = os.listdir(migrations_module.__path__[0])
+ filenames = os.listdir(list(migrations_module.__path__)[0])
return not any(x.endswith(".py") for x in filenames if x != "__init__.py")
def ask_not_null_addition(self, field_name, model_name):
diff --git a/docs/releases/2.0.2.txt b/docs/releases/2.0.2.txt
index 000236af2c..c6633491d2 100644
--- a/docs/releases/2.0.2.txt
+++ b/docs/releases/2.0.2.txt
@@ -24,3 +24,6 @@ Bugfixes
* Fixed a regression where ``contrib.auth.authenticate()`` crashes if an
authentication backend doesn't accept ``request`` and a later one does
(:ticket:`29071`).
+
+* Fixed a regression where ``makemigrations`` crashes if a migrations directory
+ doesn't have an ``__init__.py`` file (:ticket:`29091`).
diff --git a/tests/migrations/test_commands.py b/tests/migrations/test_commands.py
index 8caa0b5deb..8a77624e34 100644
--- a/tests/migrations/test_commands.py
+++ b/tests/migrations/test_commands.py
@@ -853,6 +853,13 @@ class MakeMigrationsTests(MigrationTestBase):
call_command("makemigrations", stdout=out)
self.assertIn("0001_initial.py", out.getvalue())
+ def test_makemigrations_no_init(self):
+ """Migration directories without an __init__.py file are allowed."""
+ out = io.StringIO()
+ with self.temporary_migration_module(module='migrations.test_migrations_no_init'):
+ call_command('makemigrations', stdout=out)
+ self.assertIn('0001_initial.py', out.getvalue())
+
def test_makemigrations_migrations_announce(self):
"""
makemigrations announces the migration at the default verbosity level.
diff --git a/tests/migrations/test_migrations_no_init/.gitkeep b/tests/migrations/test_migrations_no_init/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/migrations/test_migrations_no_init/.gitkeep