Francois Gouget : testbot/WineRunTask: Make the test unit name checks more consistent.

Alexandre Julliard julliard at winehq.org
Wed May 17 11:56:25 CDT 2017


Module: tools
Branch: master
Commit: 492fed7e4520da8f9fdd126aabecab493e7c0058
URL:    http://source.winehq.org/git/tools.git/?a=commit;h=492fed7e4520da8f9fdd126aabecab493e7c0058

Author: Francois Gouget <fgouget at codeweavers.com>
Date:   Wed May 17 11:23:24 2017 +0200

testbot/WineRunTask: Make the test unit name checks more consistent.

They are now centralized in CheckUnit().

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

---

 testbot/bin/WineRunTask.pl | 45 ++++++++++++++++++++++-----------------------
 1 file changed, 22 insertions(+), 23 deletions(-)

diff --git a/testbot/bin/WineRunTask.pl b/testbot/bin/WineRunTask.pl
index f6f6350..5f9d4f3 100755
--- a/testbot/bin/WineRunTask.pl
+++ b/testbot/bin/WineRunTask.pl
@@ -471,6 +471,24 @@ if ($TA->GetFile($RptFileName, $FullLogFileName))
     # care about the todos and skips
     my ($CurrentDll, $CurrentUnit, $LineFailures, $SummaryFailures) = ("", "", 0, 0);
     my ($CurrentIsPolluted, %CurrentPids, $LogFailures);
+
+    sub CheckUnit($$)
+    {
+      my ($Unit, $Type) = @_;
+      if ($Unit eq $CurrentUnit)
+      {
+        $IsWineTest = 1;
+      }
+      # To avoid issuing many duplicate errors,
+      # only report the first misplaced message.
+      elsif ($IsWineTest and !$CurrentIsPolluted)
+      {
+        LogTaskError("$CurrentDll:$CurrentUnit contains a misplaced $Type message for $Unit\n");
+        $LogFailures++;
+        $CurrentIsPolluted = 1;
+      }
+    }
+
     foreach my $Line (<$LogFile>)
     {
       if ($Line =~ m%^([_.a-z0-9-]+):([_a-z0-9]*) start (?:-|[/_.a-z0-9]+) (?:-|[.0-9a-f]+)\r?$%)
@@ -487,17 +505,7 @@ if ($TA->GetFile($RptFileName, $FullLogFileName))
              ($CurrentUnit ne "" and
               $Line =~ /($CurrentUnit)\.c:\d+: Test (?:failed|succeeded inside todo block): /))
       {
-        my $Unit = $1;
-        if ($Unit eq $CurrentUnit)
-        {
-          $IsWineTest = 1;
-        }
-        else
-        {
-          # If the failure is not for the current test unit we'll
-          # let its developer hash it out with the polluter ;-)
-          $CurrentIsPolluted = 1;
-        }
+        CheckUnit($1, "failure");
         $LineFailures++;
       }
       elsif ($Line =~ /^Fatal: test '([_a-z0-9]+)' does not exist/)
@@ -520,19 +528,15 @@ if ($TA->GetFile($RptFileName, $FullLogFileName))
           # This also replaces a test summary line.
           $CurrentPids{$Pid || 0} = 1;
           $SummaryFailures++;
-          $IsWineTest = 1;
-        }
-        else
-        {
-          $CurrentIsPolluted = 1;
         }
+        CheckUnit($Unit, "unhandled exception");
         $LineFailures++;
       }
       elsif ($Line =~ /^(?:([0-9a-f]+):)?([_a-z0-9]+): \d+ tests? executed \((\d+) marked as todo, (\d+) failures?\), \d+ skipped\./ or
              ($CurrentUnit ne "" and
               $Line =~ /(?:([0-9a-f]+):)?($CurrentUnit): \d+ tests? executed \((\d+) marked as todo, (\d+) failures?\), \d+ skipped\./))
       {
-        my ($Pid, $Unit, $Todo, $Failures) = ($1, $2, $3, $4);
+        my ($Pid, $Unit, $Todos, $Failures) = ($1, $2, $3, $4);
 
         # Dlls that have only one test unit will run it even if there is
         # no argument. Also TestLauncher uses the wrong name in its test
@@ -546,12 +550,7 @@ if ($TA->GetFile($RptFileName, $FullLogFileName))
         }
         else
         {
-          $CurrentIsPolluted = 1;
-          if ($IsWineTest and ($Todo or $Failures))
-          {
-            LogTaskError("$CurrentDll:$CurrentUnit contains a misplaced test summary line for $Unit\n");
-            $LogFailures++;
-          }
+          CheckUnit($Unit, "test summary") if ($Todos or $Failures);
         }
       }
       elsif ($Line =~ /^([_.a-z0-9-]+):([_a-z0-9]*)(?::([0-9a-f]+))? done \((-?\d+)\)(?:\r?$| in)/ or




More information about the wine-cvs mailing list