# -*- coding: utf-8 -*- from __future__ import absolute_import from unittest import TestCase from functools import wraps from nose.plugins.skip import SkipTest from nltk.util import py26 def skip(reason): """ Unconditionally skip a test. """ def decorator(test_item): is_test_class = isinstance(test_item, type) and issubclass(test_item, TestCase) if is_test_class and py26(): # Patch all test_ methods to raise SkipText exception. # This is necessary for Python 2.6 because its unittest # doesn't understand __unittest_skip__. for meth_name in (m for m in dir(test_item) if m.startswith('test_')): patched_method = skip(reason)(getattr(test_item, meth_name)) setattr(test_item, meth_name, patched_method) if not is_test_class: @wraps(test_item) def skip_wrapper(*args, **kwargs): raise SkipTest(reason) skip_wrapper.__name__ = test_item.__name__ test_item = skip_wrapper test_item.__unittest_skip__ = True test_item.__unittest_skip_why__ = reason return test_item return decorator def skipIf(condition, reason): """ Skip a test if the condition is true. """ if condition: return skip(reason) return lambda obj: obj