diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-09-27 16:11:32 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-09-27 16:11:32 -0400 |
commit | b9ea55f8616156820dca31ae0c65ba0115086e1e (patch) | |
tree | 684c29a56744407a8e2e6eb81fbc8f631953cb7e /lib/sqlalchemy/testing/exclusions.py | |
parent | 40fd1997f0740b0111c4d7dabe06b73c1122ba4d (diff) | |
download | sqlalchemy-b9ea55f8616156820dca31ae0c65ba0115086e1e.tar.gz |
- more tests, move some tests out of test_reflection, test_query
Diffstat (limited to 'lib/sqlalchemy/testing/exclusions.py')
-rw-r--r-- | lib/sqlalchemy/testing/exclusions.py | 114 |
1 files changed, 74 insertions, 40 deletions
diff --git a/lib/sqlalchemy/testing/exclusions.py b/lib/sqlalchemy/testing/exclusions.py index ba2eebe4f..96dd0d693 100644 --- a/lib/sqlalchemy/testing/exclusions.py +++ b/lib/sqlalchemy/testing/exclusions.py @@ -1,49 +1,63 @@ import operator from nose import SkipTest -from sqlalchemy.util import decorator +from ..util import decorator from . import config -from sqlalchemy import util +from .. import util -def fails_if(predicate, reason=None): - predicate = _as_predicate(predicate) - - @decorator - def decorate(fn, *args, **kw): - if not predicate(): - return fn(*args, **kw) - else: - try: - fn(*args, **kw) - except Exception, ex: - print ("'%s' failed as expected (%s): %s " % ( - fn.__name__, predicate, str(ex))) - return True - else: - raise AssertionError( - "Unexpected success for '%s' (%s)" % - (fn.__name__, predicate)) - return decorate +class fails_if(object): + def __init__(self, predicate, reason=None): + self.predicate = _as_predicate(predicate) + self.reason = reason -def skip_if(predicate, reason=None): - predicate = _as_predicate(predicate) + @property + def enabled(self): + return not self.predicate() - @decorator - def decorate(fn, *args, **kw): - if predicate(): - if reason: - msg = "'%s' : %s" % ( - fn.__name__, - reason - ) + def __call__(self, fn): + @decorator + def decorate(fn, *args, **kw): + if not self.predicate(): + return fn(*args, **kw) else: - msg = "'%s': %s" % ( - fn.__name__, predicate - ) - raise SkipTest(msg) - else: - return fn(*args, **kw) - return decorate + try: + fn(*args, **kw) + except Exception, ex: + print ("'%s' failed as expected (%s): %s " % ( + fn.__name__, self.predicate, str(ex))) + return True + else: + raise AssertionError( + "Unexpected success for '%s' (%s)" % + (fn.__name__, self.predicate)) + return decorate(fn) + +class skip_if(object): + def __init__(self, predicate, reason=None): + self.predicate = _as_predicate(predicate) + self.reason = reason + + @property + def enabled(self): + return not self.predicate() + + def __call__(self, fn): + @decorator + def decorate(fn, *args, **kw): + if self.predicate(): + if self.reason: + msg = "'%s' : %s" % ( + fn.__name__, + self.reason + ) + else: + msg = "'%s': %s" % ( + fn.__name__, self.predicate + ) + raise SkipTest(msg) + else: + return fn(*args, **kw) + return decorate(fn) def only_if(predicate, reason=None): predicate = _as_predicate(predicate) @@ -69,6 +83,23 @@ class Predicate(object): else: assert False, "unknown predicate type: %s" % predicate +class BooleanPredicate(Predicate): + def __init__(self, value, description=None): + self.value = value + self.description = description + + def __call__(self): + return self.value + + def _as_string(self, negate=False): + if negate: + return "not " + self.description + else: + return self.description + + def __str__(self): + return self._as_string() + class SpecPredicate(Predicate): def __init__(self, db, op=None, spec=None, description=None): self.db = db @@ -232,8 +263,11 @@ def db_spec(*dbs): Predicate.as_predicate(db) for db in dbs ) -def open(fn): - return fn +def open(): + return skip_if(BooleanPredicate(False)) + +def closed(): + return skip_if(BooleanPredicate(True)) @decorator def future(fn, *args, **kw): |