Hello guys, some machinery is already in place (http://afavant.elte.hu/~wferi/wine). Actually I am not sure we need a database or so. What I have in mind:
Whenever somebody compiles the tests (with a Samba mount it does not matter whether cross- os MSVC) s/he runs the ziptests Bash script to produce a tests.zip, and we collect it somewhere tagged by the date, eg. 20030828. People download it, do their job, and send the report to the list. If the report is identical (modulo a couple of lines which contain the current working directory and similar -- just egrep -v it) to another for the same build and Windows version, we just acknowledge the name. If it is always the case, then forget it. If not, we may need a subarchitecture or a better egrep pattern, this is manual. For a new set of data, we run the dissect Perl script, which gives a summary and one report file for each test. No need to rerun this ever. The gather script assembles the summaries for the various architectures into a summary table, with links to the small report files. Rerun when a new architecture is added for this build. We can have on directory for each build tag (like 20030828), and separate directories for each architecture in them. gather dissect works here works here ,- win95 | ,- 20030828 -+-- nt4.0 | | | `- XP index.html -+ | ,- win98 | | `- 20030914 -+-- nt4.0 | `- XP We can also have a 'latest' directory which simply links to the appropriate architecture subdirectories, and we can also gather a summary there. All the pages are static, and you can select on the main page. Find the scripts attached. I do not really want to go further until I know where/how they will run. The desing is not finished :) Feri.
#!/usr/bin/perl -w $dummy=""; while (<>) { ($dll,$dummy,$test) = split /[.:\s]/; if (/not compiled/) { @res=(); } else { open OUT,"> ${dll}_${test}.txt"; TEST: while (<>) { print OUT; if (/^$test: (\d+) tests executed, (\d+) marked as todo, (\d+)/) { @res=($1,$2,$3); last TEST; } } close OUT; } print "$dll:$test @res\n" }
#!/usr/bin/perl -w # # Parameters: architecture names. The program loads the summary.txt # files from the corresponding (lowercase) directories. # # Copyright (C) 2003 Ferenc Wagner # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA foreach $arch (@ARGV) { $archs{$arch}->{reports} = 1; open ARCH, "< \L$arch\E.txt" or die "Can't open \L$arch\E.txt!"; while (<ARCH>) { ($test,@results) = split; push @{$alltests{$test}},($arch); $archs{$arch}->{$test} = [EMAIL PROTECTED]; } close ARCH; } print <<"EOF"; <!doctype html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>Tests results</title> <link href="../default.css" rel="stylesheet" type="text/css"> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <meta name="Author" content="Ferenc Wágner"> </head> <body> <table> <thead> <tr> <th>dll:test</th> EOF while (($arch,$tests) = each %archs) { print <<"EOF"; <th colspan=3><a href="\L$arch\E/results.txt\">$arch</a> (<a href="\L$arch\E/reporters.txt">$tests->{reports}</a>)</th> EOF } print <<"EOF"; </tr> </thead> <tbody> EOF foreach (sort (keys %alltests)) { print <<"EOF"; <tr> <td class="test">$_</td> EOF while (($arch,$tests) = each %archs) { @results = @{$tests->{$_}}; if (! @results) { print <<"EOF"; <td colspan=3>not compiled</td> EOF } else { if ($results[2]==0) { print <<"EOF"; <td class="pass">$results[0]</td> <td class="pass">$results[1]</td> <td class="pass">$results[2]</td> EOF } else { ($file = "\L$arch\E/".$_.".txt") =~s/:/_/; print <<"EOF"; <td class="fail">$results[0]</td> <td class="fail">$results[1]</td> <td class="fail"><a href="$file">$results[2]</a></td> EOF } } } } print <<"EOF"; </tr> </tbody> </table> </body> </html> EOF