diff options
Diffstat (limited to 'migrate')
-rw-r--r-- | migrate/tests/changeset/test_changeset.py | 19 | ||||
-rw-r--r-- | migrate/tests/fixture/database.py | 19 |
2 files changed, 28 insertions, 10 deletions
diff --git a/migrate/tests/changeset/test_changeset.py b/migrate/tests/changeset/test_changeset.py index d94f6ca..3989ea3 100644 --- a/migrate/tests/changeset/test_changeset.py +++ b/migrate/tests/changeset/test_changeset.py @@ -7,6 +7,7 @@ from sqlalchemy import * from migrate import changeset, exceptions from migrate.changeset import * +from migrate.changeset import constraint from migrate.changeset.schema import ColumnDelta from migrate.tests import fixture from migrate.tests.fixture.warnings import catch_warnings @@ -168,7 +169,7 @@ class TestAddDropColumn(fixture.DB): reftable.create() # create column with fk - col = Column('data', Integer, ForeignKey(reftable.c.id)) + col = Column('data', Integer, ForeignKey(reftable.c.id, name='testfk')) col.create(self.table) # check if constraint is added @@ -186,6 +187,11 @@ class TestAddDropColumn(fixture.DB): else: self.assertEqual(reftable.c.id.name, col.foreign_keys[0].column.name) + + if self.engine.name == 'mysql': + constraint.ForeignKeyConstraint([self.table.c.data], + [reftable.c.id], + name='testfk').drop() col.drop(self.table) if self.engine.has_table(reftable.name): @@ -384,8 +390,8 @@ class TestAddDropColumn(fixture.DB): self.table = Table( self.table_name, self.meta, Column('id', Integer, primary_key=True), - Column('r1', Integer, ForeignKey('tmp_ref.id')), - Column('r2', Integer, ForeignKey('tmp_ref.id')), + Column('r1', Integer, ForeignKey('tmp_ref.id', name='test_fk1')), + Column('r2', Integer, ForeignKey('tmp_ref.id', name='test_fk2')), ) self.table.create() @@ -394,6 +400,9 @@ class TestAddDropColumn(fixture.DB): self._actual_foreign_keys()) # delete one + if self.engine.name == 'mysql': + constraint.ForeignKeyConstraint([self.table.c.r2], [reftable.c.id], + name='test_fk2').drop() self.table.c.r2.drop() # check remaining foreign key is there @@ -435,6 +444,10 @@ class TestAddDropColumn(fixture.DB): self._actual_foreign_keys()) # delete one + if self.engine.name == 'mysql': + constraint.ForeignKeyConstraint([self.table.c.r1, self.table.c.r2], + [reftable.c.id, reftable.c.jd], + name='test_fk').drop() self.table.c.r2.drop() # check the constraint is gone, since part of it diff --git a/migrate/tests/fixture/database.py b/migrate/tests/fixture/database.py index b9eb0ca..e000d60 100644 --- a/migrate/tests/fixture/database.py +++ b/migrate/tests/fixture/database.py @@ -6,6 +6,7 @@ import logging from decorator import decorator from sqlalchemy import create_engine, Table, MetaData +from sqlalchemy import exc as sa_exc from sqlalchemy.orm import create_session from sqlalchemy.pool import StaticPool @@ -81,13 +82,17 @@ def usedb(supported=None, not_supported=None): try: log.debug("Running test with engine %s", url) try: - try: - self._setup(url) - except Exception,e: - setup_exception=e - else: - setup_exception=None - f(self, *a, **kw) + self._setup(url) + except sa_exc.OperationalError: + log.info('Backend %s is not available, skip it', url) + continue + except Exception as e: + setup_exception = e + else: + setup_exception = None + + try: + f(self, *a, **kw) finally: try: self._teardown() |