Nowadays the tests themselves always put the pid on the unhandled exception and test summary lines. And both WineTest and TestLauncher always put it on the done lines.
Signed-off-by: Francois Gouget fgouget@codeweavers.com --- winetest/dissect | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/winetest/dissect b/winetest/dissect index 1bbd78ef2..9cd3f9d60 100755 --- a/winetest/dissect +++ b/winetest/dissect @@ -670,9 +670,9 @@ while ($line = <IN>) { get_source_link($l_unit, $l_num) .": ". escapeHTML($l_text)); } - elsif ($line =~ /^(?:([0-9a-f]+):)?([_.a-z0-9]+): unhandled exception [0-9a-fA-F]{8} at / or + elsif ($line =~ /^([0-9a-f]+):([_.a-z0-9]+): unhandled exception [0-9a-fA-F]{8} at / or ($unit ne "" and - $line =~ /(?:([0-9a-f]+):)?($units_re): unhandled exception [0-9a-fA-F]{8} at /)) + $line =~ /([0-9a-f]+):($units_re): unhandled exception [0-9a-fA-F]{8} at /)) { my ($l_pid, $l_unit) = ($1, $2); if ($units{$l_unit}) @@ -685,9 +685,9 @@ while ($line = <IN>) { check_unit($l_unit, "unhandled exception"); $failures++; } - elsif ($line =~ /^(?:([0-9a-f]+):)?([_a-z0-9]+): (\d+) tests? executed ((\d+) marked as todo, (\d+) failures?), (\d+) skipped./ or + elsif ($line =~ /^([0-9a-f]+):([_a-z0-9]+): (\d+) tests? executed ((\d+) marked as todo, (\d+) failures?), (\d+) skipped./ or ($unit ne "" and - $line =~ /(?:([0-9a-f]+):)?($unit): (\d+) tests? executed ((\d+) marked as todo, (\d+) failures?), (\d+) skipped./)) + $line =~ /([0-9a-f]+):($unit): (\d+) tests? executed ((\d+) marked as todo, (\d+) failures?), (\d+) skipped./)) { my ($l_pid, $l_unit, $l_total, $l_todo, $l_failures, $l_skipped) = ($1, $2, $3, $4, $5, $6);
@@ -709,9 +709,9 @@ while ($line = <IN>) { check_unit($l_unit, "test summary") if ($class ne "result"); } } - elsif ($line =~ /^([_.a-z0-9-]+):([_a-z0-9]+)(?::([0-9a-f]+))? done ((-?\d+))(?:\r?$| in)/ or + elsif ($line =~ /^([_.a-z0-9-]+):([_a-z0-9]+):([0-9a-f]+) done ((-?\d+))(?:\r?$| in)/ or ($dll ne "" and - $line =~ /(\Q$dll\E):([_a-z0-9]+)(?::([0-9a-f]+))? done ((-?\d+))(?:\r?$| in)/)) + $line =~ /(\Q$dll\E):([_a-z0-9]+):([0-9a-f]+) done ((-?\d+))(?:\r?$| in)/)) { my ($l_dll, $l_unit, $l_pid, $l_rc) = ($1, $2, $3, $4);
Part of the garbage may look like it is part of the dll or unit name, for instance 09d4comdlg32 or dd3d10core. So preferentially match lines using the current dll or unit name and only use regular matches to detect misplaced lines.
Signed-off-by: Francois Gouget fgouget@codeweavers.com ---
test.winehq.org got two garbled reports in the last run, resulting in two incorrect test unit names, 09d4comdlg32:filedlg and dd3d10core:d3d10core (I did not see any from previous reports).
See: https://test.winehq.org/data/a63a98c3884fa4d9b299450634d6aea25c3ad48b/
To clean up the website, run the following commands from the parent of winetest's data directory:
export commit=a63a98c3884fa4d9b299450634d6aea25c3ad48b && \ export tag=2008_newtb-w2008s64-32 && \ mkdir queue/rep1 && mv "data/$commit/$tag/report" queue/rep1/ && \ rm -rf "data/$commit/$tag"
export commit=a63a98c3884fa4d9b299450634d6aea25c3ad48b && \ export tag=win10_newtb-w1064v1809-fr-32 && \ mkdir queue/rep2 && mv "data/$commit/$tag/report" queue/rep2/ && \ rm -rf "data/$commit/$tag"
Then either run winetest.cron manually or let cron update the site. (optionally unset commit && unset tag)
winetest/dissect | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-)
diff --git a/winetest/dissect b/winetest/dissect index 9cd3f9d60..13e258e61 100755 --- a/winetest/dissect +++ b/winetest/dissect @@ -628,9 +628,9 @@ while ($line = <IN>) { $extra_failures++; } } - elsif ($line =~ /^()([_a-z0-9]+).c:(\d+): (Test (?:failed|succeeded inside todo block): .*)$/ or - ($unit ne "" and - $line =~ /^(.*?)($units_re).c:(\d+): (Test (?:failed|succeeded inside todo block): .*)$/)) + elsif (($unit ne "" and + $line =~ /^(.*?)($units_re).c:(\d+): (Test (?:failed|succeeded inside todo block): .*)$/) or + $line =~ /^()([_a-z0-9]+).c:(\d+): (Test (?:failed|succeeded inside todo block): .*)$/) { my ($pollution, $l_unit, $l_num, $l_text) = ($1, $2, $3, $4); add_test_line("failed", escapeHTML($pollution) . @@ -639,9 +639,9 @@ while ($line = <IN>) { check_unit($l_unit, "failure"); $failures++; } - elsif ($line =~ /^()([_a-z0-9]+).c:(\d+): (Test marked todo: .*)$/ or - ($unit ne "" and - $line =~ /^(.*?)($units_re).c:(\d+): (Test marked todo: .*)$/)) + elsif (($unit ne "" and + $line =~ /^(.*?)($units_re).c:(\d+): (Test marked todo: .*)$/) or + $line =~ /^()([_a-z0-9]+).c:(\d+): (Test marked todo: .*)$/) { my ($pollution, $l_unit, $l_num, $l_text) = ($1, $2, $3, $4); add_test_line("todo", escapeHTML($pollution) . @@ -650,9 +650,9 @@ while ($line = <IN>) { check_unit($l_unit, "todo"); $todo++; } - elsif ($line =~ /^()([_a-z0-9]+).c:(\d+): (Tests skipped: .*)$/ or - ($unit ne "" and - $line =~ /^(.*?)($units_re).c:(\d+): (Tests skipped: .*)$/)) + elsif (($unit ne "" and + $line =~ /^(.*?)($units_re).c:(\d+): (Tests skipped: .*)$/) or + $line =~ /^()([_a-z0-9]+).c:(\d+): (Tests skipped: .*)$/) { my ($pollution, $l_unit, $l_num, $l_text) = ($1, $2, $3, $4); add_test_line("skipped", escapeHTML($pollution) . @@ -661,18 +661,18 @@ while ($line = <IN>) { # Don't complain and don't count misplaced skips $skipped++ if ($units{$l_unit}); } - elsif ($line =~ /^()([_a-z0-9]+).c:(\d+): (.*)$/ or - ($unit ne "" and - $line =~ /^(.*?)($units_re).c:(\d+): (.*)$/)) + elsif (($unit ne "" and + $line =~ /^(.*?)($units_re).c:(\d+): (.*)$/) or + $line =~ /^()([_a-z0-9]+).c:(\d+): (.*)$/) { my ($pollution, $l_unit, $l_num, $l_text) = ($1, $2, $3, $4); add_test_line("trace", escapeHTML($pollution) . get_source_link($l_unit, $l_num) .": ". escapeHTML($l_text)); } - elsif ($line =~ /^([0-9a-f]+):([_.a-z0-9]+): unhandled exception [0-9a-fA-F]{8} at / or - ($unit ne "" and - $line =~ /([0-9a-f]+):($units_re): unhandled exception [0-9a-fA-F]{8} at /)) + elsif (($unit ne "" and + $line =~ /([0-9a-f]+):($units_re): unhandled exception [0-9a-fA-F]{8} at /) or + $line =~ /^([0-9a-f]+):([_.a-z0-9]+): unhandled exception [0-9a-fA-F]{8} at /) { my ($l_pid, $l_unit) = ($1, $2); if ($units{$l_unit}) @@ -685,9 +685,9 @@ while ($line = <IN>) { check_unit($l_unit, "unhandled exception"); $failures++; } - elsif ($line =~ /^([0-9a-f]+):([_a-z0-9]+): (\d+) tests? executed ((\d+) marked as todo, (\d+) failures?), (\d+) skipped./ or - ($unit ne "" and - $line =~ /([0-9a-f]+):($unit): (\d+) tests? executed ((\d+) marked as todo, (\d+) failures?), (\d+) skipped./)) + elsif (($unit ne "" and + $line =~ /([0-9a-f]+):($unit): (\d+) tests? executed ((\d+) marked as todo, (\d+) failures?), (\d+) skipped./) or + $line =~ /^([0-9a-f]+):([_a-z0-9]+): (\d+) tests? executed ((\d+) marked as todo, (\d+) failures?), (\d+) skipped./) { my ($l_pid, $l_unit, $l_total, $l_todo, $l_failures, $l_skipped) = ($1, $2, $3, $4, $5, $6);
@@ -709,9 +709,9 @@ while ($line = <IN>) { check_unit($l_unit, "test summary") if ($class ne "result"); } } - elsif ($line =~ /^([_.a-z0-9-]+):([_a-z0-9]+):([0-9a-f]+) done ((-?\d+))(?:\r?$| in)/ or - ($dll ne "" and - $line =~ /(\Q$dll\E):([_a-z0-9]+):([0-9a-f]+) done ((-?\d+))(?:\r?$| in)/)) + elsif (($dll ne "" and + $line =~ /(\Q$dll\E):([_a-z0-9]+):([0-9a-f]+) done ((-?\d+))(?:\r?$| in)/) or + $line =~ /^([_.a-z0-9-]+):([_a-z0-9]+):([0-9a-f]+) done ((-?\d+))(?:\r?$| in)/) { my ($l_dll, $l_unit, $l_pid, $l_rc) = ($1, $2, $3, $4);