annotate doc/unittesttable.py @ 328:0bb16d2a5699

Added cool sphinx plugin for creation of unittest result table
author Windel Bouwman
date Tue, 04 Feb 2014 09:01:11 +0100
parents
children
rev   line source
328
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
1 from docutils import nodes
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
2 from sphinx.util.compat import Directive
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
3 import unittest
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
4
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
5
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
6 class RecordingTestResult(unittest.TestResult):
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
7 def __init__(self):
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
8 super().__init__()
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
9 self.successfull_tests = []
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
10 self.failed_tests = []
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
11 self.skipped_tests = []
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
12
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
13 def addSuccess(self, tst):
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
14 super().addSuccess(tst)
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
15 self.successfull_tests.append(tst)
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
16
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
17 def addFailure(self, tst, err):
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
18 super().addFailure(tst, err)
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
19 self.failed_tests.append(tst)
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
20 def addError(self, tst, err):
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
21 super().addError(tst, err)
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
22 self.failed_tests.append(tst)
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
23 def addSkip(self, tst, reason):
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
24 super().addSkip(tst, reason)
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
25 self.skipped_tests.append(tst)
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
26
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
27 def makeTable(rows):
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
28 # Buildup table:
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
29 table = nodes.table()
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
30 group = nodes.tgroup()
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
31 group += nodes.colspec('', colwidth=100)
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
32 group += nodes.colspec('', colwidth=50)
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
33 table += group
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
34 tbody = nodes.tbody('')
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
35 group += tbody
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
36 for c1, c2 in rows:
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
37 row = nodes.row('')
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
38 row += nodes.entry('', nodes.paragraph('', c1))
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
39 row += nodes.entry('', nodes.paragraph('', c2))
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
40 tbody += row
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
41 return table
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
42
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
43 class TestResults(Directive):
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
44 required_arguments = 1
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
45 optional_arguments = 0
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
46 option_spec = {}
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
47 has_content = False
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
48 node_class = None
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
49
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
50 def run(self):
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
51 # Run unit test:
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
52 tl = unittest.TestLoader()
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
53 result = RecordingTestResult()
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
54 tests = tl.discover('../test')
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
55 tests.run(result)
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
56 para = nodes.paragraph()
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
57 para += nodes.Text('Unit test results:')
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
58 res = []
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
59 for s in result.successfull_tests:
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
60 res.append((str(s), 'OK'))
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
61 for s in result.skipped_tests:
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
62 res.append((str(s), 'SKIP'))
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
63 for s in result.failed_tests:
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
64 res.append((str(s), 'FAIL'))
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
65 table = makeTable(res)
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
66
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
67 return [para, table]
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
68
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
69 def setup(app):
0bb16d2a5699 Added cool sphinx plugin for creation of unittest result table
Windel Bouwman
parents:
diff changeset
70 app.add_directive('testresults', TestResults)