From: Mike Bayer Date: Tue, 15 Dec 2015 22:03:44 +0000 (-0500) Subject: - tests and changelog for pullreq github:20 X-Git-Tag: rel_0_8_4~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bbe1a549623f4375593585b6382507455438bc13;p=thirdparty%2Fsqlalchemy%2Falembic.git - tests and changelog for pullreq github:20 --- diff --git a/docs/build/changelog.rst b/docs/build/changelog.rst index 17be0280..75bdb2bb 100644 --- a/docs/build/changelog.rst +++ b/docs/build/changelog.rst @@ -6,6 +6,16 @@ Changelog .. changelog:: :version: 0.8.4 + .. change:: + :tags: feature, autogenerate + :pullreq: github:20 + + Added an autogenerate renderer for the :class:`.ExecuteSQLOp` operation + object; only renders if given a plain SQL string, otherwise raises + NotImplementedError. Can be of help with custom autogenerate + sequences that includes straight SQL execution. Pull request courtesy + Jacob Magnusson. + .. change:: :tags: bug, batch :tickets: 345 diff --git a/tests/test_autogen_render.py b/tests/test_autogen_render.py index cd4b1eb4..e069d083 100644 --- a/tests/test_autogen_render.py +++ b/tests/test_autogen_render.py @@ -1,6 +1,6 @@ import re import sys -from alembic.testing import TestBase, exclusions +from alembic.testing import TestBase, exclusions, assert_raises from alembic.operations import ops from sqlalchemy import MetaData, Column, Table, String, \ @@ -13,7 +13,7 @@ from sqlalchemy.types import TIMESTAMP from sqlalchemy.types import UserDefinedType from sqlalchemy.dialects import mysql, postgresql from sqlalchemy.engine.default import DefaultDialect -from sqlalchemy.sql import and_, column, literal_column, false +from sqlalchemy.sql import and_, column, literal_column, false, table from alembic.migration import MigrationContext from alembic.autogenerate import api @@ -1458,6 +1458,21 @@ unique=False, """ "existing_server_default=sa.text(!U'5'))" ) + def test_render_executesql_plaintext(self): + op_obj = ops.ExecuteSQLOp("drop table foo") + eq_( + autogenerate.render_op_text(self.autogen_context, op_obj), + "op.execute('drop table foo')" + ) + + def test_render_executesql_sqlexpr_notimplemented(self): + sql = table('x', column('q')).insert() + op_obj = ops.ExecuteSQLOp(sql) + assert_raises( + NotImplementedError, + autogenerate.render_op_text, self.autogen_context, op_obj + ) + class RenderNamingConventionTest(TestBase): __requires__ = ('sqlalchemy_094',)