type_ is not, i.e. there's no net change
in type. #62
+- [bug] Improved error message when specifiying
+ non-ordered revision identifiers to cover
+ the case when the "higher" rev is None,
+ improved message overall. #66
+
0.3.5
=====
- [bug] Fixed issue whereby reflected server defaults
"""Revert to a previous version."""
script = ScriptDirectory.from_config(config)
-
starting_rev = None
if ":" in revision:
if not sql:
def _iterate_revisions(self, upper, lower):
lower = self.get_revision(lower)
upper = self.get_revision(upper)
+ orig = lower.revision if lower else 'base', \
+ upper.revision if upper else 'base'
script = upper
while script != lower:
+ if script is None and lower is not None:
+ raise util.CommandError(
+ "Revision %s is not an ancestor of %s" % orig)
yield script
downrev = script.down_revision
script = self._revision_map[downrev]
- if script is None and lower is not None:
- raise util.CommandError(
- "Couldn't find revision %s" % downrev)
def _upgrade_revs(self, destination, current_rev):
revs = self.iterate_revisions(destination, current_rev)
assert_raises_message
from alembic import util
+env = None
+a, b, c, d, e = None, None, None, None, None
+cfg = None
def setup():
global env
r"Relative revision \+2 didn't produce 2 migrations",
env._downgrade_revs, "+2", b.revision
)
+
+def test_invalid_move_rev_to_none():
+ assert_raises_message(
+ util.CommandError,
+ "Revision %s is not an ancestor of base" % b.revision,
+ env._downgrade_revs, b.revision[0:3], None
+ )
+
+def test_invalid_move_higher_to_lower():
+ assert_raises_message(
+ util.CommandError,
+ "Revision %s is not an ancestor of %s" % (c.revision, b.revision),
+ env._downgrade_revs, c.revision[0:4], b.revision
+ )
+
from tests import clear_staging_env, staging_env, \
_no_sql_testing_config, sqlite_db, eq_, ne_, capture_context_buffer, \
- three_rev_fixture
+ three_rev_fixture, assert_raises_message
from alembic import command, util
+cfg = None
+a, b, c = None, None, None
+
def setup():
global cfg, env
env = staging_env()
assert "DROP STEP 2" in buf.getvalue()
assert "DROP STEP 1" not in buf.getvalue()
-
def test_stamp():
with capture_context_buffer() as buf:
command.stamp(cfg, "head", sql=True)