Source code for heat.tests.utils

# vim: tabstop=4 shiftwidth=4 softtabstop=4

#    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 nose.plugins.skip as skip


[docs]class skip_test(object): """Decorator that skips a test.""" def __init__(self, msg): self.message = msg def __call__(self, func): def _skipper(*args, **kw): """Wrapped skipper function.""" raise skip.SkipTest(self.message) _skipper.__name__ = func.__name__ _skipper.__doc__ = func.__doc__ return _skipper
[docs]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): def _skipper(*args, **kw): """Wrapped skipper function.""" if self.condition: raise skip.SkipTest(self.message) func(*args, **kw) _skipper.__name__ = func.__name__ _skipper.__doc__ = func.__doc__ return _skipper
[docs]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): def _skipper(*args, **kw): """Wrapped skipper function.""" if not self.condition: raise skip.SkipTest(self.message) func(*args, **kw) _skipper.__name__ = func.__name__ _skipper.__doc__ = func.__doc__ return _skipper
[docs]def stack_delete_after(test_fn): """ Decorator which calls test class self.stack.delete() to ensure tests clean up their stacks regardless of test success/failure """ def wrapped_test(test_cls): print "Running test", test_fn.__name__ try: test_fn(test_cls) finally: try: test_cls.stack.delete() except AttributeError: print "Could not delete stack (already deleted?)" print "Exited", test_fn.__name__ return wrapped_test