summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/testing
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/testing')
-rw-r--r--lib/sqlalchemy/testing/requirements.py18
-rw-r--r--lib/sqlalchemy/testing/schema.py3
-rw-r--r--lib/sqlalchemy/testing/suite/test_reflection.py6
3 files changed, 24 insertions, 3 deletions
diff --git a/lib/sqlalchemy/testing/requirements.py b/lib/sqlalchemy/testing/requirements.py
index c6492a84a..f86572c6d 100644
--- a/lib/sqlalchemy/testing/requirements.py
+++ b/lib/sqlalchemy/testing/requirements.py
@@ -31,6 +31,18 @@ class SuiteRequirements(Requirements):
return exclusions.open()
@property
+ def foreign_keys(self):
+ """Target database must support foreign keys."""
+
+ return exclusions.open()
+
+ @property
+ def foreign_key_ddl(self):
+ """Target database must support the DDL phrases for FOREIGN KEY."""
+
+ return exclusions.open()
+
+ @property
def autoincrement_insert(self):
"""target platform generates new surrogate integer primary key values
when insert() is executed, excluding the pk column."""
@@ -102,7 +114,11 @@ class SuiteRequirements(Requirements):
return self.schemas
@property
- def constraint_reflection(self):
+ def primary_key_constraint_reflection(self):
+ return exclusions.open()
+
+ @property
+ def foreign_key_constraint_reflection(self):
return exclusions.open()
@property
diff --git a/lib/sqlalchemy/testing/schema.py b/lib/sqlalchemy/testing/schema.py
index 805c8e567..5dfdc0e07 100644
--- a/lib/sqlalchemy/testing/schema.py
+++ b/lib/sqlalchemy/testing/schema.py
@@ -60,6 +60,9 @@ def Column(*args, **kw):
test_opts = dict([(k, kw.pop(k)) for k in kw.keys()
if k.startswith('test_')])
+ if not config.requirements.foreign_key_ddl.enabled:
+ args = [arg for arg in args if not isinstance(arg, schema.ForeignKey)]
+
col = schema.Column(*args, **kw)
if 'test_needs_autoincrement' in test_opts and \
kw.get('primary_key', False) and \
diff --git a/lib/sqlalchemy/testing/suite/test_reflection.py b/lib/sqlalchemy/testing/suite/test_reflection.py
index 6d36e4e56..171a10b89 100644
--- a/lib/sqlalchemy/testing/suite/test_reflection.py
+++ b/lib/sqlalchemy/testing/suite/test_reflection.py
@@ -246,6 +246,7 @@ class ComponentReflectionTest(fixtures.TablesTest):
])) > 0, '%s(%s), %s(%s)' % (col.name,
col.type, cols[i]['name'], ctype))
+ @testing.requires.table_reflection
def test_get_columns(self):
self._test_get_columns()
@@ -282,6 +283,7 @@ class ComponentReflectionTest(fixtures.TablesTest):
eq_(addr_cons['name'], 'email_ad_pk')
go()
+ @testing.requires.primary_key_constraint_reflection
def test_get_pk_constraint(self):
self._test_get_pk_constraint()
@@ -337,11 +339,11 @@ class ComponentReflectionTest(fixtures.TablesTest):
eq_(fkey1['referred_columns'], ['user_id', ])
eq_(fkey1['constrained_columns'], ['remote_user_id'])
- @testing.requires.constraint_reflection
+ @testing.requires.foreign_key_constraint_reflection
def test_get_foreign_keys(self):
self._test_get_foreign_keys()
- @testing.requires.constraint_reflection
+ @testing.requires.foreign_key_constraint_reflection
@testing.requires.schemas
def test_get_foreign_keys_with_schema(self):
self._test_get_foreign_keys(schema='test_schema')