mirror of
https://github.com/django/django.git
synced 2025-10-24 22:26:08 +00:00
Refs #33476 -- Reformatted code with Black.
This commit is contained in:
committed by
Mariusz Felisiak
parent
f68fa8b45d
commit
9c19aff7c7
@@ -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')>")
|
||||
|
||||
Reference in New Issue
Block a user