From: Mike Bayer Date: Sun, 27 Nov 2011 22:48:33 +0000 (-0500) Subject: make sure type gets the prefix in modify type X-Git-Tag: rel_0_1_0~38 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=990ce0aa42bcf8b097d2c539661df998ddcce0fd;p=thirdparty%2Fsqlalchemy%2Falembic.git make sure type gets the prefix in modify type --- diff --git a/alembic/autogenerate.py b/alembic/autogenerate.py index 2eb6e718..173b8730 100644 --- a/alembic/autogenerate.py +++ b/alembic/autogenerate.py @@ -223,9 +223,12 @@ def _drop_column(tname, column): return "drop_column(%r, %r)" % (tname, column.name) def _modify_type(tname, cname, type_): - return "alter_column(%r, %r, type=%r)" % ( - tname, cname, type_ - ) + return "alter_column(%(tname)r, %(cname)r, type=%(prefix)s%(type)r)" % { + 'prefix':_autogenerate_prefix(), + 'tname':tname, + 'cname':cname, + 'type':type_ + } def _modify_nullable(tname, cname, nullable): return "alter_column(%r, %r, nullable=%r)" % ( diff --git a/tests/test_autogenerate.py b/tests/test_autogenerate.py index 47513561..7b30a111 100644 --- a/tests/test_autogenerate.py +++ b/tests/test_autogenerate.py @@ -1,8 +1,8 @@ from sqlalchemy import MetaData, Column, Table, Integer, String, Text, \ - Numeric, CHAR, NUMERIC, ForeignKey, DATETIME + Numeric, CHAR, ForeignKey, DATETIME from alembic import autogenerate, context from unittest import TestCase -from tests import staging_env, sqlite_db, clear_staging_env, eq_, eq_ignore_whitespace, capture_context_buffer, _no_sql_testing_config, _testing_config +from tests import staging_env, sqlite_db, clear_staging_env, eq_, eq_ignore_whitespace def _model_one(): m = MetaData() @@ -59,7 +59,7 @@ def _model_two(): class AutogenerateDiffTest(TestCase): @classmethod def setup_class(cls): - env = staging_env() + staging_env() cls.bind = sqlite_db() cls.m1 = _model_one() cls.m1.create_all(cls.bind) @@ -69,6 +69,8 @@ class AutogenerateDiffTest(TestCase): clear_staging_env() def test_diffs(self): + """test generation of diff rules""" + metadata = _model_two() connection = self.bind.connect() diffs = [] @@ -99,11 +101,13 @@ class AutogenerateDiffTest(TestCase): ) def test_render_diffs(self): + """test a full render including indentation""" + metadata = _model_two() connection = self.bind.connect() template_args = {} context.configure( - connection=self.bind.connect(), + connection=connection, autogenerate_metadata=metadata) autogenerate.produce_migration_diffs(template_args) eq_(template_args['upgrades'], @@ -116,7 +120,7 @@ class AutogenerateDiffTest(TestCase): drop_table(u'extra') drop_column('user', u'pw') alter_column('user', 'name', nullable=False) - alter_column('order', u'amount', type=Numeric(precision=10, scale=2)) + alter_column('order', u'amount', type=sa.Numeric(precision=10, scale=2)) alter_column('order', u'amount', nullable=True) add_column('address', sa.Column('street', sa.String(length=50), nullable=True)) ### end Alembic commands ###""") @@ -129,12 +133,14 @@ class AutogenerateDiffTest(TestCase): ) add_column('user', sa.Column(u'pw', sa.VARCHAR(length=50), nullable=True)) alter_column('user', 'name', nullable=True) - alter_column('order', u'amount', type=NUMERIC(precision=8, scale=2)) + alter_column('order', u'amount', type=sa.NUMERIC(precision=8, scale=2)) alter_column('order', u'amount', nullable=False) drop_column('address', 'street') ### end Alembic commands ###""") class AutogenRenderTest(TestCase): + """test individual directives""" + @classmethod def setup_class(cls): context._context_opts['autogenerate_sqlalchemy_prefix'] = 'sa.' @@ -186,7 +192,7 @@ class AutogenRenderTest(TestCase): eq_( autogenerate._modify_type( "sometable", "somecolumn", CHAR(10)), - "alter_column('sometable', 'somecolumn', type=CHAR(length=10))" + "alter_column('sometable', 'somecolumn', type=sa.CHAR(length=10))" ) def test_render_modify_nullable(self):