From 9eb8f3a085193067b15f89069ff1b40013a9f1d8 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Mon, 6 Jul 2015 20:42:17 -0400 Subject: get all of autogen_diffs tests to pass again --- alembic/autogenerate/api.py | 2 +- alembic/operations/ops.py | 10 +++++----- tests/_autogen_fixtures.py | 7 ++++--- tests/test_autogen_diffs.py | 37 ++++++++++++++++++++++--------------- 4 files changed, 32 insertions(+), 24 deletions(-) diff --git a/alembic/autogenerate/api.py b/alembic/autogenerate/api.py index 632ecb7..1277c20 100644 --- a/alembic/autogenerate/api.py +++ b/alembic/autogenerate/api.py @@ -98,7 +98,7 @@ def compare_metadata(context, metadata): """ migration_script = produce_migrations(context, metadata) - return migration_script.as_diffs() + return migration_script.upgrade_ops.as_diffs() def produce_migrations(context, metadata): diff --git a/alembic/operations/ops.py b/alembic/operations/ops.py index 5f50f10..e9c2497 100644 --- a/alembic/operations/ops.py +++ b/alembic/operations/ops.py @@ -51,9 +51,7 @@ class AddConstraintOp(MigrateOperation): return funcs[constraint.__visit_name__](constraint) def reverse(self): - return DropConstraintOp( - self.constraint_name, self.table_name, type_=self.type_, - schema=self.schema) + return DropConstraintOp.from_constraint(self.to_constraint()) def to_diff_tuple(self): return ("add_constraint", self.to_constraint()) @@ -1164,7 +1162,7 @@ class AlterColumnOp(AlterTableOp): kw['modify_server_default'] = self.modify_server_default all_keys = set(m.group(1) for m in [ - re.match(r'(?:existing_|modify_)(.+))', k) + re.match(r'^(?:existing_|modify_)(.+)$', k) for k in kw ] if m) @@ -1720,9 +1718,11 @@ class ModifyTableOps(OpContainer): def reverse(self): return ModifyTableOps( + self.table_name, ops=list(reversed( [op.reverse() for op in self.ops] - )) + )), + schema=self.schema ) diff --git a/tests/_autogen_fixtures.py b/tests/_autogen_fixtures.py index 7ef6cbf..98848b5 100644 --- a/tests/_autogen_fixtures.py +++ b/tests/_autogen_fixtures.py @@ -2,6 +2,7 @@ from sqlalchemy import MetaData, Column, Table, Integer, String, Text, \ Numeric, CHAR, ForeignKey, Index, UniqueConstraint, CheckConstraint, text from sqlalchemy.engine.reflection import Inspector +from alembic.operations import ops from alembic import autogenerate from alembic.migration import MigrationContext from alembic.testing import config @@ -232,11 +233,11 @@ class AutogenFixtureTest(_ComparesFKs): 'object_filters': object_filters, 'include_schemas': include_schemas } - diffs = [] + uo = ops.UpgradeOps(ops=[]) autogenerate._produce_net_changes( - autogen_context, diffs + autogen_context, uo ) - return diffs + return uo.as_diffs() reports_unnamed_constraints = False diff --git a/tests/test_autogen_diffs.py b/tests/test_autogen_diffs.py index de0d5a9..cade594 100644 --- a/tests/test_autogen_diffs.py +++ b/tests/test_autogen_diffs.py @@ -64,7 +64,6 @@ class AutogenCrossSchemaTest(AutogenTest, TestBase): return m def test_default_schema_omitted_upgrade(self): - diffs = [] def include_object(obj, name, type_, reflected, compare_to): if type_ == "table": @@ -76,13 +75,14 @@ class AutogenCrossSchemaTest(AutogenTest, TestBase): 'include_schemas': True, 'metadata': self.m2 }) - autogenerate._produce_net_changes(self.autogen_context, diffs) + uo = ops.UpgradeOps(ops=[]) + autogenerate._produce_net_changes(self.autogen_context, uo) + diffs = uo.as_diffs() eq_(diffs[0][0], "add_table") eq_(diffs[0][1].schema, None) def test_alt_schema_included_upgrade(self): - diffs = [] def include_object(obj, name, type_, reflected, compare_to): if type_ == "table": @@ -95,14 +95,14 @@ class AutogenCrossSchemaTest(AutogenTest, TestBase): 'include_schemas': True, 'metadata': self.m2 }) - autogenerate._produce_net_changes(self.autogen_context, diffs) + uo = ops.UpgradeOps(ops=[]) + autogenerate._produce_net_changes(self.autogen_context, uo) + diffs = uo.as_diffs() eq_(diffs[0][0], "add_table") eq_(diffs[0][1].schema, config.test_schema) def test_default_schema_omitted_downgrade(self): - diffs = [] - def include_object(obj, name, type_, reflected, compare_to): if type_ == "table": return name == "t1" @@ -113,13 +113,14 @@ class AutogenCrossSchemaTest(AutogenTest, TestBase): 'include_schemas': True, 'metadata': self.m2 }) - autogenerate._produce_net_changes(self.autogen_context, diffs) + uo = ops.UpgradeOps(ops=[]) + autogenerate._produce_net_changes(self.autogen_context, uo) + diffs = uo.as_diffs() eq_(diffs[0][0], "remove_table") eq_(diffs[0][1].schema, None) def test_alt_schema_included_downgrade(self): - diffs = [] def include_object(obj, name, type_, reflected, compare_to): if type_ == "table": @@ -131,7 +132,9 @@ class AutogenCrossSchemaTest(AutogenTest, TestBase): 'include_schemas': True, 'metadata': self.m2 }) - autogenerate._produce_net_changes(self.autogen_context, diffs) + uo = ops.UpgradeOps(ops=[]) + autogenerate._produce_net_changes(self.autogen_context, uo) + diffs = uo.as_diffs() eq_(diffs[0][0], "remove_table") eq_(diffs[0][1].schema, config.test_schema) @@ -398,21 +401,23 @@ class AutogenerateDiffTest(ModelOne, AutogenTest, TestBase): eq_(alter_cols, set(['user_id', 'order', 'user'])) def test_skip_null_type_comparison_reflected(self): - diff = [] + ac = ops.AlterColumnOp("sometable", "somecol") autogenerate.compare._compare_type(None, "sometable", "somecol", Column("somecol", NULLTYPE), Column("somecol", Integer()), - diff, self.autogen_context + ac, self.autogen_context ) + diff = ac.to_diff_tuple() assert not diff def test_skip_null_type_comparison_local(self): - diff = [] + ac = ops.AlterColumnOp("sometable", "somecol") autogenerate.compare._compare_type(None, "sometable", "somecol", Column("somecol", Integer()), Column("somecol", NULLTYPE), - diff, self.autogen_context + ac, self.autogen_context ) + diff = ac.to_diff_tuple() assert not diff def test_custom_type_compare(self): @@ -485,14 +490,16 @@ class AutogenerateDiffTestWSchema(ModelOne, AutogenTest, TestBase): """test generation of diff rules""" metadata = self.m2 - diffs = [] self.autogen_context.update({ 'object_filters': _default_object_filters, 'include_schemas': True, 'metadata': self.m2 }) - autogenerate._produce_net_changes(self.autogen_context, diffs) + uo = ops.UpgradeOps(ops=[]) + autogenerate._produce_net_changes(self.autogen_context, uo) + + diffs = uo.as_diffs() eq_( diffs[0], -- cgit v1.2.1