WineHQ: winetest refinements
Ferenc Wagner
wferi at afavant.elte.hu
Sat Mar 13 18:32:48 CST 2004
ChangeLog:
* dissect, winetest.conf: Make maximum number of
coinciding reports configurable.
* dissect: Open the report files in :raw mode to avoid
UTF-8 interpretation.
* dissect: Skip blank lines between the subtest reports.
* dissect: Add more error checking.
* winetest.cgi: Do a rough check on the submitted file
before moving it into the queue.
* winetest.cgi: Create queue directory with mode 0777.
* winetest.cgi: Consistent name: winetest, in singular.
Similar modification is needed in the program, too.
Feri.
Index: dissect
===================================================================
RCS file: /home/wine/tools/winetest/dissect,v
retrieving revision 1.2
diff -u -r1.2 dissect
--- dissect 20 Feb 2004 17:15:23 -0000 1.2
+++ dissect 14 Mar 2004 00:28:57 -0000
@@ -29,7 +29,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
use strict;
-use vars qw/$builds $queuedir $datadir/;
+use vars qw/$builds $queuedir $datadir $maxmult/;
require "winetest.conf";
my $fileversion = 2;
@@ -55,8 +55,8 @@
($tmpdir = $report) =~ s|^(.+)/report$|$1|;
my $tmpfile = "$tmpdir/dissect.tmp";
-open IN, "<$report";
-open SUM, ">$tmpdir/summary.txt";
+open IN, "<:raw", $report or mydie "can't read $report: $!";
+open SUM, ">$tmpdir/summary.txt" or mydie "can't write $tmpdir/summary.txt: $!";
$_ = <IN>;
/^Version (\d+)\r?$/ or mydie "no version header: $_";
@@ -132,9 +132,10 @@
$unit = undef; # state machine starts
while (<IN>) {
if (!defined $unit) { # new test
- /([_.a-z0-9]+):([_a-z]+) start\r?$/ or mydie "no start line: $_";
+ next if /^\s*$/;
+ /([_.a-z0-9]+):([_a-z]+) start\r?$/ or mydie "no start line:$.: $_";
($unit,$test) = ($1,$2);
- open OUT, ">$tmpfile" or mydie "can't open $tmpfile: $!\n";
+ open OUT, ">:raw", $tmpfile or mydie "can't open $tmpfile: $!\n";
} elsif (s/$unit:$test done \(.*\)\r?$//) {
chomp; # current test failed
$result = "failed";
@@ -175,7 +176,7 @@
$try = 0;
while (!rename $tmpdir, $dir) {
$!{ENOTEMPTY} or mydie "can't rename $tmpdir to $dir: $!\n";
- ++$try < 10 or mydie "too many submissions for $dirbase\n";
+ ++$try < $maxmult or mydie "more than $maxmult submissions for $dirbase\n";
$dir = "${dirbase}_$try";
}
if (!-e "$builddir/outdated") {
Index: winetest.cgi
===================================================================
RCS file: /home/wine/tools/winetest/winetest.cgi,v
retrieving revision 1.3
diff -u -r1.3 winetest.cgi
--- winetest.cgi 26 Feb 2004 20:19:47 -0000 1.3
+++ winetest.cgi 14 Mar 2004 00:28:57 -0000
@@ -31,10 +31,17 @@
my $name = param ("reportfile");
my $error = cgi_error ();
+sub test_reportfile {
+ my $buffer;
+ my $fh = upload "reportfile";
+ read $fh, $buffer, 64;
+ $buffer =~ /^Version \d+\r?\nTests from build /s;
+}
+
sub move_file {
my $orig = tmpFileName (shift);
my $tmpdir = tempdir ("repXXXXX", DIR=>$ENV{TMPDIR});
- chmod 0777&~umask, $tmpdir;
+ chmod 0777, $tmpdir;
chmod 0666&~umask, $orig;
my $size = -s $orig;
(rename $orig, "$tmpdir/report")?
@@ -44,12 +51,16 @@
# Invoked by winetest
-if (user_agent ("Winetests Shell")) {
+if (user_agent ("Winetest Shell")) {
print header ("text/plain");
if ($error) {
print "Error: $error\n";
} elsif ($name) {
- print move_file $name;
+ if (test_reportfile $name) {
+ print move_file $name;
+ } else {
+ print "Error: submission corrupted";
+ }
}
exit;
}
@@ -57,8 +68,8 @@
# Invoked by a browser
print header,
- start_html ("Winetests report upload"),
- h1 ("Winetests report upload"),
+ start_html ("Winetest report upload"),
+ h1 ("Winetest report upload"),
start_multipart_form (),
"The name of the report file:",
filefield ("reportfile","c:\\temp\\res",45),
@@ -71,6 +82,10 @@
print h2 ("Error during file upload ($name)"),
strong ($error);
} elsif ($name) {
- print h2 move_file $name;
+ if (test_reportfile $name) {
+ print h2 move_file $name;
+ } else {
+ print h2 "Error: submission corrupted";
+ }
}
print end_html;
Index: winetest.conf
===================================================================
RCS file: /home/wine/tools/winetest/winetest.conf,v
retrieving revision 1.1
diff -u -r1.1 winetest.conf
--- winetest.conf 19 Feb 2004 22:00:34 -0000 1.1
+++ winetest.conf 14 Mar 2004 00:28:57 -0000
@@ -6,4 +6,7 @@
$queuedir = "$root/queue";
$datadir = "$root/data";
+# Maximum number of reports for one version and tag
+$maxmult = 10;
+
1; # keep require happy
More information about the wine-patches
mailing list