Francois Gouget : testbot: Don't overwrite existing patch series parts.

Alexandre Julliard julliard at winehq.org
Thu Feb 27 10:32:43 CST 2020


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

Author: Francois Gouget <fgouget at codeweavers.com>
Date:   Wed Feb 26 10:37:33 2020 +0100

testbot: Don't overwrite existing patch series parts.

Assume any new email bearing the same part number is either a reply, or
a collision from another series and should thus be ignored.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47042
Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 testbot/lib/WineTestBot/PendingPatchSets.pm | 46 +++++++++++++++--------------
 1 file changed, 24 insertions(+), 22 deletions(-)

diff --git a/testbot/lib/WineTestBot/PendingPatchSets.pm b/testbot/lib/WineTestBot/PendingPatchSets.pm
index adabf2e..cfa6dc0 100644
--- a/testbot/lib/WineTestBot/PendingPatchSets.pm
+++ b/testbot/lib/WineTestBot/PendingPatchSets.pm
@@ -243,50 +243,52 @@ sub NewSubmission($$$)
 
   my $Parts = $Set->Parts;
   my $Part = $Parts->GetItem($SubjectInfo->{PartNo});
-  if (! defined($Part))
+  if ($Part)
   {
-    $Part = $Parts->Add();
-    $Part->No($SubjectInfo->{PartNo});
+    $Patch->Disposition("Existing part reply / collision");
+    return undef;
   }
 
+  $Part = $Parts->Add();
+  $Part->No($SubjectInfo->{PartNo});
   $Part->Patch($Patch);
 
   my ($_ErrKey, $_ErrProperty, $ErrMessage) = $self->Save();
   if (defined($ErrMessage))
   {
     $Patch->Disposition("Error occurred during series processing");
+    return undef;
   }
 
   if (! $Set->CheckSubsetComplete($SubjectInfo->{PartNo}))
   {
     $Patch->Disposition("Set not complete yet");
+    return undef;
   }
-  else
+
+  my $PartNo = $SubjectInfo->{PartNo};
+  my $AllPartsAvailable = 1;
+  while ($PartNo <= $Set->TotalParts && $AllPartsAvailable &&
+         !defined $ErrMessage)
   {
-    my $PartNo = $SubjectInfo->{PartNo};
-    my $AllPartsAvailable = 1;
-    while ($PartNo <= $Set->TotalParts && $AllPartsAvailable &&
-           ! defined($ErrMessage))
+    my $Part = $Parts->GetItem($PartNo);
+    if (defined $Part)
     {
-      my $Part = $Parts->GetItem($PartNo);
-      if (defined($Part))
+      $ErrMessage = $Set->SubmitSubset($PartNo, $Part->Patch);
+      if (!defined $ErrMessage)
       {
-        $ErrMessage = $Set->SubmitSubset($PartNo, $Part->Patch);
-        if (!defined $ErrMessage)
-        {
-          ($_ErrProperty, $ErrMessage) = $Part->Patch->Save();
-        }
+        ($_ErrProperty, $ErrMessage) = $Part->Patch->Save();
       }
-      else
-      {
-        $AllPartsAvailable = !1;
-      }
-      $PartNo++;
     }
-    if ($AllPartsAvailable && ! defined($ErrMessage))
+    else
     {
-      $self->DeleteItem($Set);
+      $AllPartsAvailable = !1;
     }
+    $PartNo++;
+  }
+  if ($AllPartsAvailable && ! defined($ErrMessage))
+  {
+    $self->DeleteItem($Set);
   }
 
   return $ErrMessage;




More information about the wine-cvs mailing list