OLD | NEW |
| (Empty) |
1 | |
2 from twisted.web.error import NoResource | |
3 from twisted.web import html | |
4 | |
5 from buildbot.status.web.base import HtmlResource | |
6 | |
7 # /builders/$builder/builds/$buildnum/tests/$testname | |
8 class TestResult(HtmlResource): | |
9 title = "Test Logs" | |
10 | |
11 def __init__(self, name, test_result): | |
12 HtmlResource.__init__(self) | |
13 self.name = name | |
14 self.test_result = test_result | |
15 | |
16 def body(self, request): | |
17 dotname = ".".join(self.name) | |
18 logs = self.test_result.getLogs() | |
19 lognames = logs.keys() | |
20 lognames.sort() | |
21 data = "<h1>%s</h1>\n" % html.escape(dotname) | |
22 for name in lognames: | |
23 data += "<h2>%s</h2>\n" % html.escape(name) | |
24 data += "<pre>" + logs[name] + "</pre>\n\n" | |
25 | |
26 return data | |
27 | |
28 | |
29 # /builders/$builder/builds/$buildnum/tests | |
30 class TestsResource(HtmlResource): | |
31 title = "Test Results" | |
32 | |
33 def __init__(self, build_status): | |
34 HtmlResource.__init__(self) | |
35 self.build_status = build_status | |
36 self.test_results = build_status.getTestResults() | |
37 | |
38 def body(self, request): | |
39 r = self.test_results | |
40 data = "<h1>Test Results</h1>\n" | |
41 data += "<ul>\n" | |
42 testnames = r.keys() | |
43 testnames.sort() | |
44 for name in testnames: | |
45 res = r[name] | |
46 dotname = ".".join(name) | |
47 data += " <li>%s: " % dotname | |
48 # TODO: this could break on weird test names. At the moment, | |
49 # test names only come from Trial tests, where the name | |
50 # components must be legal python names, but that won't always | |
51 # be a restriction. | |
52 url = request.childLink(dotname) | |
53 data += "<a href=\"%s\">%s</a>" % (url, " ".join(res.getText())) | |
54 data += "</li>\n" | |
55 data += "</ul>\n" | |
56 return data | |
57 | |
58 def getChild(self, path, request): | |
59 try: | |
60 name = tuple(path.split(".")) | |
61 result = self.test_results[name] | |
62 return TestResult(name, result) | |
63 except KeyError: | |
64 return NoResource("No such test name '%s'" % html.escape(path)) | |
OLD | NEW |