summaryrefslogtreecommitdiff
path: root/migrate
diff options
context:
space:
mode:
Diffstat (limited to 'migrate')
-rw-r--r--migrate/tests/changeset/test_changeset.py19
-rw-r--r--migrate/tests/fixture/database.py19
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()