Refs #22983 -- Added tests for squashing migrations with functions from migration files.

Follow up to ebb13bbd88.
This commit is contained in:
Mariusz Felisiak 2021-12-27 18:49:19 +01:00 committed by GitHub
parent 59a66f0512
commit 2d07e1aaeb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 66 additions and 0 deletions

View File

@ -2131,6 +2131,42 @@ class SquashMigrationsTests(MigrationTestBase):
squashed_name='initial', interactive=False, verbosity=0, squashed_name='initial', interactive=False, verbosity=0,
) )
def test_squashmigrations_manual_porting(self):
out = io.StringIO()
with self.temporary_migration_module(
module='migrations.test_migrations_manual_porting',
) as migration_dir:
call_command(
'squashmigrations',
'migrations',
'0002',
interactive=False,
stdout=out,
no_color=True,
)
squashed_migration_file = os.path.join(
migration_dir,
'0001_squashed_0002_second.py',
)
self.assertTrue(os.path.exists(squashed_migration_file))
self.assertEqual(
out.getvalue(),
f'Will squash the following migrations:\n'
f' - 0001_initial\n'
f' - 0002_second\n'
f'Optimizing...\n'
f' No optimizations possible.\n'
f'Created new squashed migration {squashed_migration_file}\n'
f' You should commit this migration but leave the old ones in place;\n'
f' the new migration will be used for new installs. Once you are sure\n'
f' all instances of the codebase have applied the migrations you squashed,\n'
f' you can delete them.\n'
f'Manual porting required\n'
f' Your migrations contained functions that must be manually copied over,\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'
)
class AppLabelErrorTests(TestCase): class AppLabelErrorTests(TestCase):
""" """

View File

@ -0,0 +1,15 @@
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
operations = [
migrations.CreateModel(
'SomeModel',
[
('id', models.AutoField(primary_key=True)),
('name', models.CharField(max_length=255)),
],
),
]

View File

@ -0,0 +1,15 @@
from django.db import migrations
def forwards(apps, schema_editor):
pass
class Migration(migrations.Migration):
dependencies = [
('migrations', '0001_initial'),
]
operations = [
migrations.RunPython(forwards, migrations.RunPython.noop),
]