Loading django/db/migrations/graph.py +3 −2 Original line number Diff line number Diff line Loading @@ -3,8 +3,10 @@ from collections import deque from django.db.migrations.state import ProjectState from django.utils.datastructures import OrderedSet from django.utils.encoding import python_2_unicode_compatible @python_2_unicode_compatible class MigrationGraph(object): """ Represents the digraph of all migrations in a project. Loading Loading @@ -178,6 +180,7 @@ class CircularDependencyError(Exception): pass @python_2_unicode_compatible class NodeNotFoundError(LookupError): """ Raised when an attempt on a node is made that is not available in the graph. Loading @@ -190,7 +193,5 @@ class NodeNotFoundError(LookupError): def __str__(self): return self.message __unicode__ = __str__ def __repr__(self): return "NodeNotFoundError(%r)" % self.node django/db/migrations/migration.py +2 −0 Original line number Diff line number Diff line from __future__ import unicode_literals from django.db.transaction import atomic from django.utils.encoding import python_2_unicode_compatible @python_2_unicode_compatible class Migration(object): """ The base class for all migrations. Loading tests/migrations/test_graph.py +17 −1 Original line number Diff line number Diff line from django.test import TestCase from django.db.migrations.graph import CircularDependencyError, MigrationGraph, NodeNotFoundError from django.utils.encoding import force_text class GraphTests(TestCase): Loading Loading @@ -213,7 +214,7 @@ class GraphTests(TestCase): / \ app_c: 0001<- <------------- x 0002 And apply sqashing on app_c. And apply squashing on app_c. """ graph = MigrationGraph() Loading @@ -229,3 +230,18 @@ class GraphTests(TestCase): with self.assertRaises(CircularDependencyError): graph.forwards_plan(("app_c", "0001_squashed_0002")) def test_stringify(self): graph = MigrationGraph() self.assertEqual(force_text(graph), "Graph: 0 nodes, 0 edges") graph.add_node(("app_a", "0001"), None) graph.add_node(("app_a", "0002"), None) graph.add_node(("app_a", "0003"), None) graph.add_node(("app_b", "0001"), None) graph.add_node(("app_b", "0002"), None) graph.add_dependency("app_a.0002", ("app_a", "0002"), ("app_a", "0001")) graph.add_dependency("app_a.0003", ("app_a", "0003"), ("app_a", "0002")) graph.add_dependency("app_a.0003", ("app_a", "0003"), ("app_b", "0002")) self.assertEqual(force_text(graph), "Graph: 5 nodes, 3 edges") Loading
django/db/migrations/graph.py +3 −2 Original line number Diff line number Diff line Loading @@ -3,8 +3,10 @@ from collections import deque from django.db.migrations.state import ProjectState from django.utils.datastructures import OrderedSet from django.utils.encoding import python_2_unicode_compatible @python_2_unicode_compatible class MigrationGraph(object): """ Represents the digraph of all migrations in a project. Loading Loading @@ -178,6 +180,7 @@ class CircularDependencyError(Exception): pass @python_2_unicode_compatible class NodeNotFoundError(LookupError): """ Raised when an attempt on a node is made that is not available in the graph. Loading @@ -190,7 +193,5 @@ class NodeNotFoundError(LookupError): def __str__(self): return self.message __unicode__ = __str__ def __repr__(self): return "NodeNotFoundError(%r)" % self.node
django/db/migrations/migration.py +2 −0 Original line number Diff line number Diff line from __future__ import unicode_literals from django.db.transaction import atomic from django.utils.encoding import python_2_unicode_compatible @python_2_unicode_compatible class Migration(object): """ The base class for all migrations. Loading
tests/migrations/test_graph.py +17 −1 Original line number Diff line number Diff line from django.test import TestCase from django.db.migrations.graph import CircularDependencyError, MigrationGraph, NodeNotFoundError from django.utils.encoding import force_text class GraphTests(TestCase): Loading Loading @@ -213,7 +214,7 @@ class GraphTests(TestCase): / \ app_c: 0001<- <------------- x 0002 And apply sqashing on app_c. And apply squashing on app_c. """ graph = MigrationGraph() Loading @@ -229,3 +230,18 @@ class GraphTests(TestCase): with self.assertRaises(CircularDependencyError): graph.forwards_plan(("app_c", "0001_squashed_0002")) def test_stringify(self): graph = MigrationGraph() self.assertEqual(force_text(graph), "Graph: 0 nodes, 0 edges") graph.add_node(("app_a", "0001"), None) graph.add_node(("app_a", "0002"), None) graph.add_node(("app_a", "0003"), None) graph.add_node(("app_b", "0001"), None) graph.add_node(("app_b", "0002"), None) graph.add_dependency("app_a.0002", ("app_a", "0002"), ("app_a", "0001")) graph.add_dependency("app_a.0003", ("app_a", "0003"), ("app_a", "0002")) graph.add_dependency("app_a.0003", ("app_a", "0003"), ("app_b", "0002")) self.assertEqual(force_text(graph), "Graph: 5 nodes, 3 edges")