]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- add some more rules to make sure all tests run if DBs are available
authorMike Bayer <mike_mp@zzzcomputing.com>
Mon, 24 Mar 2014 16:49:22 +0000 (12:49 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Mon, 24 Mar 2014 16:49:22 +0000 (12:49 -0400)
lib/sqlalchemy/testing/plugin/plugin_base.py
test/engine/test_execute.py
test/orm/test_eager_relations.py
test/orm/test_session.py
test/orm/test_update_delete.py

index d97546a67ca771f7ee667147b3a044de25459d4f..55fbf8f11902a8ff2799d08cd70d89b39e399b24 100644 (file)
@@ -375,6 +375,18 @@ def _do_skips(cls):
                         reasons.append(check.reason)
                     break
 
+    if hasattr(cls, '__prefer_requires__'):
+        non_preferred = set()
+        requirements = config.requirements
+        for config_obj in list(all_configs):
+            for requirement in cls.__prefer_requires__:
+                check = getattr(requirements, requirement)
+
+                if check.predicate(config_obj):
+                    non_preferred.add(config_obj)
+        if all_configs.difference(non_preferred):
+            all_configs.difference_update(non_preferred)
+
     if cls.__unsupported_on__:
         spec = exclusions.db_spec(*cls.__unsupported_on__)
         for config_obj in list(all_configs):
@@ -415,7 +427,7 @@ def _do_skips(cls):
                 ", ".join(reasons)
             )
         )
-    elif hasattr(cls, '__prefer__'):
+    elif hasattr(cls, '__prefer_backends__'):
         non_preferred = set()
         spec = exclusions.db_spec(*util.to_list(cls.__prefer__))
         for config_obj in all_configs:
index aad43c1df12a48e03f2f93e14fd73083d2ecb364..73e7080855f21dbc274fb3a578fbb4272768d425 100644 (file)
@@ -1410,6 +1410,7 @@ class ProxyConnectionTest(fixtures.TestBase):
 
     """
     __requires__ = 'ad_hoc_engines',
+    __prefer_requires__ = 'two_phase_transactions',
 
     @testing.uses_deprecated(r'.*Use event.listen')
     @testing.fails_on('firebird', 'Data type unknown')
index bfc532576e7379359ed2007f424cc6d17defc128..7d1f79e97d3e9df23b8a30908a6e33be2d07bb04 100644 (file)
@@ -2432,6 +2432,8 @@ class MixedEntitiesTest(_fixtures.FixtureTest, testing.AssertsCompiledSQL):
     run_deletes = None
     __dialect__ = 'default'
 
+    __prefer_backends__ = ('postgresql', 'mysql', 'oracle')
+
     @classmethod
     def setup_mappers(cls):
         users, Keyword, items, order_items, orders, Item, User, Address, keywords, Order, item_keywords, addresses = (cls.tables.users,
index 1a78c51b881d5e73088de8d579eef6e7c4fe687c..5993c15f34718310f1cb21a5eb1cc9c48ecbc600 100644 (file)
@@ -20,7 +20,6 @@ from sqlalchemy import event, ForeignKey
 
 class BindTest(_fixtures.FixtureTest):
     run_inserts = None
-    __backend__ = True
 
     def test_mapped_binds(self):
         Address, addresses, users, User = (self.classes.Address,
@@ -260,7 +259,7 @@ class ExecutionTest(_fixtures.FixtureTest):
 
 class TransScopingTest(_fixtures.FixtureTest):
     run_inserts = None
-    __backend__ = True
+    __prefer_requires__ = "independent_connections",
 
     def test_no_close_on_flush(self):
         """Flush() doesn't close a connection the session didn't open"""
@@ -316,7 +315,6 @@ class TransScopingTest(_fixtures.FixtureTest):
 
 class SessionUtilTest(_fixtures.FixtureTest):
     run_inserts = None
-    __backend__ = True
 
     def test_object_session_raises(self):
         User = self.classes.User
@@ -397,8 +395,8 @@ class SessionUtilTest(_fixtures.FixtureTest):
 
 class SessionStateTest(_fixtures.FixtureTest):
     run_inserts = None
-    __backend__ = True
 
+    __prefer_requires__ = ('independent_connections', )
 
     def test_info(self):
         s = Session()
@@ -890,7 +888,6 @@ class NoCyclesOnTransientDetachedTest(_fixtures.FixtureTest):
 
     """
     run_inserts = None
-    __backend__ = True
 
     def setup(self):
         mapper(self.classes.User, self.tables.users)
@@ -1645,7 +1642,6 @@ class TLTransactionTest(fixtures.MappedTest):
 
 class FlushWarningsTest(fixtures.MappedTest):
     run_setup_mappers = 'each'
-    __backend__ = True
 
     @classmethod
     def define_tables(cls, metadata):
index ac94fde2faa2163e4d44662bb33ede1ccc67f326..bf72b49f6f20a4789624e2d5ea80a22897554536 100644 (file)
@@ -12,6 +12,8 @@ from sqlalchemy.testing.schema import Table, Column
 
 
 class UpdateDeleteTest(fixtures.MappedTest):
+    __backend__ = True
+
     @classmethod
     def define_tables(cls, metadata):
         Table('users', metadata,
@@ -734,6 +736,7 @@ class InheritTest(fixtures.DeclarativeMappedTest):
     run_inserts = 'each'
 
     run_deletes = 'each'
+    __backend__ = True
 
     @classmethod
     def setup_classes(cls):