"""
heads = self.get_current_heads()
+ if not self.as_sql and not heads:
+ self._ensure_version_table()
head_maintainer = HeadMaintainer(self, heads)
for step in script_directory._stamp_revs(revision, heads):
head_maintainer.update_to_step(step)
.. changelog::
:version: 0.7.7
+ .. change::
+ :tags: bug, environment
+ :tickets: 300
+
+ The :meth:`.MigrationContext.stamp` method, added as part of the
+ versioning refactor in 0.7 as a more granular version of
+ :func:`.command.stamp`, now includes the "create the alembic_version
+ table if not present" step in the same way as the command version,
+ which was previously omitted.
+
.. change::
:tags: bug, autogenerate
:tickets: 298
from alembic.testing.fixtures import TestBase
-
+from alembic.testing import mock
from alembic.testing import config, eq_, assert_raises, assert_raises_message
from sqlalchemy import Table, MetaData, Column, String
'as_sql': True})
eq_(context.get_current_heads(), ('q', ))
+ def test_stamp_api_creates_table(self):
+ context = self.make_one(connection=self.connection)
+ assert (
+ 'alembic_version'
+ not in Inspector(self.connection).get_table_names())
+
+ script = mock.Mock(_stamp_revs=lambda revision, heads: [
+ _up(None, 'a', True),
+ _up(None, 'b', True)
+ ])
+
+ context.stamp(script, 'b')
+ eq_(context.get_current_heads(), ('a', 'b'))
+ assert (
+ 'alembic_version'
+ in Inspector(self.connection).get_table_names())
+
class UpdateRevTest(TestBase):
__backend__ = True