diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-10-04 10:28:21 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-10-04 10:28:21 -0400 |
commit | f4ba5b856e470a0d9d89432859413b32cbc766d5 (patch) | |
tree | 2fb75db24c826cfbf5228df11acf31dfa32384ac /lib/sqlalchemy/testing/exclusions.py | |
parent | 9ad570a39ab217b38c6afbabfa277f731da12f52 (diff) | |
download | sqlalchemy-f4ba5b856e470a0d9d89432859413b32cbc766d5.tar.gz |
- test updates
Diffstat (limited to 'lib/sqlalchemy/testing/exclusions.py')
-rw-r--r-- | lib/sqlalchemy/testing/exclusions.py | 64 |
1 files changed, 36 insertions, 28 deletions
diff --git a/lib/sqlalchemy/testing/exclusions.py b/lib/sqlalchemy/testing/exclusions.py index 07e3e7b7f..c53d98568 100644 --- a/lib/sqlalchemy/testing/exclusions.py +++ b/lib/sqlalchemy/testing/exclusions.py @@ -3,43 +3,35 @@ from nose import SkipTest from ..util import decorator from . import config from .. import util +import contextlib -class fails_if(object): +class skip_if(object): def __init__(self, predicate, reason=None): self.predicate = _as_predicate(predicate) self.reason = reason + _fails_on = None + @property def enabled(self): return not self.predicate() - def __call__(self, fn): - @decorator - def decorate(fn, *args, **kw): - if not self.predicate(): - return fn(*args, **kw) + @contextlib.contextmanager + def fail_if(self, name='block'): + try: + yield + except Exception, ex: + if self.predicate(): + print ("%s failed as expected (%s): %s " % ( + name, self.predicate, str(ex))) else: - 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() + raise + else: + if self.predicate(): + raise AssertionError( + "Unexpected success for '%s' (%s)" % + (name, self.predicate)) def __call__(self, fn): @decorator @@ -56,6 +48,22 @@ class skip_if(object): ) raise SkipTest(msg) else: + if self._fails_on: + with self._fails_on.fail_if(name=fn.__name__): + return fn(*args, **kw) + else: + return fn(*args, **kw) + return decorate(fn) + + def fails_on(self, other, reason=None): + self._fails_on = skip_if(other, reason) + return self + +class fails_if(skip_if): + def __call__(self, fn): + @decorator + def decorate(fn, *args, **kw): + with self.fail_if(name=fn.__name__): return fn(*args, **kw) return decorate(fn) @@ -264,10 +272,10 @@ def db_spec(*dbs): ) def open(): - return skip_if(BooleanPredicate(False)) + return skip_if(BooleanPredicate(False, "mark as execute")) def closed(): - return skip_if(BooleanPredicate(True)) + return skip_if(BooleanPredicate(True, "marked as skip")) @decorator def future(fn, *args, **kw): |