summaryrefslogtreecommitdiff
path: root/migrate/tests/changeset/test_changeset.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2016-10-20 17:47:19 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2016-10-20 17:47:19 -0400
commite9175a37ce0b0b0e87ad728c8a6a10bed100065b (patch)
tree0db022ca9d340411f4e4d299ad002119d01f14a2 /migrate/tests/changeset/test_changeset.py
parentd58469a6ae19f6a2db0465785b6de6c6dfc23c93 (diff)
downloadsqlalchemy-migrate-e9175a37ce0b0b0e87ad728c8a6a10bed100065b.tar.gz
Set autoincrement to False when modifying to non-Integer datatype
Starting in SQLAlchemy 1.1, the rules for when "autoincrement=True" may be set on a column are more strict. The migrate tests are testing the alteration of a column from Integer to String and then regenerating; this means we need to set autoincrement to False as well. A related issue in SQLAlchemy 1.1 is also being fixed (see https://bitbucket.org/zzzeek/sqlalchemy/issues/3835/), however this fix is not needed in order for the tests to pass here. Change-Id: Ibd3a75fff13312411df87e17b6e5764865d69728
Diffstat (limited to 'migrate/tests/changeset/test_changeset.py')
-rw-r--r--migrate/tests/changeset/test_changeset.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/migrate/tests/changeset/test_changeset.py b/migrate/tests/changeset/test_changeset.py
index 57d0380..93e9965 100644
--- a/migrate/tests/changeset/test_changeset.py
+++ b/migrate/tests/changeset/test_changeset.py
@@ -687,12 +687,25 @@ class TestColumnChange(fixture.DB):
self.assertTrue(isinstance(self.table.c.id.type, Integer))
self.assertEqual(self.table.c.id.nullable, False)
+ # SQLAlchemy 1.1 adds a third state to "autoincrement" called
+ # "auto".
+ self.assertTrue(self.table.c.id.autoincrement in ('auto', True))
+
if not self.engine.name == 'firebird':
self.table.c.id.alter(type=String(20))
self.assertEqual(self.table.c.id.nullable, False)
+
+ # a rule makes sure that autoincrement is set to False
+ # when we change off of Integer
+ self.assertEqual(self.table.c.id.autoincrement, False)
self.refresh_table(self.table.name)
self.assertTrue(isinstance(self.table.c.id.type, String))
+ # note that after reflection, "autoincrement" is likely
+ # to change back to a database-generated value. Should be
+ # False or "auto". if True, it's a bug; at least one of these
+ # exists prior to SQLAlchemy 1.1.3
+
@fixture.usedb()
def test_default(self):
"""Can change a column's server_default value (DefaultClauses only)