write-after-clear: Enable variable z-offset probes
[piglit.git] / templates / index.mako
blob688533b6f531d3fbf6384833b671d8a388cf9ecf
1 <%!
2   import os
3   import posixpath  # this must be posixpath, since we want /'s not \'s
4   import re
6   from framework import grouptools, status
8   def group_changes(test, current):
9       group = grouptools.groupname(test)
10       common = grouptools.commonprefix((current, group))
12       common = grouptools.split(common)
13       open = grouptools.split(group)[len(common):]
14       close = grouptools.split(current)[len(common):]
16       return open, close
18   def group_result(result, group):
19       """Get the worst status in a group."""
20       if group not in result.totals:
21           return status.NOTRUN
23       return max([status.status_lookup(s) for s, v in
24                   result.totals[group].items() if v > 0])
26   def group_fraction(result, group):
27       """Get the fraction value for a group."""
28       if group not in result.totals:
29           return '0/0'
31       num = 0
32       den = 0
33       for k, v in result.totals[group].items():
34           if v > 0:
35               s = status.status_lookup(k)
36               num += s.fraction[0] * v
37               den += s.fraction[1] * v
39       return '{}/{}'.format(num, den)
42   def escape_filename(key):
43       """Avoid reserved characters in filenames."""
44       return re.sub(r'[<>:"|?*#]', '_', key)
47   def escape_pathname(key):
48       """ Remove / and \\ from names """
49       return re.sub(r'[/\\]', '_', key)
52   def normalize_href(href):
53       """Force backward slashes in URLs."""
54       return href.replace('\\', '/')
57 <!DOCTYPE html>
58 <html lang="en">
59   <head>
60     <meta charset="UTF-8">
61     <title>Result summary</title>
62     <link rel="stylesheet" href="index.css">
63   </head>
64   <body>
65     <h1>Result summary</h1>
66     <p>Currently showing: ${page}</p>
67     <p>Show:
68       % if page == 'all':
69         all
70       % else:
71         <a href="index.html">all</a>
72       % endif
73       % for i in pages:
74         % if i == page:
75           | ${i}
76         % else:
77           | <a href="${i}.html">${i}</a>
78         % endif
79       % endfor
80     </p>
81     <table>
82       <colgroup>
83         ## Name Column
84         <col />
86         ## Status columns
87         ## Create an additional column for each summary
88         % for _ in range(len(results.results)):
89         <col />
90         % endfor
91       </colgroup>
92       <tr>
93         <th/>
94         % for res in results.results:
95           <th class="head"><b>${res.name}</b><br>\
96           (<a href="${normalize_href(os.path.join(escape_pathname(res.name), 'index.html'))}">info</a>)</th>
97         % endfor
98       </tr>
99       <tr>
100         <td class="head"><b>all</b></td>
101         % for res in results.results:
102           <td class="${group_result(res, 'root')}">
103             <b>${group_fraction(res, 'root')}</b>
104           </td>
105         % endfor
106       </tr>
107       <%
108         depth = 1
109         group = ''
110       %>
111       % for test in sorted(getattr(results.names, page if page == 'all' else 'all_' + page)):
112         <%
113           open, close = group_changes(test, group)
114           depth -= len(close)  # lower the indent for the groups we're not using
115           if close:
116             # remove the groups we're not using from current
117             group = grouptools.split(group)[:-len(close)]
118             if group:
119               group = grouptools.join(*group)
120             else:
121               group = ''
122         %>
123         <tr>
124         % if open:
125           % for elem in open:
126             <% group = grouptools.join(group, elem) %>
127             ## Add the left most column, the name of the group
128             <td>
129               <div class="head" style="margin-left: ${depth * 1.75}em">
130                 <b>${elem | h}</b>
131               </div>
132             </td>
133             ## add each group's totals
134             % for res in results.results:
135               <td class="${group_result(res, group)}">
136                 <b>${group_fraction(res, group)}</b>
137               </td>
138             % endfor
139             <% depth += 1 %>
140             </tr><tr>
141           % endfor
142         % endif
144         <td>
145           <div class="group" style="margin-left: ${depth * 1.75}em">
146             ${grouptools.testname(test) | h}
147           </div>
148         </td>
149         % for res in results.results:
150           <%
151             # Get the raw result, if it's none check to see if it's a subtest, if that's still None
152             # then declare it not run
153             # This very intentionally uses posix path, we're generating urls, and while
154             # some windows based browsers support \\ as a url separator, *nix systems do not,
155             # which would make a result generated on windows non-portable
156             raw = res.tests.get(test)
157             if raw is not None:
158               result = raw.result
159               href = normalize_href(posixpath.join(escape_pathname(res.name),
160                                                    escape_filename(test)))
161             else:
162               raw = res.tests.get(grouptools.groupname(test))
163               name = grouptools.testname(test)
164               if raw is not None and name in raw.subtests:
165                 result = raw.subtests[name]
166                 href = normalize_href(posixpath.join(escape_pathname(res.name),
167                                                      escape_filename(grouptools.groupname(test))))
168               else:
169                 result = status.NOTRUN
170             del raw  # we don't need this, so don't let it leak
171           %>
172           <td class="${str(result)}">
173           % if str(result) not in exclude and result is not status.NOTRUN:
174             <a href="${href}.html">
175               ${str(result)}
176             </a>
177           % else:
178             ${str(result)}
179           % endif
180           </td>
181         % endfor
182         </tr>
183       % endfor
184     </table>
185   </body>
186 </html>