summaryrefslogtreecommitdiff
path: root/numpy/testing/tests
diff options
context:
space:
mode:
authorAlan McIntyre <alan.mcintyre@local>2009-02-05 20:11:40 +0000
committerAlan McIntyre <alan.mcintyre@local>2009-02-05 20:11:40 +0000
commitaeb090d5f7081a166357fa850950da89feb25e97 (patch)
tree394185643a227b2b23fdbeddb575d5720bfa4ed5 /numpy/testing/tests
parent911e94dd0a64adae9fb2057fb0210e512a9b7d4a (diff)
downloadnumpy-aeb090d5f7081a166357fa850950da89feb25e97.tar.gz
Issue #957:
- Fix problems with test decorators when used on test generators. - The skip/fail arguments for skipif and knownfailureif can now be either a bool or a callable that returns a bool. - Added tests for the test decorators.
Diffstat (limited to 'numpy/testing/tests')
-rw-r--r--numpy/testing/tests/test_decorators.py156
1 files changed, 156 insertions, 0 deletions
diff --git a/numpy/testing/tests/test_decorators.py b/numpy/testing/tests/test_decorators.py
new file mode 100644
index 000000000..504971e61
--- /dev/null
+++ b/numpy/testing/tests/test_decorators.py
@@ -0,0 +1,156 @@
+import numpy as np
+from numpy.testing import *
+from numpy.testing.noseclasses import KnownFailureTest
+import nose
+
+def test_slow():
+ @dec.slow
+ def slow_func(x,y,z):
+ pass
+
+ assert(slow_func.slow)
+
+def test_setastest():
+ @dec.setastest()
+ def f_default(a):
+ pass
+
+ @dec.setastest(True)
+ def f_istest(a):
+ pass
+
+ @dec.setastest(False)
+ def f_isnottest(a):
+ pass
+
+ assert(f_default.__test__)
+ assert(f_istest.__test__)
+ assert(not f_isnottest.__test__)
+
+class DidntSkipException(Exception):
+ pass
+
+def test_skip_functions_hardcoded():
+ @dec.skipif(True)
+ def f1(x):
+ raise DidntSkipException
+
+ try:
+ f1('a')
+ except DidntSkipException:
+ raise Exception('Failed to skip')
+ except nose.SkipTest:
+ pass
+
+ @dec.skipif(False)
+ def f2(x):
+ raise DidntSkipException
+
+ try:
+ f2('a')
+ except DidntSkipException:
+ pass
+ except nose.SkipTest:
+ raise Exception('Skipped when not expected to')
+
+
+def test_skip_functions_callable():
+ def skip_tester():
+ return skip_flag == 'skip me!'
+
+ @dec.skipif(skip_tester)
+ def f1(x):
+ raise DidntSkipException
+
+ try:
+ skip_flag = 'skip me!'
+ f1('a')
+ except DidntSkipException:
+ raise Exception('Failed to skip')
+ except nose.SkipTest:
+ pass
+
+ @dec.skipif(skip_tester)
+ def f2(x):
+ raise DidntSkipException
+
+ try:
+ skip_flag = 'five is right out!'
+ f2('a')
+ except DidntSkipException:
+ pass
+ except nose.SkipTest:
+ raise Exception('Skipped when not expected to')
+
+
+def test_skip_generators_hardcoded():
+ @dec.knownfailureif(True, "This test is known to fail")
+ def g1(x):
+ for i in xrange(x):
+ yield i
+
+ try:
+ for j in g1(10):
+ pass
+ except KnownFailureTest:
+ pass
+ else:
+ raise Exception('Failed to mark as known failure')
+
+
+ @dec.knownfailureif(False, "This test is NOT known to fail")
+ def g2(x):
+ for i in xrange(x):
+ yield i
+ raise DidntSkipException('FAIL')
+
+ try:
+ for j in g2(10):
+ pass
+ except KnownFailureTest:
+ raise Exception('Marked incorretly as known failure')
+ except DidntSkipException:
+ pass
+
+
+def test_skip_generators_callable():
+ def skip_tester():
+ return skip_flag == 'skip me!'
+
+ @dec.knownfailureif(skip_tester, "This test is known to fail")
+ def g1(x):
+ for i in xrange(x):
+ yield i
+
+ try:
+ skip_flag = 'skip me!'
+ for j in g1(10):
+ pass
+ except KnownFailureTest:
+ pass
+ else:
+ raise Exception('Failed to mark as known failure')
+
+
+ @dec.knownfailureif(skip_tester, "This test is NOT known to fail")
+ def g2(x):
+ for i in xrange(x):
+ yield i
+ raise DidntSkipException('FAIL')
+
+ try:
+ skip_flag = 'do not skip'
+ for j in g2(10):
+ pass
+ except KnownFailureTest:
+ raise Exception('Marked incorretly as known failure')
+ except DidntSkipException:
+ pass
+
+
+if __name__ == '__main__':
+ run_module_suite()
+
+
+
+