Francois Gouget : testbot/LogUtils: Add support for IgnoreExceptions.

Alexandre Julliard julliard at winehq.org
Thu Mar 4 15:45:25 CST 2021


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

Author: Francois Gouget <fgouget at codeweavers.com>
Date:   Thu Mar  4 14:27:30 2021 +0100

testbot/LogUtils: Add support for IgnoreExceptions.

Any exception occurring while IgnoreExceptions=1 is expected and should
be ignored.
Note that this is made possible by the fact that ParseWineTestReport()
is now the sole authority on what is a report error line, and thus won't
be contradicted by GetReportLineCategory() (which lacks the context
information to deal with IgnoreExceptions directives).

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

---

 testbot/lib/WineTestBot/LogUtils.pm | 56 ++++++++++++++++++++++++-------------
 1 file changed, 36 insertions(+), 20 deletions(-)

diff --git a/testbot/lib/WineTestBot/LogUtils.pm b/testbot/lib/WineTestBot/LogUtils.pm
index 0bd7d19..bdba8da 100644
--- a/testbot/lib/WineTestBot/LogUtils.pm
+++ b/testbot/lib/WineTestBot/LogUtils.pm
@@ -611,44 +611,60 @@ sub ParseWineTestReport($$$)
       _AddReportError($LogInfo, $Cur, $LineNo, $Line);
       $Cur->{LineFailures}++;
     }
+    elsif (($Cur->{Unit} ne "" and
+            $Line =~ /($Cur->{UnitsRE})\.c:\d+: IgnoreExceptions=([01])/) or
+           $Line =~ /^([_.a-z0-9]+)\.c:\d+: IgnoreExceptions=([01])/)
+    {
+      my ($Unit, $Ignore) = ($1, $2);
+      _CheckUnit($LogInfo, $Cur, $Unit, "ignore exceptions");
+      $Cur->{IgnoreExceptions} = $Ignore;
+    }
     elsif (($Cur->{Unit} ne "" and
             $Line =~ /([0-9a-f]+):($Cur->{UnitsRE}): 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 ($Pid, $Unit) = ($1, $2);
-
-      if ($Cur->{Units}->{$Unit})
+      _CheckUnit($LogInfo, $Cur, $Unit, "unhandled exception");
+      if (!$Cur->{IgnoreExceptions})
       {
-        # This also replaces a test summary line.
-        $Cur->{Pids}->{$Pid || 0} = 1;
-        $Cur->{SummaryFailures}++;
+        if ($Cur->{Units}->{$Unit})
+        {
+          # This also replaces a test summary line.
+          $Cur->{Pids}->{$Pid || 0} = 1;
+          $Cur->{SummaryFailures}++;
+        }
+        _AddReportError($LogInfo, $Cur, $LineNo, $Line);
+        $Cur->{LineFailures}++;
       }
-      _CheckUnit($LogInfo, $Cur, $Unit, "unhandled exception");
-      _AddReportError($LogInfo, $Cur, $LineNo, $Line);
-      $Cur->{LineFailures}++;
     }
     elsif ($Line =~ /Unhandled exception: .* in .* code /)
     {
-      # This also replaces a test summary line. The pid is unknown so use 0.
-      $Cur->{Pids}->{0} = 1;
-      $Cur->{SummaryFailures}++;
-      _AddReportError($LogInfo, $Cur, $LineNo, $Line);
-      $Cur->{LineFailures}++;
+      if (!$Cur->{IgnoreExceptions})
+      {
+        # This also replaces a test summary line. The pid is unknown so use 0.
+        $Cur->{Pids}->{0} = 1;
+        $Cur->{SummaryFailures}++;
+        _AddReportError($LogInfo, $Cur, $LineNo, $Line);
+        $Cur->{LineFailures}++;
+      }
     }
     elsif (($Cur->{Unit} ne "" and
             $Line =~ /($Cur->{UnitsRE})\.c:\d+: unhandled exception [0-9a-fA-F]{8} in child process ([0-9a-f]+)/) or
            $Line =~ /^([_.a-z0-9]+)\.c:\d+: unhandled exception [0-9a-fA-F]{8} in child process ([0-9a-f]+)/)
     {
       my ($Unit, $Pid) = ($1, $2);
-      if ($Cur->{Units}->{$Unit})
+      _CheckUnit($LogInfo, $Cur, $Unit, "child exception");
+      if (!$Cur->{IgnoreExceptions})
       {
-        # This also replaces a test summary line.
-        $Cur->{Pids}->{$Pid || 0} = 1;
-        $Cur->{SummaryFailures}++;
+        if ($Cur->{Units}->{$Unit})
+        {
+          # This also replaces a test summary line.
+          $Cur->{Pids}->{$Pid || 0} = 1;
+          $Cur->{SummaryFailures}++;
+        }
+        _AddReportError($LogInfo, $Cur, $LineNo, $Line);
+        $Cur->{LineFailures}++;
       }
-      _CheckUnit($LogInfo, $Cur, $Unit, "child exception");
-      _AddReportError($LogInfo, $Cur, $LineNo, $Line);
-      $Cur->{LineFailures}++;
     }
     elsif (($Cur->{Unit} ne "" and
             $Line =~ /([0-9a-f]+):($Cur->{Unit}): \d+ tests? executed \((\d+) marked as todo, (\d+) failures?\), (\d+) skipped\./) or




More information about the wine-cvs mailing list