mirror of https://github.com/django/django.git
Refs #33476 -- Added warning to optimizemigration/squashmigrations commands when black cannot be applied.
This commit is contained in:
parent
7fd2deb3e8
commit
d11944be34
|
@ -1,3 +1,4 @@
|
||||||
|
import shutil
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from django.apps import apps
|
from django.apps import apps
|
||||||
|
@ -111,6 +112,13 @@ class Command(BaseCommand):
|
||||||
" See the comment at the top of the optimized migration for "
|
" See the comment at the top of the optimized migration for "
|
||||||
"details."
|
"details."
|
||||||
)
|
)
|
||||||
|
if shutil.which("black"):
|
||||||
|
self.stdout.write(
|
||||||
|
self.style.WARNING(
|
||||||
|
"Optimized migration couldn't be formatted using the "
|
||||||
|
'"black" command. You can call it manually.'
|
||||||
|
)
|
||||||
|
)
|
||||||
with open(writer.path, "w", encoding="utf-8") as fh:
|
with open(writer.path, "w", encoding="utf-8") as fh:
|
||||||
fh.write(migration_file_string)
|
fh.write(migration_file_string)
|
||||||
run_formatters([writer.path])
|
run_formatters([writer.path])
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import os
|
import os
|
||||||
|
import shutil
|
||||||
|
|
||||||
from django.apps import apps
|
from django.apps import apps
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
@ -244,6 +245,13 @@ class Command(BaseCommand):
|
||||||
" See the comment at the top of the squashed migration for "
|
" See the comment at the top of the squashed migration for "
|
||||||
"details."
|
"details."
|
||||||
)
|
)
|
||||||
|
if shutil.which("black"):
|
||||||
|
self.stdout.write(
|
||||||
|
self.style.WARNING(
|
||||||
|
"Squashed migration couldn't be formatted using the "
|
||||||
|
'"black" command. You can call it manually.'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
def find_migration(self, loader, app_label, name):
|
def find_migration(self, loader, app_label, name):
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -2729,6 +2729,12 @@ class SquashMigrationsTests(MigrationTestBase):
|
||||||
"0001_squashed_0002_second.py",
|
"0001_squashed_0002_second.py",
|
||||||
)
|
)
|
||||||
self.assertTrue(os.path.exists(squashed_migration_file))
|
self.assertTrue(os.path.exists(squashed_migration_file))
|
||||||
|
black_warning = ""
|
||||||
|
if HAS_BLACK:
|
||||||
|
black_warning = (
|
||||||
|
"Squashed migration couldn't be formatted using the "
|
||||||
|
'"black" command. You can call it manually.\n'
|
||||||
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
out.getvalue(),
|
out.getvalue(),
|
||||||
f"Will squash the following migrations:\n"
|
f"Will squash the following migrations:\n"
|
||||||
|
@ -2746,7 +2752,8 @@ class SquashMigrationsTests(MigrationTestBase):
|
||||||
f" Your migrations contained functions that must be manually copied "
|
f" Your migrations contained functions that must be manually copied "
|
||||||
f"over,\n"
|
f"over,\n"
|
||||||
f" as we could not safely copy their implementation.\n"
|
f" as we could not safely copy their implementation.\n"
|
||||||
f" See the comment at the top of the squashed migration for details.\n",
|
f" See the comment at the top of the squashed migration for details.\n"
|
||||||
|
+ black_warning,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -2905,15 +2912,21 @@ class OptimizeMigrationTests(MigrationTestBase):
|
||||||
with open(optimized_migration_file) as fp:
|
with open(optimized_migration_file) as fp:
|
||||||
content = fp.read()
|
content = fp.read()
|
||||||
self.assertIn("replaces = [", content)
|
self.assertIn("replaces = [", content)
|
||||||
|
black_warning = ""
|
||||||
|
if HAS_BLACK:
|
||||||
|
black_warning = (
|
||||||
|
"Optimized migration couldn't be formatted using the "
|
||||||
|
'"black" command. You can call it manually.\n'
|
||||||
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
out.getvalue(),
|
out.getvalue(),
|
||||||
f"Optimizing from 3 operations to 2 operations.\n"
|
"Optimizing from 3 operations to 2 operations.\n"
|
||||||
f"Manual porting required\n"
|
"Manual porting required\n"
|
||||||
f" Your migrations contained functions that must be manually copied over,"
|
" Your migrations contained functions that must be manually copied over,\n"
|
||||||
f"\n"
|
" as we could not safely copy their implementation.\n"
|
||||||
f" as we could not safely copy their implementation.\n"
|
" See the comment at the top of the optimized migration for details.\n"
|
||||||
f" See the comment at the top of the optimized migration for details.\n"
|
+ black_warning
|
||||||
f"Optimized migration {optimized_migration_file}\n",
|
+ f"Optimized migration {optimized_migration_file}\n",
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_fails_squash_migration_manual_porting(self):
|
def test_fails_squash_migration_manual_porting(self):
|
||||||
|
|
Loading…
Reference in New Issue