summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/testing/exclusions.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2012-09-27 16:11:32 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2012-09-27 16:11:32 -0400
commitb9ea55f8616156820dca31ae0c65ba0115086e1e (patch)
tree684c29a56744407a8e2e6eb81fbc8f631953cb7e /lib/sqlalchemy/testing/exclusions.py
parent40fd1997f0740b0111c4d7dabe06b73c1122ba4d (diff)
downloadsqlalchemy-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.py114
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):