diff options
| author | Moayad Mardini <moayad.m@gmail.com> | 2014-05-22 12:42:46 +0300 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2014-05-24 09:56:43 -0400 |
| commit | a59870e21784166725f7cb3230becef50553ee3a (patch) | |
| tree | 7eef1932c5bbe1997f43b74c32f8c88d52a91a00 /tests | |
| parent | be733bf672eebb7d03061a293a2b0b03c727ab44 (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.py | 20 | ||||
| -rw-r--r-- | tests/migrations/test_migrations_no_default/0001_initial.py | 23 | ||||
| -rw-r--r-- | tests/migrations/test_migrations_no_default/__init__.py | 0 |
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 |
