summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorHuu Nguyen <whoshuu@gmail.com>2014-06-19 16:50:01 -0700
committerTim Graham <timograham@gmail.com>2014-06-20 08:55:02 -0400
commitfbb684d95ed71487fe16135321d59ddb043ee903 (patch)
treec1facb6b51569a6a8bbe658fa01ed3c3ca3760b9 /tests
parent608aa8d101b03004ed2181fac82d8f3d28253bbd (diff)
Fixed #22862 -- Added --noinput option to makemigrations.
Thanks artortenburger for the report.
Diffstat (limited to 'tests')
-rw-r--r--tests/migrations/test_commands.py47
1 files changed, 32 insertions, 15 deletions
diff --git a/tests/migrations/test_commands.py b/tests/migrations/test_commands.py
index c223b5f489..6ba92f87dd 100644
--- a/tests/migrations/test_commands.py
+++ b/tests/migrations/test_commands.py
@@ -232,19 +232,6 @@ class MakeMigrationsTests(MigrationTestBase):
call_command("makemigrations")
@override_system_checks([])
- @override_settings(MIGRATION_MODULES={"migrations": "migrations.test_migrations_conflict"})
- def test_makemigrations_merge_basic(self):
- """
- Makes sure that makemigrations doesn't error if you ask for
- merge mode with a conflict present. Doesn't test writing of the merge
- file, as that requires temp directories.
- """
- try:
- call_command("makemigrations", merge=True, verbosity=0)
- except CommandError:
- self.fail("Makemigrations errored in merge mode with conflicts")
-
- @override_system_checks([])
@override_settings(MIGRATION_MODULES={"migrations": "migrations.test_migrations"})
def test_makemigrations_merge_no_conflict(self):
"""
@@ -386,13 +373,18 @@ class MakeMigrationsTests(MigrationTestBase):
@override_settings(MIGRATION_MODULES={"migrations": "migrations.test_migrations_conflict"})
def test_makemigrations_handle_merge(self):
"""
- Makes sure that makemigrations properly merges the conflicting migrations.
+ Makes sure that makemigrations properly merges the conflicting migrations with --noinput.
"""
stdout = six.StringIO()
- call_command("makemigrations", "migrations", merge=True, stdout=stdout)
+ call_command("makemigrations", "migrations", merge=True, interactive=False, stdout=stdout)
self.assertIn("Merging migrations", stdout.getvalue())
self.assertIn("Branch 0002_second", stdout.getvalue())
self.assertIn("Branch 0002_conflicting_second", stdout.getvalue())
+ merge_file = os.path.join(self.test_dir, 'test_migrations_conflict', '0003_merge.py')
+ self.assertTrue(os.path.exists(merge_file))
+ os.remove(merge_file)
+ self.assertFalse(os.path.exists(merge_file))
+ self.assertIn("Created new merge migration", stdout.getvalue())
@override_system_checks([])
@override_settings(MIGRATION_MODULES={"migrations": "migrations.test_migrations_no_default"})
@@ -469,3 +461,28 @@ class MakeMigrationsTests(MigrationTestBase):
self.assertTrue(os.path.isfile(os.path.join(self.test_dir,
"test_migrations_path_doesnt_exist", "foo", "bar",
"0001_initial.py")))
+
+ @override_system_checks([])
+ @override_settings(MIGRATION_MODULES={"migrations": "migrations.test_migrations_conflict"})
+ def test_makemigrations_interactive_by_default(self):
+ """
+ Makes sure that the user is prompted to merge by default if there are
+ conflicts and merge is True. Answer negative to differentiate it from
+ behavior when --noinput is specified.
+ """
+ # Monkeypatch interactive questioner to auto reject
+ old_input = questioner.input
+ questioner.input = lambda _: "N"
+ stdout = six.StringIO()
+ try:
+ call_command("makemigrations", "migrations", merge=True, stdout=stdout)
+ merge_file = os.path.join(self.test_dir, 'test_migrations_conflict', '0003_merge.py')
+ # This will fail if interactive is False by default
+ self.assertFalse(os.path.exists(merge_file))
+ except CommandError:
+ self.fail("Makemigrations failed while running interactive questioner")
+ finally:
+ questioner.input = old_input
+ if os.path.exists(merge_file):
+ os.remove(merge_file)
+ self.assertNotIn("Created new merge migration", stdout.getvalue())