summaryrefslogtreecommitdiffstats
path: root/openstack
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-06-05 12:10:26 +0000
committerGerrit Code Review <review@openstack.org>2012-06-05 12:10:26 +0000
commit4620ed9c99572499622421c2db229183f1a0e3d9 (patch)
tree70f448a11e77b46324b1371b668f8170a303ee8d /openstack
parentdfe65cc17b197b3728e114761739cb8be1ec59d2 (diff)
parent874a3dad97b5d02e62d12946b976183f2ac0856d (diff)
downloadoslo-4620ed9c99572499622421c2db229183f1a0e3d9.tar.gz
oslo-4620ed9c99572499622421c2db229183f1a0e3d9.tar.xz
oslo-4620ed9c99572499622421c2db229183f1a0e3d9.zip
Merge "Create testutils with skip decorators."
Diffstat (limited to 'openstack')
-rw-r--r--openstack/common/testutils.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/openstack/common/testutils.py b/openstack/common/testutils.py
new file mode 100644
index 0000000..5c438e3
--- /dev/null
+++ b/openstack/common/testutils.py
@@ -0,0 +1,68 @@
+# 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.
+
+"""Utilities for unit tests."""
+
+import functools
+import nose
+
+
+class skip_test(object):
+ """Decorator that skips a test."""
+ # TODO(tr3buchet): remember forever what comstud did here
+ def __init__(self, msg):
+ self.message = msg
+
+ def __call__(self, func):
+ @functools.wraps(func)
+ def _skipper(*args, **kw):
+ """Wrapped skipper function."""
+ raise nose.SkipTest(self.message)
+ return _skipper
+
+
+class skip_if(object):
+ """Decorator that skips a test if condition is true."""
+ def __init__(self, condition, msg):
+ self.condition = condition
+ self.message = msg
+
+ def __call__(self, func):
+ @functools.wraps(func)
+ def _skipper(*args, **kw):
+ """Wrapped skipper function."""
+ if self.condition:
+ raise nose.SkipTest(self.message)
+ func(*args, **kw)
+ return _skipper
+
+
+class skip_unless(object):
+ """Decorator that skips a test if condition is not true."""
+ def __init__(self, condition, msg):
+ self.condition = condition
+ self.message = msg
+
+ def __call__(self, func):
+ @functools.wraps(func)
+ def _skipper(*args, **kw):
+ """Wrapped skipper function."""
+ if not self.condition:
+ raise nose.SkipTest(self.message)
+ func(*args, **kw)
+ return _skipper