diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2020-02-06 10:38:57 -0500 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2020-02-06 12:47:28 -0500 |
commit | eeee44eaffae75b9a3d0496ccf478cc74bacef0c (patch) | |
tree | 912b24cadf74dc12451a06e947462a331d379879 /tests/test_autogen_indexes.py | |
parent | 7b1cfb82d6f0da7a588ba23b18bc76791068883b (diff) | |
download | alembic-eeee44eaffae75b9a3d0496ccf478cc74bacef0c.tar.gz |
Repair de-quoting logic used for pre-1.4 SQLAlchemy versions
Fixed regression in 1.4.0 due to :ticket:`647` where unique constraint
comparison with mixed case constraint names while not using a naming
convention would produce false positives during autogenerate.
Change-Id: Ic3d60f7d44377cdb4937ac0bb2bc11d27d03b8bd
Fixes: #654
Diffstat (limited to 'tests/test_autogen_indexes.py')
-rw-r--r-- | tests/test_autogen_indexes.py | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/tests/test_autogen_indexes.py b/tests/test_autogen_indexes.py index 6a8800b..fb5b350 100644 --- a/tests/test_autogen_indexes.py +++ b/tests/test_autogen_indexes.py @@ -365,6 +365,122 @@ class AutogenerateUniqueIndexTest(AutogenFixtureTest, TestBase): diffs = self._fixture(m1, m2, max_identifier_length=30) eq_(diffs, []) + def test_nothing_changed_uq_w_mixed_case_nconv_name(self): + m1 = MetaData( + naming_convention={ + "ix": "index_%(table_name)s_%(column_0_label)s", + "uq": "unique_%(table_name)s_%(column_0_label)s", + } + ) + m2 = MetaData( + naming_convention={ + "ix": "index_%(table_name)s_%(column_0_label)s", + "uq": "unique_%(table_name)s_%(column_0_label)s", + } + ) + + Table( + "NothingChanged", + m1, + Column("id", Integer, primary_key=True), + Column("XCol", Integer), + UniqueConstraint("XCol"), + mysql_engine="InnoDB", + ) + + Table( + "NothingChanged", + m2, + Column("id", Integer, primary_key=True), + Column("XCol", Integer), + UniqueConstraint("XCol"), + mysql_engine="InnoDB", + ) + + diffs = self._fixture(m1, m2) + eq_(diffs, []) + + def test_nothing_changed_uq_w_mixed_case_plain_name(self): + m1 = MetaData() + m2 = MetaData() + + Table( + "nothing_changed", + m1, + Column("id", Integer, primary_key=True), + Column("x", Integer), + UniqueConstraint("x", name="SomeConstraint"), + mysql_engine="InnoDB", + ) + + Table( + "nothing_changed", + m2, + Column("id", Integer, primary_key=True), + Column("x", Integer), + UniqueConstraint("x", name="SomeConstraint"), + mysql_engine="InnoDB", + ) + diffs = self._fixture(m1, m2) + eq_(diffs, []) + + def test_nothing_changed_ix_w_mixed_case_plain_name(self): + m1 = MetaData() + m2 = MetaData() + + Table( + "nothing_changed", + m1, + Column("id", Integer, primary_key=True), + Column("x", Integer), + Index("SomeIndex", "x"), + mysql_engine="InnoDB", + ) + + Table( + "nothing_changed", + m2, + Column("id", Integer, primary_key=True), + Column("x", Integer), + Index("SomeIndex", "x"), + mysql_engine="InnoDB", + ) + diffs = self._fixture(m1, m2) + eq_(diffs, []) + + def test_nothing_changed_ix_w_mixed_case_nconv_name(self): + m1 = MetaData( + naming_convention={ + "ix": "index_%(table_name)s_%(column_0_label)s", + "uq": "unique_%(table_name)s_%(column_0_label)s", + } + ) + m2 = MetaData( + naming_convention={ + "ix": "index_%(table_name)s_%(column_0_label)s", + "uq": "unique_%(table_name)s_%(column_0_label)s", + } + ) + + Table( + "NothingChanged", + m1, + Column("id", Integer, primary_key=True), + Column("XCol", Integer, index=True), + mysql_engine="InnoDB", + ) + + Table( + "NothingChanged", + m2, + Column("id", Integer, primary_key=True), + Column("XCol", Integer, index=True), + mysql_engine="InnoDB", + ) + + diffs = self._fixture(m1, m2) + eq_(diffs, []) + def test_nothing_changed_two(self): m1 = MetaData() m2 = MetaData() |