summaryrefslogtreecommitdiffstats
path: root/nova
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
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')
-rw-r--r--nova/test.py31
-rw-r--r--nova/tests/test_skip_examples.py37
2 files changed, 68 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."""
diff --git a/nova/tests/test_skip_examples.py b/nova/tests/test_skip_examples.py
new file mode 100644
index 000000000..dfbaac74b
--- /dev/null
+++ b/nova/tests/test_skip_examples.py
@@ -0,0 +1,37 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+
+# Copyright 2010 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import os
+
+from nova import test
+
+
+class ExampleSkipTestCase(test.TestCase):
+ @test.skip_test("testing skipping")
+ def test_skip_test(self):
+ x = 1
+
+ @test.skip_if(os.getenv("USER"),
+ "Skiping -- Environment variable USER exists")
+ def test_skip_if_env_user_exists(self):
+ x = 1
+
+ @test.skip_unless(os.getenv("BLAH"),
+ "Skipping -- Environment variable BLAH does not exist")
+ def test_skip_unless_env_blah_exists(self):
+ x = 1