Francois Gouget : testbot/LogUtils: Fix handling of failures before the first test unit.

Alexandre Julliard julliard at winehq.org
Tue Apr 6 15:28:59 CDT 2021


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

Author: Francois Gouget <fgouget at codeweavers.com>
Date:   Tue Apr  6 16:24:55 2021 +0200

testbot/LogUtils: Fix handling of failures before the first test unit.

This is necessary to be able to account for errors found in the "dll
versions" block.

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

---

 testbot/lib/WineTestBot/LogUtils.pm | 60 ++++++++++++++++++++-----------------
 1 file changed, 32 insertions(+), 28 deletions(-)

diff --git a/testbot/lib/WineTestBot/LogUtils.pm b/testbot/lib/WineTestBot/LogUtils.pm
index 5f7046c..dde4104 100644
--- a/testbot/lib/WineTestBot/LogUtils.pm
+++ b/testbot/lib/WineTestBot/LogUtils.pm
@@ -407,7 +407,7 @@ sub _CloseTestUnit($$$)
   my ($LogInfo, $Cur, $Last) = @_;
 
   # Verify the summary lines
-  if (!$Cur->{IsBroken})
+  if ($Cur->{Dll} ne "" and !$Cur->{IsBroken})
   {
     _CheckSummaryCounter($LogInfo, $Cur, "Failures", "failure");
     _CheckSummaryCounter($LogInfo, $Cur, "Todos", "todo");
@@ -418,37 +418,41 @@ sub _CloseTestUnit($$$)
   # so only use them as a fallback.
   $Cur->{LineFailures} ||= $Cur->{SummaryFailures};
 
-  if ($Cur->{UnitSize} > $MaxUnitSize)
+  if ($Cur->{Dll} ne "")
   {
-    _AddExtra($LogInfo, "prints too much data ($Cur->{UnitSize} bytes)", $Cur);
-  }
-  if (!$Cur->{IsBroken} and defined $Cur->{Rc})
-  {
-    # Check the exit code, particularly against failures reported
-    # after the 'done' line (e.g. by subprocesses).
-    if ($Cur->{LineFailures} != 0 and $Cur->{Rc} == 0)
+    if ($Cur->{UnitSize} > $MaxUnitSize)
     {
-      _AddExtra($LogInfo, "returned success despite having failures", $Cur);
+      _AddExtra($LogInfo, "prints too much data ($Cur->{UnitSize} bytes)", $Cur);
     }
-    elsif (!$LogInfo->{IsWineTest} and $Cur->{Rc} != 0)
+    if (!$Cur->{IsBroken} and defined $Cur->{Rc})
     {
-      _AddExtra($LogInfo, "The test returned a non-zero exit code");
-    }
-    elsif ($LogInfo->{IsWineTest} and $Cur->{LineFailures} == 0 and $Cur->{Rc} != 0)
-    {
-      _AddExtra($LogInfo, "returned a non-zero exit code despite reporting no failures", $Cur);
-    }
-  }
-  # For executables TestLauncher's done line may not be recognizable.
-  elsif ($LogInfo->{IsWineTest} and !defined $Cur->{Rc})
-  {
-    if (!$Last)
-    {
-      _AddExtra($LogInfo, "has no done line (or it is garbled)", $Cur);
+      # Check the exit code, particularly against failures reported
+      # after the 'done' line (e.g. by subprocesses).
+      if ($Cur->{LineFailures} != 0 and $Cur->{Rc} == 0)
+      {
+        _AddExtra($LogInfo, "returned success despite having failures", $Cur);
+      }
+      elsif (!$LogInfo->{IsWineTest} and $Cur->{Rc} != 0)
+      {
+        _AddExtra($LogInfo, "The test returned a non-zero exit code");
+      }
+      elsif ($LogInfo->{IsWineTest} and $Cur->{LineFailures} == 0 and
+             $Cur->{Rc} != 0)
+      {
+        _AddExtra($LogInfo, "returned a non-zero exit code despite reporting no failures", $Cur);
+      }
     }
-    elsif ($Last and !$LogInfo->{TaskTimedOut})
+    # For executables TestLauncher's done line may not be recognizable.
+    elsif ($LogInfo->{IsWineTest} and !defined $Cur->{Rc})
     {
-      _AddExtra($LogInfo, "The report seems to have been truncated");
+      if (!$Last)
+      {
+        _AddExtra($LogInfo, "has no done line (or it is garbled)", $Cur);
+      }
+      elsif ($Last and !$LogInfo->{TaskTimedOut})
+      {
+        _AddExtra($LogInfo, "The report seems to have been truncated");
+      }
     }
   }
 
@@ -548,7 +552,7 @@ sub ParseWineTestReport($$$)
       my ($Dll, $Unit, $Type) = ($1, $2, $3);
 
       # Close the previous test unit
-      _CloseTestUnit($LogInfo, $Cur, 0) if ($Cur->{Dll} ne "");
+      _CloseTestUnit($LogInfo, $Cur, 0);
       $Cur = _NewCurrentUnit($Dll, $Unit);
       $LogInfo->{TestUnitCount}++;
 
@@ -689,7 +693,7 @@ sub ParseWineTestReport($$$)
         # First close the current test unit taking into account
         # it may have been polluted by the new one.
         $Cur->{IsBroken} = 1;
-        _CloseTestUnit($LogInfo, $Cur, 0) if ($Cur->{Dll} ne "");
+        _CloseTestUnit($LogInfo, $Cur, 0);
 
         # Then switch to the new test unit, not for the past lines, but for
         # those before the next 'start' line. This 'new' test unit may have




More information about the wine-cvs mailing list