summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2014-03-24 12:49:22 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2014-03-24 12:49:22 -0400
commit50d19f55d265847c874d5eca3660af0d61c1c454 (patch)
tree58a749a877133c39eda04d80ddd994901e45f0ce
parent990266f5515afed78260cce4736640faa19c05da (diff)
downloadsqlalchemy-50d19f55d265847c874d5eca3660af0d61c1c454.tar.gz
- add some more rules to make sure all tests run if DBs are available
-rw-r--r--lib/sqlalchemy/testing/plugin/plugin_base.py14
-rw-r--r--test/engine/test_execute.py1
-rw-r--r--test/orm/test_eager_relations.py2
-rw-r--r--test/orm/test_session.py8
-rw-r--r--test/orm/test_update_delete.py3
5 files changed, 21 insertions, 7 deletions
diff --git a/lib/sqlalchemy/testing/plugin/plugin_base.py b/lib/sqlalchemy/testing/plugin/plugin_base.py
index d97546a67..55fbf8f11 100644
--- a/lib/sqlalchemy/testing/plugin/plugin_base.py
+++ b/lib/sqlalchemy/testing/plugin/plugin_base.py
@@ -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:
diff --git a/test/engine/test_execute.py b/test/engine/test_execute.py
index aad43c1df..73e708085 100644
--- a/test/engine/test_execute.py
+++ b/test/engine/test_execute.py
@@ -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')
diff --git a/test/orm/test_eager_relations.py b/test/orm/test_eager_relations.py
index bfc532576..7d1f79e97 100644
--- a/test/orm/test_eager_relations.py
+++ b/test/orm/test_eager_relations.py
@@ -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,
diff --git a/test/orm/test_session.py b/test/orm/test_session.py
index 1a78c51b8..5993c15f3 100644
--- a/test/orm/test_session.py
+++ b/test/orm/test_session.py
@@ -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):
diff --git a/test/orm/test_update_delete.py b/test/orm/test_update_delete.py
index ac94fde2f..bf72b49f6 100644
--- a/test/orm/test_update_delete.py
+++ b/test/orm/test_update_delete.py
@@ -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):