[tools] winetest: Identify and highlight tests with too much output.
Francois Gouget
fgouget at codeweavers.com
Mon Jul 5 11:18:44 CDT 2021
Regular failures are more important so only highlight this problem if
the test has no other issue.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51352
Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
---
The status of old reports can be updated by following the steps below
after applying today's two patches. But that's not a requirement.
* Update the summary.txt files generated by dissect to use the
new big and virus codes.
cd winetest/data
find `pwd`/ -name report -print | \
nice xargs -P8 -n 1 dissect --update
* Generate each build's testresults.txt file with gather:
find `pwd`/ -name total.txt -print | \
while read p; do dirname $p; done | \
nice xargs -P8 -n 1 gather --update
* Generate the new pattern pages with build-patterns:
build-patterns
build-index
The paths to the scripts should be adjusted as appropriate. Also adjust
-P8 for the desired level of parallelism. Here refreshing my
test.winehq.org mirror with -P8 takes under 5 minutes. Since I have the
same set of reports the time should be similar on winehq.org.
---
winetest/build-patterns | 1 +
winetest/dissect | 9 +++++++--
winetest/gather | 12 ++++++++++--
winetest/report.css | 3 +++
4 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/winetest/build-patterns b/winetest/build-patterns
index da7272e56..0b33512a7 100755
--- a/winetest/build-patterns
+++ b/winetest/build-patterns
@@ -934,6 +934,7 @@ my %status2html = (
"skipped" => ["-", "s", "skipped by user request", "", ""],
"crash" => ["C", "C", "crash", "t", ""],
"258" => ["T", "T", "timeout", "t", ""],
+ "big" => ["B", "B", "too much output", "t", ""],
);
# Returns a tuple containing the symbol, CSS class, title, link type and
diff --git a/winetest/dissect b/winetest/dissect
index 33cfb0a56..3f89e1064 100755
--- a/winetest/dissect
+++ b/winetest/dissect
@@ -267,7 +267,7 @@ open IN, "<:raw", $report or mydie "could not open '$report' for reading: $!";
# - <dll> - skipped - - - -
# - <dll> <unit> skipped - - - <source>
# - <dll> <unit> failed (258|crash) - - <source>
-# - <dll> <unit> <total> <todo> <failures> <skipped> <source>
+# - <dll> <unit> <total> <todo> (<failures>|big) <skipped> <source>
open SUM, ">$tmpdir/summary.txt" or mydie "could not open '$tmpdir/summary.txt' for writing: $!";
my $line = <IN> || "";
@@ -599,10 +599,12 @@ sub close_test_unit($)
$todo ||= $s_todo;
$skipped ||= $s_skipped;
+ my $toobig;
if ($unitsize > $maxunitsize)
{
add_test_line("end", "The test prints too much data ($unitsize bytes)");
$extra_failures++;
+ $toobig = 1;
}
if (!$broken and defined $rc)
{
@@ -637,7 +639,10 @@ sub close_test_unit($)
}
$failures += $extra_failures;
- $summary = "$s_total $todo $failures $skipped" if (!defined $summary);
+ if (!defined $summary)
+ {
+ $summary = "$s_total $todo " . (($toobig and $failures == 1) ? "big" : $failures) . " $skipped";
+ }
print SUM "- $dll $unit $summary $source\n";
$testbox->{pattern} = "$dll:$unit" if ($failures);
if ($failures && ++$failed_units > $maxfailedtests) {
diff --git a/winetest/gather b/winetest/gather
index abb339598..e6d5a9a30 100755
--- a/winetest/gather
+++ b/winetest/gather
@@ -356,7 +356,12 @@ foreach my $file (glob "$builddir/*/summary.txt") {
skips => [ 1, 1 ]
};
} else {
- $report->{$testname} = { status => "run",
+ my $status = "run";
+ if ($errors eq "big") {
+ $status = "big";
+ $errors = 1;
+ }
+ $report->{$testname} = { status => $status,
count => [ $count, $count ],
errors => [ $errors, $errors ],
todos => [ $todos, $todos ],
@@ -409,7 +414,8 @@ sub merge_status($$)
} elsif ($group_result->{status} eq "run" and
$result->{status} =~ /^missing/) {
; # Nothing to do
- } elsif ($group_result->{status} ne $result->{status}) {
+ } elsif (($group_result->{status} =~ /^(?:run|big)$/) ne
+ ($result->{status} =~ /^(?:run|big)$/)) {
$group_result->{status} = "mixed";
}
@@ -640,6 +646,7 @@ sub get_result_title($$)
if ($result->{status} eq "mixed") { return "Mixed results"; }
if ($result->{status} eq "crash") { return "Test crashed"; }
if ($result->{status} eq "258") { return "Test timed out"; }
+ if ($result->{status} eq "big") { return "Too much output"; }
if ($result->{status} eq "skipped") { return "Skipped by user request"; }
my ($dll, $unit) = split(/:/, $testname);
@@ -725,6 +732,7 @@ sub singletest($$$) {
skipped => "skipped",
native => "native",
crash => "crashed",
+ big => "too big",
258 => "timeout",
mixed => "mixed",
);
diff --git a/winetest/report.css b/winetest/report.css
index b558c6ff7..bd8b73fec 100644
--- a/winetest/report.css
+++ b/winetest/report.css
@@ -92,6 +92,9 @@ div.pattern :hover { color: black; text-decoration: underline; }
background-color: #ff5555;
}
/* .patF failure(s) */
+.patB { /* too much output */
+ background-color: #ffffb3;
+}
/* .patn not run for an unknown reason */
/* .patm missing dll */
.pate { /* missing entrypoint */
--
2.20.1
More information about the wine-devel
mailing list