From: Mike Bayer Date: Tue, 9 Jun 2015 15:40:34 +0000 (-0400) Subject: - The :meth:`.MigrationContext.stamp` method, added as part of the X-Git-Tag: rel_0_7_7~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=541cbd26b5b86ce445f2065b60d28fdcbbb299a9;p=thirdparty%2Fsqlalchemy%2Falembic.git - 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. fixes #300 --- diff --git a/alembic/migration.py b/alembic/migration.py index d94db2e2..9b460520 100644 --- a/alembic/migration.py +++ b/alembic/migration.py @@ -264,6 +264,8 @@ class MigrationContext(object): """ 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) diff --git a/docs/build/changelog.rst b/docs/build/changelog.rst index e11713a1..9c068254 100644 --- a/docs/build/changelog.rst +++ b/docs/build/changelog.rst @@ -6,6 +6,16 @@ Changelog .. 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 diff --git a/tests/test_version_table.py b/tests/test_version_table.py index 704bb317..92cb447c 100644 --- a/tests/test_version_table.py +++ b/tests/test_version_table.py @@ -1,5 +1,5 @@ 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 @@ -126,6 +126,23 @@ class TestMigrationContext(TestBase): '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