~divmod-dev/divmod.org/indistinct-2858-2

493 by root
1
"""A very simple test harness for running nevow tests.
2
3
If twisted is installed, this will just run trial.
4
5
If not, it will run the tests which can pass without twisted being installed,
6
using the stdlib unittest module.
7
"""
8
9
import sys, os, unittest
10
11
skips = []
12
13
try:
14
    import twisted
15
    sys.exit(os.system('trial -v nevow.test formless.test'))
16
except ImportError:
17
    skips.extend([
18
        'nevow.test.test_disktemplate',
19
        'nevow.test.test_later',
20
        'formless.test.test_freeform'])
21
22
23
import nevow.test, formless.test
24
25
def getModuleNames(mod):
26
    for name in os.listdir(os.path.split(mod.__file__)[0]):
27
        if not name.startswith('__') and name.endswith('.py'): yield name[:-3]
28
29
names = []
30
mods = [
31
    nevow.test,
32
    formless.test
33
]
34
35
for mod in mods:
36
    names.extend(['.'.join([mod.__name__, x]) for x in getModuleNames(mod)])
37
38
names = filter(lambda x: x not in skips, names)
39
40
41
class SkipTestLoader(unittest.TestLoader):
42
    def getTestCaseNames(self, testCaseClass):
43
        names = unittest.TestLoader.getTestCaseNames(self, testCaseClass)
44
        for n in names:
45
            meth = getattr(testCaseClass, n)
46
            if hasattr(meth, 'skip'): print "SKIP:", testCaseClass.__name__, n, '\n\t', meth.skip
47
            elif hasattr(meth, 'todo'): print "TODO:", testCaseClass.__name__, n, '\n\t', meth.todo
48
            else: yield n
49
50
51
52
suite = SkipTestLoader().loadTestsFromNames(names)
53
result = unittest.TextTestRunner().run(suite)
54
sys.exit(not result.wasSuccessful())
55