diff options
| author | django-bot <ops@djangoproject.com> | 2022-02-03 20:24:19 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-02-07 20:37:05 +0100 |
| commit | 9c19aff7c7561e3a82978a272ecdaad40dda5c00 (patch) | |
| tree | f0506b668a013d0063e5fba3dbf4863b466713ba /tests/migrations/test_graph.py | |
| parent | f68fa8b45dfac545cfc4111d4e52804c86db68d3 (diff) | |
Refs #33476 -- Reformatted code with Black.
Diffstat (limited to 'tests/migrations/test_graph.py')
| -rw-r--r-- | tests/migrations/test_graph.py | 151 |
1 files changed, 94 insertions, 57 deletions
diff --git a/tests/migrations/test_graph.py b/tests/migrations/test_graph.py index 10a5696f57..f62b44180a 100644 --- a/tests/migrations/test_graph.py +++ b/tests/migrations/test_graph.py @@ -1,6 +1,4 @@ -from django.db.migrations.exceptions import ( - CircularDependencyError, NodeNotFoundError, -) +from django.db.migrations.exceptions import CircularDependencyError, NodeNotFoundError from django.db.migrations.graph import DummyNode, MigrationGraph, Node from django.test import SimpleTestCase @@ -34,7 +32,7 @@ class GraphTests(SimpleTestCase): # Test root migration case self.assertEqual( graph.forwards_plan(("app_a", "0001")), - [('app_a', '0001')], + [("app_a", "0001")], ) # Test branch B only self.assertEqual( @@ -45,23 +43,27 @@ class GraphTests(SimpleTestCase): self.assertEqual( graph.forwards_plan(("app_a", "0004")), [ - ('app_b', '0001'), ('app_b', '0002'), ('app_a', '0001'), - ('app_a', '0002'), ('app_a', '0003'), ('app_a', '0004'), + ("app_b", "0001"), + ("app_b", "0002"), + ("app_a", "0001"), + ("app_a", "0002"), + ("app_a", "0003"), + ("app_a", "0004"), ], ) # Test reverse to b:0002 self.assertEqual( graph.backwards_plan(("app_b", "0002")), - [('app_a', '0004'), ('app_a', '0003'), ('app_b', '0002')], + [("app_a", "0004"), ("app_a", "0003"), ("app_b", "0002")], ) # Test roots and leaves self.assertEqual( graph.root_nodes(), - [('app_a', '0001'), ('app_b', '0001')], + [("app_a", "0001"), ("app_b", "0001")], ) self.assertEqual( graph.leaf_nodes(), - [('app_a', '0004'), ('app_b', '0002')], + [("app_a", "0004"), ("app_b", "0002")], ) def test_complex_graph(self): @@ -96,33 +98,48 @@ class GraphTests(SimpleTestCase): # Test branch C only self.assertEqual( graph.forwards_plan(("app_c", "0002")), - [('app_b', '0001'), ('app_c', '0001'), ('app_a', '0001'), ('app_a', '0002'), ('app_c', '0002')], + [ + ("app_b", "0001"), + ("app_c", "0001"), + ("app_a", "0001"), + ("app_a", "0002"), + ("app_c", "0002"), + ], ) # Test whole graph self.assertEqual( graph.forwards_plan(("app_a", "0004")), [ - ('app_b', '0001'), ('app_c', '0001'), ('app_a', '0001'), - ('app_a', '0002'), ('app_c', '0002'), ('app_b', '0002'), - ('app_a', '0003'), ('app_a', '0004'), + ("app_b", "0001"), + ("app_c", "0001"), + ("app_a", "0001"), + ("app_a", "0002"), + ("app_c", "0002"), + ("app_b", "0002"), + ("app_a", "0003"), + ("app_a", "0004"), ], ) # Test reverse to b:0001 self.assertEqual( graph.backwards_plan(("app_b", "0001")), [ - ('app_a', '0004'), ('app_c', '0002'), ('app_c', '0001'), - ('app_a', '0003'), ('app_b', '0002'), ('app_b', '0001'), + ("app_a", "0004"), + ("app_c", "0002"), + ("app_c", "0001"), + ("app_a", "0003"), + ("app_b", "0002"), + ("app_b", "0001"), ], ) # Test roots and leaves self.assertEqual( graph.root_nodes(), - [('app_a', '0001'), ('app_b', '0001'), ('app_c', '0001')], + [("app_a", "0001"), ("app_b", "0001"), ("app_c", "0001")], ) self.assertEqual( graph.leaf_nodes(), - [('app_a', '0004'), ('app_b', '0002'), ('app_c', '0002')], + [("app_a", "0004"), ("app_b", "0002"), ("app_c", "0002")], ) def test_circular_graph(self): @@ -147,12 +164,12 @@ class GraphTests(SimpleTestCase): def test_circular_graph_2(self): graph = MigrationGraph() - graph.add_node(('A', '0001'), None) - graph.add_node(('C', '0001'), None) - graph.add_node(('B', '0001'), None) - graph.add_dependency('A.0001', ('A', '0001'), ('B', '0001')) - graph.add_dependency('B.0001', ('B', '0001'), ('A', '0001')) - graph.add_dependency('C.0001', ('C', '0001'), ('B', '0001')) + graph.add_node(("A", "0001"), None) + graph.add_node(("C", "0001"), None) + graph.add_node(("B", "0001"), None) + graph.add_dependency("A.0001", ("A", "0001"), ("B", "0001")) + graph.add_dependency("B.0001", ("B", "0001"), ("A", "0001")) + graph.add_dependency("C.0001", ("C", "0001"), ("B", "0001")) with self.assertRaises(CircularDependencyError): graph.ensure_not_cyclic() @@ -184,20 +201,18 @@ class GraphTests(SimpleTestCase): n = 50 graph = MigrationGraph() for i in range(1, n + 1): - graph.add_node(('app_a', str(i)), None) - graph.add_node(('app_b', str(i)), None) - graph.add_node(('app_c', str(i)), None) + graph.add_node(("app_a", str(i)), None) + graph.add_node(("app_b", str(i)), None) + graph.add_node(("app_c", str(i)), None) for i in range(1, n): - graph.add_dependency(None, ('app_b', str(i)), ('app_a', str(i))) - graph.add_dependency(None, ('app_c', str(i)), ('app_a', str(i))) - graph.add_dependency(None, ('app_a', str(i + 1)), ('app_b', str(i))) - graph.add_dependency(None, ('app_a', str(i + 1)), ('app_c', str(i))) - plan = graph.forwards_plan(('app_a', str(n))) + graph.add_dependency(None, ("app_b", str(i)), ("app_a", str(i))) + graph.add_dependency(None, ("app_c", str(i)), ("app_a", str(i))) + graph.add_dependency(None, ("app_a", str(i + 1)), ("app_b", str(i))) + graph.add_dependency(None, ("app_a", str(i + 1)), ("app_c", str(i))) + plan = graph.forwards_plan(("app_a", str(n))) expected = [ - (app, str(i)) - for i in range(1, n) - for app in ['app_a', 'app_c', 'app_b'] - ] + [('app_a', str(n))] + (app, str(i)) for i in range(1, n) for app in ["app_a", "app_c", "app_b"] + ] + [("app_a", str(n))] self.assertEqual(plan, expected) def test_plan_invalid_node(self): @@ -243,7 +258,9 @@ class GraphTests(SimpleTestCase): def test_validate_consistency_missing_parent(self): graph = MigrationGraph() graph.add_node(("app_a", "0001"), None) - graph.add_dependency("app_a.0001", ("app_a", "0001"), ("app_b", "0002"), skip_validation=True) + graph.add_dependency( + "app_a.0001", ("app_a", "0001"), ("app_b", "0002"), skip_validation=True + ) msg = "Migration app_a.0001 dependencies reference nonexistent parent node ('app_b', '0002')" with self.assertRaisesMessage(NodeNotFoundError, msg): graph.validate_consistency() @@ -251,7 +268,9 @@ class GraphTests(SimpleTestCase): def test_validate_consistency_missing_child(self): graph = MigrationGraph() graph.add_node(("app_b", "0002"), None) - graph.add_dependency("app_b.0002", ("app_a", "0001"), ("app_b", "0002"), skip_validation=True) + graph.add_dependency( + "app_b.0002", ("app_a", "0001"), ("app_b", "0002"), skip_validation=True + ) msg = "Migration app_b.0002 dependencies reference nonexistent child node ('app_a', '0001')" with self.assertRaisesMessage(NodeNotFoundError, msg): graph.validate_consistency() @@ -260,7 +279,9 @@ class GraphTests(SimpleTestCase): graph = MigrationGraph() graph.add_node(("app_a", "0001"), None) graph.add_node(("app_b", "0002"), None) - graph.add_dependency("app_a.0001", ("app_a", "0001"), ("app_b", "0002"), skip_validation=True) + graph.add_dependency( + "app_a.0001", ("app_a", "0001"), ("app_b", "0002"), skip_validation=True + ) graph.validate_consistency() def test_validate_consistency_dummy(self): @@ -271,9 +292,7 @@ class GraphTests(SimpleTestCase): msg = "app_a.0001 (req'd by app_b.0002) is missing!" graph = MigrationGraph() graph.add_dummy_node( - key=("app_a", "0001"), - origin="app_b.0002", - error_message=msg + key=("app_a", "0001"), origin="app_b.0002", error_message=msg ) with self.assertRaisesMessage(NodeNotFoundError, msg): graph.validate_consistency() @@ -284,14 +303,24 @@ class GraphTests(SimpleTestCase): """ # Add some dummy nodes to be replaced. graph = MigrationGraph() - graph.add_dummy_node(key=("app_a", "0001"), origin="app_a.0002", error_message="BAD!") - graph.add_dummy_node(key=("app_a", "0002"), origin="app_b.0001", error_message="BAD!") - graph.add_dependency("app_a.0002", ("app_a", "0002"), ("app_a", "0001"), skip_validation=True) + graph.add_dummy_node( + key=("app_a", "0001"), origin="app_a.0002", error_message="BAD!" + ) + graph.add_dummy_node( + key=("app_a", "0002"), origin="app_b.0001", error_message="BAD!" + ) + graph.add_dependency( + "app_a.0002", ("app_a", "0002"), ("app_a", "0001"), skip_validation=True + ) # Add some normal parent and child nodes to test dependency remapping. graph.add_node(("app_c", "0001"), None) graph.add_node(("app_b", "0001"), None) - graph.add_dependency("app_a.0001", ("app_a", "0001"), ("app_c", "0001"), skip_validation=True) - graph.add_dependency("app_b.0001", ("app_b", "0001"), ("app_a", "0002"), skip_validation=True) + graph.add_dependency( + "app_a.0001", ("app_a", "0001"), ("app_c", "0001"), skip_validation=True + ) + graph.add_dependency( + "app_b.0001", ("app_b", "0001"), ("app_a", "0002"), skip_validation=True + ) # Try replacing before replacement node exists. msg = ( "Unable to find replacement node ('app_a', '0001_squashed_0002'). It was either" @@ -300,7 +329,7 @@ class GraphTests(SimpleTestCase): with self.assertRaisesMessage(NodeNotFoundError, msg): graph.remove_replaced_nodes( replacement=("app_a", "0001_squashed_0002"), - replaced=[("app_a", "0001"), ("app_a", "0002")] + replaced=[("app_a", "0001"), ("app_a", "0002")], ) graph.add_node(("app_a", "0001_squashed_0002"), None) # Ensure `validate_consistency()` still raises an error at this stage. @@ -309,7 +338,7 @@ class GraphTests(SimpleTestCase): # Remove the dummy nodes. graph.remove_replaced_nodes( replacement=("app_a", "0001_squashed_0002"), - replaced=[("app_a", "0001"), ("app_a", "0002")] + replaced=[("app_a", "0001"), ("app_a", "0002")], ) # Ensure graph is now consistent and dependencies have been remapped graph.validate_consistency() @@ -339,16 +368,18 @@ class GraphTests(SimpleTestCase): with self.assertRaisesMessage(NodeNotFoundError, msg): graph.remove_replacement_node( replacement=("app_a", "0001_squashed_0002"), - replaced=[("app_a", "0001"), ("app_a", "0002")] + replaced=[("app_a", "0001"), ("app_a", "0002")], ) graph.add_node(("app_a", "0001_squashed_0002"), None) # Add a child node to test dependency remapping. graph.add_node(("app_b", "0001"), None) - graph.add_dependency("app_b.0001", ("app_b", "0001"), ("app_a", "0001_squashed_0002")) + graph.add_dependency( + "app_b.0001", ("app_b", "0001"), ("app_a", "0001_squashed_0002") + ) # Remove the replacement node. graph.remove_replacement_node( replacement=("app_a", "0001_squashed_0002"), - replaced=[("app_a", "0001"), ("app_a", "0002")] + replaced=[("app_a", "0001"), ("app_a", "0002")], ) # Ensure graph is consistent and child dependency has been remapped graph.validate_consistency() @@ -380,10 +411,16 @@ class GraphTests(SimpleTestCase): graph.add_node(("app_b", "0002"), None) graph.add_node(("app_c", "0001_squashed_0002"), None) - graph.add_dependency("app_b.0001", ("app_b", "0001"), ("app_c", "0001_squashed_0002")) + graph.add_dependency( + "app_b.0001", ("app_b", "0001"), ("app_c", "0001_squashed_0002") + ) graph.add_dependency("app_b.0002", ("app_b", "0002"), ("app_a", "0001")) graph.add_dependency("app_b.0002", ("app_b", "0002"), ("app_b", "0001")) - graph.add_dependency("app_c.0001_squashed_0002", ("app_c", "0001_squashed_0002"), ("app_b", "0002")) + graph.add_dependency( + "app_c.0001_squashed_0002", + ("app_c", "0001_squashed_0002"), + ("app_b", "0002"), + ) with self.assertRaises(CircularDependencyError): graph.ensure_not_cyclic() @@ -407,13 +444,13 @@ class GraphTests(SimpleTestCase): class NodeTests(SimpleTestCase): def test_node_repr(self): - node = Node(('app_a', '0001')) + node = Node(("app_a", "0001")) self.assertEqual(repr(node), "<Node: ('app_a', '0001')>") def test_dummynode_repr(self): node = DummyNode( - key=('app_a', '0001'), - origin='app_a.0001', - error_message='x is missing', + key=("app_a", "0001"), + origin="app_a.0001", + error_message="x is missing", ) self.assertEqual(repr(node), "<DummyNode: ('app_a', '0001')>") |
