Francois Gouget : winetest: Fail tests units that spam the test report.

Alexandre Julliard julliard at winehq.org
Mon Feb 12 12:52:26 CST 2018


Module: tools
Branch: master
Commit: 0aa7f8d0d9c6b5dad1076553fffdf1078886784b
URL:    https://source.winehq.org/git/tools.git/?a=commit;h=0aa7f8d0d9c6b5dad1076553fffdf1078886784b

Author: Francois Gouget <fgouget at codeweavers.com>
Date:   Mon Feb 12 00:59:49 2018 +0100

winetest: Fail tests units that spam the test report.

To not exceed the maximum report size, each test unit must print less
than 2.5KB of traces on average. So report tests that hog more than
10 times that.

Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 winetest/dissect       | 10 +++++++++-
 winetest/winetest.conf |  3 +++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/winetest/dissect b/winetest/dissect
index 4cb31b0..9635f0a 100755
--- a/winetest/dissect
+++ b/winetest/dissect
@@ -48,7 +48,7 @@ sub BEGIN
     }
     unshift @INC, $1 if ($0 =~ m=^(/.*)/[^/]+$=);
 }
-use vars qw/$workdir $gitdir $gitweb $maxmult $maxuserskips $maxfailedtests $maxfilesize $acceptprediluvianwin/;
+use vars qw/$workdir $gitdir $gitweb $maxmult $maxuserskips $maxfailedtests $maxunitsize $maxfilesize $acceptprediluvianwin/;
 require "winetest.conf";
 
 my $name0=$0;
@@ -435,6 +435,7 @@ while ($line = <IN> || "")
 #
 
 my ($dll, $unit, $source, $rev, $result) = ("", "", "");
+my $unitsize = 0;
 my ($failures, $todo, $skipped) = (0, 0, 0);
 my ($s_failures, $s_todo, $s_skipped, $s_total) = (0, 0, 0, 0);
 my (%pids, $rc, $summary, $broken);
@@ -523,6 +524,11 @@ sub close_test_unit($)
     $todo ||= $s_todo;
     $skipped ||= $s_skipped;
 
+    if ($unitsize > $maxunitsize)
+    {
+        add_test_line("end", "The test prints too much data ($unitsize bytes)");
+        $extra_failures++;
+    }
     if (!$broken and defined $rc)
     {
         # Check the exit code, particularly against failures reported
@@ -563,6 +569,7 @@ sub close_test_unit($)
     }
 
     $dll = $unit = "";
+    $unitsize = 0;
     $failures = $todo = $skipped = 0;
     $s_failures = $s_todo = $s_skipped = $s_total = 0;
     $extra_failures = $broken = 0;
@@ -572,6 +579,7 @@ sub close_test_unit($)
 
 $line =~ /^Test output:/ or mydie "no test header: $line";
 while ($line = <IN>) {
+    $unitsize += length($line);
     next if ($line =~ /^\s*$/);
     chomp $line;
     $line =~ s/\r+$//;
diff --git a/winetest/winetest.conf b/winetest/winetest.conf
index ba15514..84824a2 100644
--- a/winetest/winetest.conf
+++ b/winetest/winetest.conf
@@ -17,6 +17,9 @@ $maxfailedtests = 50;
 # Whether to accept test results from Win9x / NT4 versions
 $acceptprediluvianwin = 0;
 
+# Maximum amount of traces for a test unit
+$maxunitsize = 32 * 1024;
+
 # Maximum size of the report file
 # This should be in line with programs\winetest\send.c
 $maxfilesize = 1.5 * 1024 * 1024;




More information about the wine-cvs mailing list