summaryrefslogtreecommitdiff
path: root/tests/test_revision.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2021-01-20 11:40:52 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2021-01-20 11:43:46 -0500
commit3c0dac89e65475e97107adbb5c975ab7855d08db (patch)
treedbf3cd70fc0e550b39d040744fbbae67f5740e8b /tests/test_revision.py
parente43d175233f206336c0637488e9ed231f421539a (diff)
downloadalembic-3c0dac89e65475e97107adbb5c975ab7855d08db.tar.gz
ensure downrev/dependencies in tuple form before using "in"
Fixed regression where new "loop detection" feature introduced in :ticket:`757` produced false positives for revision names that have overlapping substrings between revision number and down revision and/or dependency, if the downrev/dependency were not in sequence form. Fixes: #784 Change-Id: I9f31298c91ee2d3c1c63fd1f52bf8e0309b6ad88
Diffstat (limited to 'tests/test_revision.py')
-rw-r--r--tests/test_revision.py18
1 files changed, 17 insertions, 1 deletions
diff --git a/tests/test_revision.py b/tests/test_revision.py
index 767baa6..3a6e956 100644
--- a/tests/test_revision.py
+++ b/tests/test_revision.py
@@ -1288,7 +1288,7 @@ class InvalidRevisionMapTest(TestBase):
)
-class GraphWithLoopTest(InvalidRevisionMapTest):
+class GraphWithLoopTest(DownIterateTest, InvalidRevisionMapTest):
def test_revision_map_solitary_loop(self):
map_ = RevisionMap(
lambda: [
@@ -1297,6 +1297,22 @@ class GraphWithLoopTest(InvalidRevisionMapTest):
)
self._assert_raises_revision_map_loop(map_, "a")
+ def test_revision_map_no_loop_w_overlapping_substrings(self):
+ r1 = Revision("user_foo", None)
+ r2 = Revision("user", "user_foo")
+
+ self.map = RevisionMap(lambda: [r1, r2])
+
+ self._assert_iteration("heads", None, ["user", "user_foo"])
+
+ def test_revision_map_no_loop_w_overlapping_substrings_dependencies(self):
+ r1 = Revision("user_foo", None)
+ r2 = Revision("user", None, dependencies="user_foo")
+
+ self.map = RevisionMap(lambda: [r1, r2])
+
+ self._assert_iteration("heads", None, ["user", "user_foo"])
+
def test_revision_map_base_loop(self):
map_ = RevisionMap(
lambda: [