From 9ad570a39ab217b38c6afbabfa277f731da12f52 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Wed, 3 Oct 2012 15:41:34 -0400 Subject: [PATCH] - requirements --- lib/sqlalchemy/testing/requirements.py | 18 +++++++++++++++++- lib/sqlalchemy/testing/schema.py | 3 +++ .../testing/suite/test_reflection.py | 6 ++++-- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/lib/sqlalchemy/testing/requirements.py b/lib/sqlalchemy/testing/requirements.py index c6492a84aa..f86572c6dd 100644 --- a/lib/sqlalchemy/testing/requirements.py +++ b/lib/sqlalchemy/testing/requirements.py @@ -30,6 +30,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 @@ -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 805c8e5677..5dfdc0e072 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 6d36e4e568..171a10b89a 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') -- 2.47.3