Francois Gouget : testbot/JobDetails: Improve the error reporting.

Alexandre Julliard julliard at winehq.org
Wed Feb 12 16:13:58 CST 2020


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

Author: Francois Gouget <fgouget at codeweavers.com>
Date:   Wed Feb 12 16:02:37 2020 +0100

testbot/JobDetails: Improve the error reporting.

Clearly indicate when the log or its errors cache could not be read.
Also show a note when new errors could not be detected, either because
there is no reference WineTest results (which would typically happen
shortly after a new test configuration has been added), or because there
was an issue reading one or more of the reference reports.
And don't claim there are no errors when the task has not run yet.

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

---

 testbot/web/JobDetails.pl   | 59 +++++++++++++++++++++++++++++++++++++++------
 testbot/web/WineTestBot.css |  1 +
 2 files changed, 53 insertions(+), 7 deletions(-)

diff --git a/testbot/web/JobDetails.pl b/testbot/web/JobDetails.pl
index ccf3410..5a484da 100644
--- a/testbot/web/JobDetails.pl
+++ b/testbot/web/JobDetails.pl
@@ -351,6 +351,22 @@ sub GenerateFullLog($$$$)
   my ($self, $Dir, $LogName, $HideLog) = @_;
 
   my $LogInfo = LoadLogErrors("$Dir/$LogName");
+  if (defined $LogInfo->{BadLog})
+  {
+    print "<pre class='log-note'>Could not highlight new errors: ", ($LogInfo->{BadRef} || $LogInfo->{BadLog}), "</pre>\n";
+  }
+  elsif ($LogInfo->{NoRef} and !defined $LogInfo->{BadRef})
+  {
+    print "<pre class='log-note'>No WineTest results are available to detect new errors</pre>\n";
+  }
+  elsif ($LogInfo->{NoRef})
+  {
+    print "<pre class='log-note'>Could not detect new errors: $LogInfo->{BadRef}</pre>\n";
+  }
+  elsif (defined $LogInfo->{BadRef})
+  {
+    print "<pre class='log-note'>Some WineTest results could not be used to detect new errors: $LogInfo->{BadRef}</pre>\n";
+  }
 
   my %NewLineNos;
   if ($LogInfo->{ErrCount})
@@ -397,6 +413,11 @@ sub GenerateFullLog($$$$)
     }
     close($LogFile);
   }
+  else
+  {
+    print "<pre class='log-error'><code>Unable to open '$LogName' for reading: $!</code></pre>\n";
+    $IsEmpty = 0;
+  }
 
   # And append the extra errors
   foreach my $GroupName (@{$LogInfo->{ErrGroupNames}})
@@ -535,16 +556,18 @@ EOF
       {
         next if ($LogName =~ /^old_/);
         my $LogInfo = LoadLogErrors("$TaskDir/$LogName");
-        next if (!$LogInfo->{ErrCount});
-        $LogInfos->{$LogName} = $LogInfo;
+        if ($LogInfo->{ErrCount} or defined $LogInfo->{BadLog})
+        {
+          $LogInfos->{$LogName} = $LogInfo;
+        }
       }
       my $ShowLogName = ($ReportCount > 1 or scalar(keys %$LogInfos) > 1);
 
-      my $LogIsEmpty = 1;
+      my $NoErrors = 1;
       foreach my $LogName (@{$MoreInfo->{Logs}})
       {
         next if (!$LogInfos->{$LogName});
-        $LogIsEmpty = 0;
+        $NoErrors = 0;
 
         if ($ShowLogName)
         {
@@ -554,6 +577,24 @@ EOF
         }
 
         my $LogInfo = $LogInfos->{$LogName};
+        if (defined $LogInfo->{BadLog})
+        {
+          my ($_Action, $Url) = $self->GetMoreInfoLink($Key, GetLogLabel($LogName), "Full", $LogName);
+          print "<pre class='log-note'>The error summary is not available (<a href='$Url'>see full log instead</a>): $LogInfo->{BadLog}</pre>\n";
+        }
+        elsif ($LogInfo->{NoRef} and !defined $LogInfo->{BadRef})
+        {
+          print "<pre class='log-note'>No WineTest results are available to detect new errors</pre>\n";
+        }
+        elsif ($LogInfo->{NoRef})
+        {
+          print "<pre class='log-note'>Could not detect new errors: $LogInfo->{BadRef}</pre>\n";
+        }
+        elsif (defined $LogInfo->{BadRef})
+        {
+          print "<pre class='log-note'>Some WineTest results could not be used to detect new errors: $LogInfo->{BadRef}</pre>\n";
+        }
+
         foreach my $GroupName (@{$LogInfo->{ErrGroupNames}})
         {
           print "<div class='LogDllName'>$GroupName</div>\n" if ($GroupName);
@@ -576,9 +617,9 @@ EOF
           print "</code></pre>\n";
         }
       }
-
-      if ($LogIsEmpty)
+      if (!@{$MoreInfo->{Logs}})
       {
+        # There is no log file or they are all empty
         if ($StepTask->Status eq "canceled")
         {
           print "No log, task was canceled\n";
@@ -589,9 +630,13 @@ EOF
         }
         else
         {
-          print "No errors\n";
+          print "<pre class='log-note'>No result yet...</pre>\n";
         }
       }
+      elsif ($NoErrors)
+      {
+        print "No errors\n";
+      }
     }
   }
   print "</div>\n";
diff --git a/testbot/web/WineTestBot.css b/testbot/web/WineTestBot.css
index 9a23f5f..3fccbd2 100644
--- a/testbot/web/WineTestBot.css
+++ b/testbot/web/WineTestBot.css
@@ -395,6 +395,7 @@ pre
 .userdisabled { color: red; }
 .userdeleted  { color: red; }
 
+.log-note  { font-style: italic; color: blue; }
 .log-info  { background-color: #d9ffcc; }
 .log-skip  { color: blue; }
 .log-todo  { color: #d08000; }




More information about the wine-cvs mailing list