From: Mike Bayer Date: Fri, 28 Feb 2014 23:50:18 +0000 (-0500) Subject: - dont create a self-ref FK if test suite marked as not supporting self ref X-Git-Tag: rel_0_9_4~94 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=43f95d3e5e8faec681141212d1e908b06a47e337;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - dont create a self-ref FK if test suite marked as not supporting self ref - break out reflection of views to support view column reflection separately from view definition --- diff --git a/lib/sqlalchemy/testing/requirements.py b/lib/sqlalchemy/testing/requirements.py index 1f69869427..77a17c1bd2 100644 --- a/lib/sqlalchemy/testing/requirements.py +++ b/lib/sqlalchemy/testing/requirements.py @@ -270,8 +270,20 @@ class SuiteRequirements(Requirements): def table_reflection(self): return exclusions.open() + @property + def view_column_reflection(self): + """target database must support retrieval of the columns in a view, + similarly to how a table is inspected. + + This does not include the full CREATE VIEW definition. + + """ + return self.views + @property def view_reflection(self): + """target database must support inspection of the full CREATE VIEW definition. + """ return self.views @property diff --git a/lib/sqlalchemy/testing/suite/test_reflection.py b/lib/sqlalchemy/testing/suite/test_reflection.py index 9f737bc643..f6e82c0630 100644 --- a/lib/sqlalchemy/testing/suite/test_reflection.py +++ b/lib/sqlalchemy/testing/suite/test_reflection.py @@ -89,7 +89,7 @@ class ComponentReflectionTest(fixtures.TablesTest): if testing.requires.index_reflection.enabled: cls.define_index(metadata, users) - if testing.requires.view_reflection.enabled: + if testing.requires.view_column_reflection.enabled: cls.define_views(metadata, schema) @classmethod @@ -243,11 +243,11 @@ class ComponentReflectionTest(fixtures.TablesTest): def test_get_columns_with_schema(self): self._test_get_columns(schema='test_schema') - @testing.requires.view_reflection + @testing.requires.view_column_reflection def test_get_view_columns(self): self._test_get_columns(table_type='view') - @testing.requires.view_reflection + @testing.requires.view_column_reflection @testing.requires.schemas def test_get_view_columns_with_schema(self): self._test_get_columns(schema='test_schema', table_type='view') @@ -300,18 +300,20 @@ class ComponentReflectionTest(fixtures.TablesTest): insp = inspect(meta.bind) expected_schema = schema # users - users_fkeys = insp.get_foreign_keys(users.name, - schema=schema) - fkey1 = users_fkeys[0] - - with testing.requires.named_constraints.fail_if(): - self.assert_(fkey1['name'] is not None) - eq_(fkey1['referred_schema'], expected_schema) - eq_(fkey1['referred_table'], users.name) - eq_(fkey1['referred_columns'], ['user_id', ]) if testing.requires.self_referential_foreign_keys.enabled: - eq_(fkey1['constrained_columns'], ['parent_user_id']) + users_fkeys = insp.get_foreign_keys(users.name, + schema=schema) + fkey1 = users_fkeys[0] + + with testing.requires.named_constraints.fail_if(): + self.assert_(fkey1['name'] is not None) + + eq_(fkey1['referred_schema'], expected_schema) + eq_(fkey1['referred_table'], users.name) + eq_(fkey1['referred_columns'], ['user_id', ]) + if testing.requires.self_referential_foreign_keys.enabled: + eq_(fkey1['constrained_columns'], ['parent_user_id']) #addresses addr_fkeys = insp.get_foreign_keys(addresses.name,