summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2013-12-17 14:24:48 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2013-12-17 14:24:48 -0500
commit10ac89cef3dafc7a23c8947255f26d60db2c4d84 (patch)
treee508bb1e9b8dfb7d6e24c80317006f77d757066c
parent2c3afb4dcb6bedd5189ec7e5e25afaa4636be4c9 (diff)
downloadsqlalchemy-10ac89cef3dafc7a23c8947255f26d60db2c4d84.tar.gz
- enhance the exclusions system to support database versions within the __only_on__ attribute
-rw-r--r--lib/sqlalchemy/testing/exclusions.py9
-rw-r--r--lib/sqlalchemy/testing/plugin/noseplugin.py15
2 files changed, 17 insertions, 7 deletions
diff --git a/lib/sqlalchemy/testing/exclusions.py b/lib/sqlalchemy/testing/exclusions.py
index d126c3aa5..9f14ee105 100644
--- a/lib/sqlalchemy/testing/exclusions.py
+++ b/lib/sqlalchemy/testing/exclusions.py
@@ -98,7 +98,14 @@ class Predicate(object):
elif isinstance(predicate, tuple):
return SpecPredicate(*predicate)
elif isinstance(predicate, util.string_types):
- return SpecPredicate(predicate, None, None)
+ tokens = predicate.split(" ", 2)
+ op = spec = None
+ db = tokens.pop(0)
+ if tokens:
+ op = tokens.pop(0)
+ if tokens:
+ spec = tuple(int(d) for d in tokens.pop(0).split("."))
+ return SpecPredicate(db, op, spec)
elif util.callable(predicate):
return LambdaPredicate(predicate)
else:
diff --git a/lib/sqlalchemy/testing/plugin/noseplugin.py b/lib/sqlalchemy/testing/plugin/noseplugin.py
index 704e90d53..b55ba4fc0 100644
--- a/lib/sqlalchemy/testing/plugin/noseplugin.py
+++ b/lib/sqlalchemy/testing/plugin/noseplugin.py
@@ -393,8 +393,9 @@ class NoseSQLAlchemy(Plugin):
check.reason if check.reason
else
(
- "'%s' unsupported on DB implementation '%s'" % (
- cls.__name__, config.db.name
+ "'%s' unsupported on DB implementation '%s' == %s" % (
+ cls.__name__, config.db.name,
+ config.db.dialect.server_version_info
)
)
)
@@ -403,16 +404,18 @@ class NoseSQLAlchemy(Plugin):
spec = exclusions.db_spec(*cls.__unsupported_on__)
if spec(config.db):
raise SkipTest(
- "'%s' unsupported on DB implementation '%s'" % (
- cls.__name__, config.db.name)
+ "'%s' unsupported on DB implementation '%s' == %s" % (
+ cls.__name__, config.db.name,
+ config.db.dialect.server_version_info)
)
if getattr(cls, '__only_on__', None):
spec = exclusions.db_spec(*util.to_list(cls.__only_on__))
if not spec(config.db):
raise SkipTest(
- "'%s' unsupported on DB implementation '%s'" % (
- cls.__name__, config.db.name)
+ "'%s' unsupported on DB implementation '%s' == %s" % (
+ cls.__name__, config.db.name,
+ config.db.dialect.server_version_info)
)
if getattr(cls, '__skip_if__', False):