]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- dont create a self-ref FK if test suite marked as not supporting self ref
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 28 Feb 2014 23:50:18 +0000 (18:50 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 28 Feb 2014 23:50:18 +0000 (18:50 -0500)
- break out reflection of views to support view column reflection separately
from view definition

lib/sqlalchemy/testing/requirements.py
lib/sqlalchemy/testing/suite/test_reflection.py

index 1f69869427573458778583fba695a3733263afbc..77a17c1bd2c71783293485fe14148a354fcaddc9 100644 (file)
@@ -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
index 9f737bc64397813566d1412f0fbca070f106ef99..f6e82c06302d6ed98eb87bd8a2a79031017382cb 100644 (file)
@@ -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,