summaryrefslogtreecommitdiff
path: root/tests/test_autogen_indexes.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2020-02-06 10:38:57 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2020-02-06 12:47:28 -0500
commiteeee44eaffae75b9a3d0496ccf478cc74bacef0c (patch)
tree912b24cadf74dc12451a06e947462a331d379879 /tests/test_autogen_indexes.py
parent7b1cfb82d6f0da7a588ba23b18bc76791068883b (diff)
downloadalembic-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.py116
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()