File: test_decorators.py

package info (click to toggle)
python-numpy 1%3A1.4.1-5
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 12,736 kB
  • ctags: 14,035
  • sloc: ansic: 80,776; python: 62,482; makefile: 183; fortran: 121; f90: 42; cpp: 28; perl: 19; sh: 15
file content (156 lines) | stat: -rw-r--r-- 3,215 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
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()