From 9f1c4e4d3f997dea150d19ca43d2471d66def120 Mon Sep 17 00:00:00 2001 From: Chris Beaven Date: Thu, 29 May 2014 22:30:47 +1200 Subject: [1.7.x] Implement Migration.run_before This attribute (used for reverse dependencies) was previously declared and mentioned in the code, but never actually used. --- tests/migrations/test_loader.py | 16 +++++++++++ .../test_migrations_run_before/0001_initial.py | 20 ++++++++++++++ .../test_migrations_run_before/0002_second.py | 23 ++++++++++++++++ .../test_migrations_run_before/0003_third.py | 32 ++++++++++++++++++++++ .../test_migrations_run_before/__init__.py | 0 5 files changed, 91 insertions(+) create mode 100644 tests/migrations/test_migrations_run_before/0001_initial.py create mode 100644 tests/migrations/test_migrations_run_before/0002_second.py create mode 100644 tests/migrations/test_migrations_run_before/0003_third.py create mode 100644 tests/migrations/test_migrations_run_before/__init__.py (limited to 'tests') diff --git a/tests/migrations/test_loader.py b/tests/migrations/test_loader.py index 01ead5e8ea..4c1e2d239c 100644 --- a/tests/migrations/test_loader.py +++ b/tests/migrations/test_loader.py @@ -102,6 +102,22 @@ class LoaderTests(TestCase): ["id", "user"] ) + @override_settings(MIGRATION_MODULES={"migrations": "migrations.test_migrations_run_before"}) + def test_run_before(self): + """ + Makes sure the loader uses Migration.run_before. + """ + # Load and test the plan + migration_loader = MigrationLoader(connection) + self.assertEqual( + migration_loader.graph.forwards_plan(("migrations", "0002_second")), + [ + ("migrations", "0001_initial"), + ("migrations", "0003_third"), + ("migrations", "0002_second"), + ], + ) + @override_settings(MIGRATION_MODULES={"migrations": "migrations.test_migrations"}) def test_name_match(self): "Tests prefix name matching" diff --git a/tests/migrations/test_migrations_run_before/0001_initial.py b/tests/migrations/test_migrations_run_before/0001_initial.py new file mode 100644 index 0000000000..7d44a8d789 --- /dev/null +++ b/tests/migrations/test_migrations_run_before/0001_initial.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + operations = [ + + migrations.CreateModel( + "Salamander", + [ + ("id", models.AutoField(primary_key=True)), + ("size", models.IntegerField(default=0)), + ("silly_field", models.BooleanField(default=False)), + ], + ), + + ] diff --git a/tests/migrations/test_migrations_run_before/0002_second.py b/tests/migrations/test_migrations_run_before/0002_second.py new file mode 100644 index 0000000000..c0e03b4620 --- /dev/null +++ b/tests/migrations/test_migrations_run_before/0002_second.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("migrations", "0001_initial"), + ] + + operations = [ + + migrations.CreateModel( + "Book", + [ + ("id", models.AutoField(primary_key=True)), + ("author", models.ForeignKey("migrations.Author", null=True)), + ], + ) + + ] diff --git a/tests/migrations/test_migrations_run_before/0003_third.py b/tests/migrations/test_migrations_run_before/0003_third.py new file mode 100644 index 0000000000..d5c098c730 --- /dev/null +++ b/tests/migrations/test_migrations_run_before/0003_third.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + """ + This is a wee bit crazy, but it's just to show that run_before works. + """ + + dependencies = [ + ("migrations", "0001_initial"), + ] + + run_before = [ + ("migrations", "0002_second"), + ] + + operations = [ + + migrations.CreateModel( + "Author", + [ + ("id", models.AutoField(primary_key=True)), + ("name", models.CharField(max_length=255)), + ("slug", models.SlugField(null=True)), + ("age", models.IntegerField(default=0)), + ], + ) + + ] diff --git a/tests/migrations/test_migrations_run_before/__init__.py b/tests/migrations/test_migrations_run_before/__init__.py new file mode 100644 index 0000000000..e69de29bb2 -- cgit v1.3