diff options
Diffstat (limited to 'lib/sqlalchemy/testing/exclusions.py')
-rw-r--r-- | lib/sqlalchemy/testing/exclusions.py | 68 |
1 files changed, 36 insertions, 32 deletions
diff --git a/lib/sqlalchemy/testing/exclusions.py b/lib/sqlalchemy/testing/exclusions.py index 41337ea4d..fd43865aa 100644 --- a/lib/sqlalchemy/testing/exclusions.py +++ b/lib/sqlalchemy/testing/exclusions.py @@ -14,6 +14,7 @@ from .. import util import contextlib import inspect + class skip_if(object): def __init__(self, predicate, reason=None): self.predicate = _as_predicate(predicate) @@ -55,13 +56,13 @@ class skip_if(object): if self.predicate(config._current): if self.reason: msg = "'%s' : %s" % ( - fn.__name__, - self.reason - ) + fn.__name__, + self.reason + ) else: msg = "'%s': %s" % ( - fn.__name__, self.predicate - ) + fn.__name__, self.predicate + ) raise SkipTest(msg) else: if self._fails_on: @@ -79,6 +80,7 @@ class skip_if(object): self._fails_on = skip_if(fails_on_everything_except(*dbs)) return self + class fails_if(skip_if): def __call__(self, fn): @decorator @@ -150,15 +152,15 @@ class SpecPredicate(Predicate): self.description = description _ops = { - '<': operator.lt, - '>': operator.gt, - '==': operator.eq, - '!=': operator.ne, - '<=': operator.le, - '>=': operator.ge, - 'in': operator.contains, - 'between': lambda val, pair: val >= pair[0] and val <= pair[1], - } + '<': operator.lt, + '>': operator.gt, + '==': operator.eq, + '!=': operator.ne, + '<=': operator.le, + '>=': operator.ge, + 'in': operator.contains, + 'between': lambda val, pair: val >= pair[0] and val <= pair[1], + } def __call__(self, config): engine = config.db @@ -178,7 +180,7 @@ class SpecPredicate(Predicate): version = _server_version(engine) oper = hasattr(self.op, '__call__') and self.op \ - or self._ops[self.op] + or self._ops[self.op] return oper(version, self.spec) else: return True @@ -194,16 +196,16 @@ class SpecPredicate(Predicate): else: if negate: return "not %s %s %s" % ( - self.db, - self.op, - self.spec - ) + self.db, + self.op, + self.spec + ) else: return "%s %s %s" % ( - self.db, - self.op, - self.spec - ) + self.db, + self.op, + self.spec + ) def __str__(self): return self._as_string() @@ -270,7 +272,7 @@ class OrPredicate(Predicate): else: conjunction = " or " return conjunction.join(p._as_string(negate=negate) - for p in self.predicates) + for p in self.predicates) else: return self._str._as_string(negate=negate) @@ -311,8 +313,8 @@ def _server_version(engine): def db_spec(*dbs): return OrPredicate( - [Predicate.as_predicate(db) for db in dbs] - ) + [Predicate.as_predicate(db) for db in dbs] + ) def open(): @@ -322,9 +324,11 @@ def open(): def closed(): return skip_if(BooleanPredicate(True, "marked as skip")) + def fails(): return fails_if(BooleanPredicate(True, "expected to fail")) + @decorator def future(fn, *arg): return fails_if(LambdaPredicate(fn), "Future feature") @@ -336,10 +340,10 @@ def fails_on(db, reason=None): def fails_on_everything_except(*dbs): return succeeds_if( - OrPredicate([ + OrPredicate([ SpecPredicate(db) for db in dbs ]) - ) + ) def skip(db, reason=None): @@ -348,7 +352,7 @@ def skip(db, reason=None): def only_on(dbs, reason=None): return only_if( - OrPredicate([SpecPredicate(db) for db in util.to_list(dbs)]) + OrPredicate([SpecPredicate(db) for db in util.to_list(dbs)]) ) @@ -359,6 +363,6 @@ def exclude(db, op, spec, reason=None): def against(config, *queries): assert queries, "no queries sent!" return OrPredicate([ - Predicate.as_predicate(query) - for query in queries - ])(config) + Predicate.as_predicate(query) + for query in queries + ])(config) |