summaryrefslogtreecommitdiffstats
path: root/nova/test.py
diff options
context:
space:
mode:
authorJustin Shepherd <jshepher@rackspace.com>2011-08-01 20:45:30 -0500
committerJustin Shepherd <jshepher@rackspace.com>2011-08-01 20:45:30 -0500
commit883095f1e69d70173339ccba64f2b2a8a1d48a5f (patch)
treef8aaa15420257e38da1e4495feefacd14feb6099 /nova/test.py
parentbdcfaa5b927a096f507fb0f7e2d81989173957f8 (diff)
downloadnova-883095f1e69d70173339ccba64f2b2a8a1d48a5f.tar.gz
nova-883095f1e69d70173339ccba64f2b2a8a1d48a5f.tar.xz
nova-883095f1e69d70173339ccba64f2b2a8a1d48a5f.zip
Added @test.skip_unless and @test.skip_if functionality. Also created nova/tests/test_skip_examples.py to show the skip cases usage.
Diffstat (limited to 'nova/test.py')
-rw-r--r--nova/test.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/nova/test.py b/nova/test.py
index 549aa6fcf..afc118100 100644
--- a/nova/test.py
+++ b/nova/test.py
@@ -67,6 +67,37 @@ class skip_test(object):
_skipper.__doc__ = func.__doc__
return _skipper
+class skip_if(object):
+ """Decorator that skips a test if contition is true."""
+ def __init__(self, condition, msg):
+ self.condition = condition
+ self.message = msg
+
+ def __call__(self, func):
+ def _skipper(*args, **kw):
+ """Wrapped skipper function."""
+ if self.condition:
+ raise nose.SkipTest(self.message)
+ _skipper.__name__ = func.__name__
+ _skipper.__doc__ = func.__doc__
+ return _skipper
+
+
+class skip_unless(object):
+ """Decorator that skips a test if condition is false."""
+ def __init__(self, condition, msg):
+ self.condition = condition
+ self.message = msg
+
+ def __call__(self, func):
+ def _skipper(*args, **kw):
+ """Wrapped skipper function."""
+ if not self.condition:
+ raise nose.SkipTest(self.message)
+ _skipper.__name__ = func.__name__
+ _skipper.__doc__ = func.__doc__
+ return _skipper
+
def skip_if_fake(func):
"""Decorator that skips a test if running in fake mode."""