summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMoayad Mardini <moayad.m@gmail.com>2014-05-22 12:42:46 +0300
committerTim Graham <timograham@gmail.com>2014-05-24 09:56:43 -0400
commita59870e21784166725f7cb3230becef50553ee3a (patch)
tree7eef1932c5bbe1997f43b74c32f8c88d52a91a00 /tests
parentbe733bf672eebb7d03061a293a2b0b03c727ab44 (diff)
[1.7.x] Fixed #22676 -- makemigrations --dry-run should not ask for defaults
Made the fix in InteractiveMigrationQuestioner class code, rather than MigrationAutodetector, because --dry-run shouldn't affect whether MigrationAutodetector will detect non-nullable fields, but the questioner should skip the question and returns a None for default (since that won't be used anyway) if --dry-run is used. Backport of ee14961a2a from master
Diffstat (limited to 'tests')
-rw-r--r--tests/migrations/test_commands.py20
-rw-r--r--tests/migrations/test_migrations_no_default/0001_initial.py23
-rw-r--r--tests/migrations/test_migrations_no_default/__init__.py0
3 files changed, 43 insertions, 0 deletions
diff --git a/tests/migrations/test_commands.py b/tests/migrations/test_commands.py
index 757d69995b..2f78ee27a4 100644
--- a/tests/migrations/test_commands.py
+++ b/tests/migrations/test_commands.py
@@ -6,6 +6,7 @@ import os
import shutil
from django.apps import apps
+from django.db import models
from django.core.management import call_command, CommandError
from django.db.migrations import questioner
from django.test import override_settings, override_system_checks
@@ -362,3 +363,22 @@ class MakeMigrationsTests(MigrationTestBase):
self.assertIn("Merging migrations", stdout.getvalue())
self.assertIn("Branch 0002_second", stdout.getvalue())
self.assertIn("Branch 0002_conflicting_second", stdout.getvalue())
+
+ @override_system_checks([])
+ @override_settings(MIGRATION_MODULES={"migrations": "migrations.test_migrations_no_default"})
+ def test_makemigrations_dry_run(self):
+ """
+ Ticket #22676 -- `makemigrations --dry-run` should not ask for defaults.
+ """
+
+ class SillyModel(models.Model):
+ silly_field = models.BooleanField(default=False)
+ silly_date = models.DateField() # Added field without a default
+
+ class Meta:
+ app_label = "migrations"
+
+ stdout = six.StringIO()
+ call_command("makemigrations", "migrations", dry_run=True, stdout=stdout)
+ # Output the expected changes directly, without asking for defaults
+ self.assertIn("Add field silly_date to sillymodel", stdout.getvalue())
diff --git a/tests/migrations/test_migrations_no_default/0001_initial.py b/tests/migrations/test_migrations_no_default/0001_initial.py
new file mode 100644
index 0000000000..c30910e056
--- /dev/null
+++ b/tests/migrations/test_migrations_no_default/0001_initial.py
@@ -0,0 +1,23 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='SillyModel',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('silly_field', models.BooleanField(default=False)),
+ ],
+ options={
+ },
+ bases=(models.Model,),
+ ),
+ ]
diff --git a/tests/migrations/test_migrations_no_default/__init__.py b/tests/migrations/test_migrations_no_default/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/migrations/test_migrations_no_default/__init__.py