Corrected the skipIfDBFeature and skipUnlessDBFeature decorators to actually *run* the tests they decorate. Thanks to Alex for the report and patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@14243 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
cd63ce077d
commit
400125d718
|
@ -576,13 +576,16 @@ class TestCase(TransactionTestCase):
|
||||||
connection.close()
|
connection.close()
|
||||||
|
|
||||||
def _deferredSkip(condition, reason):
|
def _deferredSkip(condition, reason):
|
||||||
def decorator(test_item):
|
def decorator(test_func):
|
||||||
if not (isinstance(test_item, type) and issubclass(test_item, TestCase)):
|
if not (isinstance(test_func, type) and issubclass(test_func, TestCase)):
|
||||||
@wraps(test_item)
|
@wraps(test_func)
|
||||||
def skip_wrapper(*args, **kwargs):
|
def skip_wrapper(*args, **kwargs):
|
||||||
if condition():
|
if condition():
|
||||||
raise unittest.SkipTest(reason)
|
raise unittest.SkipTest(reason)
|
||||||
|
return test_func(*args, **kwargs)
|
||||||
test_item = skip_wrapper
|
test_item = skip_wrapper
|
||||||
|
else:
|
||||||
|
test_item = test_func
|
||||||
test_item.__unittest_skip_why__ = reason
|
test_item.__unittest_skip_why__ = reason
|
||||||
return test_item
|
return test_item
|
||||||
return decorator
|
return decorator
|
||||||
|
|
|
@ -1,9 +1,23 @@
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
from django.test import TestCase, skipUnlessDBFeature, skipIfDBFeature
|
||||||
|
|
||||||
|
|
||||||
if sys.version_info >= (2, 5):
|
if sys.version_info >= (2, 5):
|
||||||
from python_25 import AssertNumQueriesTests
|
from python_25 import AssertNumQueriesTests
|
||||||
|
|
||||||
|
|
||||||
|
class SkippingTestCase(TestCase):
|
||||||
|
def test_skip_unless_db_feature(self):
|
||||||
|
"A test that might be skipped is actually called."
|
||||||
|
# Total hack, but it works, just want an attribute that's always true.
|
||||||
|
@skipUnlessDBFeature("__class__")
|
||||||
|
def test_func():
|
||||||
|
raise ValueError
|
||||||
|
|
||||||
|
self.assertRaises(ValueError, test_func)
|
||||||
|
|
||||||
|
|
||||||
__test__ = {"API_TEST": r"""
|
__test__ = {"API_TEST": r"""
|
||||||
# Some checks of the doctest output normalizer.
|
# Some checks of the doctest output normalizer.
|
||||||
# Standard doctests do fairly
|
# Standard doctests do fairly
|
||||||
|
|
Loading…
Reference in New Issue