html: Use CSS for indenting table rows rather than colspan.

Previously, we indented groups of tests by adding 10 columns
of whitespace to the table and adding colspan.  This is pretty
ugly; we really should use CSS for things like this.

The new CSS-based approach should work with deeper nesting levels,
and simplifies the tables.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Dylan Baker <baker.dylan.c@gmail.com>
html: Use CSS3 for zebra-striping the tables.

Most browsers support the :nth-child selector by now, which allows us to
zebra-stripe the tables in CSS rather than making the python code
annotate every row with an 'a' or 'b' class.

While we're at it, stripe the pass/fail/crash results too.  Based on
some CSS fragments, this was the intent all along, but didn't work.

This also changes the striping slightly: it now stripes purely based on
whether the row is even/odd, rather than striping on a per-group basis.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Dylan Baker <baker.dylan.c@gmail.com>
html: Remove the index_groupgroup template.

It was entirely empty.

Reviewed-by: Dylan Baker <baker.dylan.c@gmail.com>
html: Rework colgroup generation.

There's no need to specify width="50pt" on every <col/>; we can easily
specify a width for all but the first column with CSS3.

At that point, using a template file that contains only <col/> seems
absurd; just repeat that the right number of times in the python code.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Dylan Baker <baker.dylan.c@gmail.com>
index.css: Change column width from 50pt to 70pt

This accommodates the increase in the total number of tests, so that the
column default width is great enough for the 'all' category, which is
now 5 digits over 5 digits, a total of 11 characters.

Signed-off-by: Dylan Baker <baker.dylan.c@gmail.com>
html: Use the vastly faster "fixed" table layout algorithm.

The usual "auto" table layout algorithm makes the browser look at the
contents of each row in the table in order to determine the layout.  We
have 10,000 rows.  This is insanely expensive.

The "fixed" algorithm just uses the <col/> info, and possibly the first
row.  This works out just fine.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Dylan Baker <baker.dylan.c@gmail.com>
html: Escape test names in the summary page.

Characters like & and < are need to be escaped in proper HTML/XML.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Dylan Baker <baker.dylan.c@gmail.com>
html: Use XHTML 1.0 Strict.

We weren't specifying a DTD, which made validator.w3.org angry.  There's
no reason not to be strict or use SGML-based HTML, so go with XHTML.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Dylan Baker <baker.dylan.c@gmail.com>
framework/summary.py: Replace Section heading with docstrings

The sections headings are not really that useful, but they might as well
be kept as class level docstrings instead of being thrown away.

Signed-off-by: Dylan Baker <baker.dylan.c@gmail.com>
framework/summary.py: Adds new summary class and two support classes

This new summary class (currently NewSummary), is a complete redesign of
the summary generation system. Much of the code in summary was not
commented, and also not clear as to what it was doing, making it very
difficult to maintain and even more difficult to improve. The other
problem with the code was architecturally it was clobbered together,
doing some of the work in the summary.py file, and some of the work in
the piglit-summary-html.py file.

The new summary class does all of it's work in the summary.py file, and
from an API point of view, in one class. The summary class uses it's
constructor to build lists of passes, failures, skips, problems, etc.
and then uses methods to generate output. The reference implementation
of that kind of method is for generating HTML, but in theory it could be
used to generate anything: XML, CSV lists, printed lists ala
piglit-summary, etc.

Also updates the .gitignore file to ignore some generated content
created by this class.

Signed-off-by: Dylan Baker <baker.dylan.c@gmail.com>
templates: adds mako templates for new summary code

Adds the actual templates used to by the new mako based summary code.

Signed-off-by: Dylan Baker <baker.dylan.c@gmail.com>
piglit-summary-py: Use the new summary class to generate HTML

Replaces all of the original summary generation code with new summary
generation code.

Signed-off-by: Dylan Baker <baker.dylan.c@gmail.com>
templates: Remove old HTML templates

These template files are no longer used, and so they should be removed.

Signed-off-by: Dylan Baker <baker.dylan.c@gmail.com>
framework/summary.py: Build subdirectories for subtest result pages

This patch changes the generation of HTML summaries such that test
result pages are put in sub-directories (ie. spec/GLSL 1.0/foo/bar.html)
Otherwise 10,000+ HTML files are placed in a single folder, which is
really ugly and hard to find.

Signed-off-by: Dylan Baker <baker.dylan.c@gmail.com>