diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2021-01-20 11:40:52 -0500 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2021-01-20 11:43:46 -0500 |
commit | 3c0dac89e65475e97107adbb5c975ab7855d08db (patch) | |
tree | dbf3cd70fc0e550b39d040744fbbae67f5740e8b /tests/test_revision.py | |
parent | e43d175233f206336c0637488e9ed231f421539a (diff) | |
download | alembic-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.py | 18 |
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: [ |