from sqlalchemy import MetaData, Column, Table, Integer, String, Text, \
Numeric, CHAR, ForeignKey, DATETIME
+from sqlalchemy.types import NULLTYPE
from alembic import autogenerate, context
from unittest import TestCase
from tests import staging_env, sqlite_db, clear_staging_env, eq_, eq_ignore_whitespace
compare_server_default = True,
target_metadata=cls.m2
)
+ connection = context.get_bind()
+ cls.autogen_context = {
+ 'imports':set(),
+ 'connection':connection,
+ 'dialect':connection.dialect,
+ 'context':context.get_context()
+ }
@classmethod
def teardown_class(cls):
metadata = self.m2
connection = context.get_bind()
diffs = []
- autogenerate._produce_net_changes(connection, metadata, diffs, {
- 'imports':set(),
- 'connection':connection,
- 'dialect':connection.dialect,
- 'context':context.get_context()
- })
+ autogenerate._produce_net_changes(connection, metadata, diffs,
+ self.autogen_context)
eq_(
diffs[0],
metadata = self.m2
template_args = {}
- autogenerate.produce_migration_diffs(template_args, {})
+ autogenerate.produce_migration_diffs(template_args, self.autogen_context)
eq_(template_args['upgrades'],
"""### commands auto generated by Alembic - please adjust! ###
create_table('item',
drop_column('address', 'street')
### end Alembic commands ###""")
+ def test_skip_null_type_comparison_reflected(self):
+ diff = []
+ autogenerate._compare_type("sometable", "somecol",
+ {"name":"somecol", "type":NULLTYPE,
+ "nullable":True, "default":None},
+ Column("somecol", Integer()),
+ diff, self.autogen_context
+ )
+ assert not diff
+
+ def test_skip_null_type_comparison_local(self):
+ diff = []
+ autogenerate._compare_type("sometable", "somecol",
+ {"name":"somecol", "type":Integer(),
+ "nullable":True, "default":None},
+ Column("somecol", NULLTYPE),
+ diff, self.autogen_context
+ )
+ assert not diff
+
+
class AutogenRenderTest(TestCase):
"""test individual directives"""