summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2014-11-18 16:41:05 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2014-11-18 16:41:05 -0500
commit6bbbde58f78e3960f5f908193b51ac87f64d1684 (patch)
tree635ae140029781731a7389ad1ccc6912676a5151
parente5997092284f8931b7e1f7102213f0fc86dc5a28 (diff)
downloadalembic-6bbbde58f78e3960f5f908193b51ac87f64d1684.tar.gz
- start testing better
-rw-r--r--tests/test_version_traversal.py105
1 files changed, 72 insertions, 33 deletions
diff --git a/tests/test_version_traversal.py b/tests/test_version_traversal.py
index 83abada..43fca12 100644
--- a/tests/test_version_traversal.py
+++ b/tests/test_version_traversal.py
@@ -2,8 +2,8 @@ from alembic.testing.env import clear_staging_env, staging_env
from alembic.testing import assert_raises_message, eq_
from alembic import util
from alembic.testing.fixtures import TestBase
-
-from alembic.migration import MigrationStep
+from alembic.testing import mock
+from alembic.migration import MigrationStep, HeadMaintainer
class MigrationTest(TestBase):
@@ -15,6 +15,28 @@ class MigrationTest(TestBase):
return MigrationStep.downgrade_from_script(
self.env.revision_map, rev)
+ def _assert_downgrade(self, destination, source, expected, expected_heads):
+ revs = self.env._downgrade_revs(destination, source)
+ eq_(
+ revs, expected
+ )
+ heads = set(util.to_tuple(source, default=()))
+ head = HeadMaintainer(mock.Mock(), heads)
+ for rev in revs:
+ head.update_to_step(rev)
+ eq_(head.heads, expected_heads)
+
+ def _assert_upgrade(self, destination, source, expected, expected_heads):
+ revs = self.env._upgrade_revs(destination, source)
+ eq_(
+ revs, expected
+ )
+ heads = set(util.to_tuple(source, default=()))
+ head = HeadMaintainer(mock.Mock(), heads)
+ for rev in revs:
+ head.update_to_step(rev)
+ eq_(head.heads, expected_heads)
+
class RevisionPathTest(MigrationTest):
@@ -33,43 +55,48 @@ class RevisionPathTest(MigrationTest):
def test_upgrade_path(self):
a, b, c, d, e = self.a, self.b, self.c, self.d, self.e
- eq_(
- self.env._upgrade_revs(e.revision, c.revision),
+ self._assert_upgrade(
+ e.revision, c.revision,
[
self.up_(d),
self.up_(e)
- ]
+ ],
+ set([e.revision])
)
- eq_(
- self.env._upgrade_revs(c.revision, None),
+ self._assert_upgrade(
+ c.revision, None,
[
self.up_(a),
self.up_(b),
self.up_(c),
- ]
+ ],
+ set([c.revision])
)
def test_relative_upgrade_path(self):
a, b, c, d, e = self.a, self.b, self.c, self.d, self.e
- eq_(
- self.env._upgrade_revs("+2", a.revision),
+ self._assert_upgrade(
+ "+2", a.revision,
[
self.up_(b),
self.up_(c),
- ]
+ ],
+ set([c.revision])
)
- eq_(
- self.env._upgrade_revs("+1", a.revision),
+ self._assert_upgrade(
+ "+1", a.revision,
[
self.up_(b)
- ]
+ ],
+ set([b.revision])
)
- eq_(
- self.env._upgrade_revs("+3", b.revision),
- [self.up_(c), self.up_(d), self.up_(e)]
+ self._assert_upgrade(
+ "+3", b.revision,
+ [self.up_(c), self.up_(d), self.up_(e)],
+ set([e.revision])
)
def test_invalid_relative_upgrade_path(self):
@@ -89,26 +116,30 @@ class RevisionPathTest(MigrationTest):
def test_downgrade_path(self):
a, b, c, d, e = self.a, self.b, self.c, self.d, self.e
- eq_(
- self.env._downgrade_revs(c.revision, e.revision),
- [self.down_(e), self.down_(d)]
+ self._assert_downgrade(
+ c.revision, e.revision,
+ [self.down_(e), self.down_(d)],
+ set([c.revision])
)
- eq_(
- self.env._downgrade_revs(None, c.revision),
- [self.down_(c), self.down_(b), self.down_(a)]
+ self._assert_downgrade(
+ None, c.revision,
+ [self.down_(c), self.down_(b), self.down_(a)],
+ set()
)
def test_relative_downgrade_path(self):
a, b, c, d, e = self.a, self.b, self.c, self.d, self.e
- eq_(
- self.env._downgrade_revs("-1", c.revision),
- [self.down_(c)]
+ self._assert_downgrade(
+ "-1", c.revision,
+ [self.down_(c)],
+ set([b.revision])
)
- eq_(
- self.env._downgrade_revs("-3", e.revision),
- [self.down_(e), self.down_(d), self.down_(c)]
+ self._assert_downgrade(
+ "-3", e.revision,
+ [self.down_(e), self.down_(d), self.down_(c)],
+ set([b.revision])
)
def test_invalid_relative_downgrade_path(self):
@@ -225,19 +256,27 @@ class BranchedPathTest(MigrationTest):
eq_(
self.env._upgrade_revs((d1.revision, d2.revision), a.revision),
- [self.up_(b), self.up_(c2), self.up_(d2), self.up_(c1), self.up_(d1)]
+ [self.up_(b), self.up_(c2), self.up_(d2),
+ self.up_(c1), self.up_(d1)]
)
def test_downgrade_multiple_branch(self):
a, b, c1, d1, c2, d2 = (
self.a, self.b, self.c1, self.d1, self.c2, self.d2
)
+ self._assert_downgrade(
+ a.revision, (d1.revision, d2.revision),
+ [self.down_(d1), self.down_(c1), self.down_(d2),
+ self.down_(c2), self.down_(b)]
+ )
eq_(
self.env._downgrade_revs(a.revision, (d1.revision, d2.revision)),
- [self.down_(d1), self.down_(c1), self.down_(d2), self.down_(c2), self.down_(b)]
+ [self.down_(d1), self.down_(c1), self.down_(d2),
+ self.down_(c2), self.down_(b)]
)
+
class ForestTest(MigrationTest):
@classmethod
def setup_class(cls):
@@ -390,7 +429,7 @@ class MergedPathTest(MigrationTest):
self.up_(c1), # b->c1, create new branch
self.up_(d1),
self.up_(e), # d1/d2 -> e, merge branches
- # (DELETE d2, UPDATE d1->e)
+ # (DELETE d2, UPDATE d1->e)
self.up_(f)
]
)
@@ -406,7 +445,7 @@ class MergedPathTest(MigrationTest):
[
self.down_(f),
self.down_(e), # e -> d1 and d2, unmerge branches
- # (UPDATE e->d1, INSERT d2)
+ # (UPDATE e->d1, INSERT d2)
self.down_(d1),
self.down_(c1),
self.down_(d2),