summaryrefslogtreecommitdiff
path: root/tests/test_revision.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2021-05-20 14:17:53 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2021-05-20 14:17:53 -0400
commit8d5a9a1b0d32fff5726010afffa48cc0fb738238 (patch)
treed317665f5531aad7fb507e45273eed68da62ba28 /tests/test_revision.py
parent361076e847c7c60dd00438f1a612aba799e90b1d (diff)
downloadalembic-8d5a9a1b0d32fff5726010afffa48cc0fb738238.tar.gz
ensure heads remain unique in topological
Fixed regression where a revision file that contained its own down revision as a dependency would cause an endless loop in the traversal logic. Change-Id: Ie8bd3b4d9f81e4bda131ffdbabe7a90c4a715054 Fixes: #843
Diffstat (limited to 'tests/test_revision.py')
-rw-r--r--tests/test_revision.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/tests/test_revision.py b/tests/test_revision.py
index 31590e3..ef1202a 100644
--- a/tests/test_revision.py
+++ b/tests/test_revision.py
@@ -1347,6 +1347,16 @@ class GraphWithLoopTest(DownIterateTest, InvalidRevisionMapTest):
)
self._assert_raises_revision_map_loop(map_, "a")
+ def test_revision_dupe_head(self):
+ r1 = Revision("user_foo", None)
+ r2 = Revision("user", "user_foo", dependencies="user_foo")
+
+ self.map = RevisionMap(lambda: [r1, r2])
+
+ self._assert_iteration("heads", None, ["user", "user_foo"])
+
+ eq_(self.map._topological_sort([r1, r2], [r2]), ["user", "user_foo"])
+
def test_revision_map_no_loop_w_overlapping_substrings(self):
r1 = Revision("user_foo", None)
r2 = Revision("user", "user_foo")