[SCM] WebKit Debian packaging branch, webkit-1.1, updated. upstream/1.1.19-706-ge5415e9

abarth at webkit.org abarth at webkit.org
Thu Feb 4 21:24:05 UTC 2010


The following commit has been merged in the webkit-1.1 branch:
commit 1a6d0f5e7c74bcaf345f5699c5bad2b7a8d116be
Author: abarth at webkit.org <abarth at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Jan 22 01:07:46 2010 +0000

    2010-01-21  Adam Barth  <abarth at webkit.org>
    
            Reviewed by Eric Seidel.
    
            Make the EWS transactional
            https://bugs.webkit.org/show_bug.cgi?id=33978
    
            Now if the EWS gets interrupted in the middle of processing a patch,
            the bots will re-process the patch.
    
            * Scripts/test-webkitpy:
            * Scripts/webkitpy/commands/queues.py:
            * Scripts/webkitpy/commands/queues_unittest.py:
            * Scripts/webkitpy/patchcollection.py:
            * Scripts/webkitpy/patchcollection_unittest.py: Added.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@53661 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog
index 812cdde..5d99f46 100644
--- a/WebKitTools/ChangeLog
+++ b/WebKitTools/ChangeLog
@@ -1,5 +1,21 @@
 2010-01-21  Adam Barth  <abarth at webkit.org>
 
+        Reviewed by Eric Seidel.
+
+        Make the EWS transactional
+        https://bugs.webkit.org/show_bug.cgi?id=33978
+
+        Now if the EWS gets interrupted in the middle of processing a patch,
+        the bots will re-process the patch.
+
+        * Scripts/test-webkitpy:
+        * Scripts/webkitpy/commands/queues.py:
+        * Scripts/webkitpy/commands/queues_unittest.py:
+        * Scripts/webkitpy/patchcollection.py:
+        * Scripts/webkitpy/patchcollection_unittest.py: Added.
+
+2010-01-21  Adam Barth  <abarth at webkit.org>
+
         Unreviewed.  Add missing "ago" for style in the status bubble.
 
         * QueueStatusServer/templates/statusbubble.html:
diff --git a/WebKitTools/Scripts/test-webkitpy b/WebKitTools/Scripts/test-webkitpy
index 60a3ce8..eaccd58 100755
--- a/WebKitTools/Scripts/test-webkitpy
+++ b/WebKitTools/Scripts/test-webkitpy
@@ -44,6 +44,7 @@ from webkitpy.diff_parser_unittest import *
 from webkitpy.executive_unittest import *
 from webkitpy.multicommandtool_unittest import *
 from webkitpy.networktransaction_unittest import *
+from webkitpy.patchcollection_unittest import *
 from webkitpy.queueengine_unittest import *
 from webkitpy.steps.steps_unittest import *
 from webkitpy.steps.closebugforlanddiff_unittest import *
diff --git a/WebKitTools/Scripts/webkitpy/commands/queues.py b/WebKitTools/Scripts/webkitpy/commands/queues.py
index 350c1ea..a01f999 100644
--- a/WebKitTools/Scripts/webkitpy/commands/queues.py
+++ b/WebKitTools/Scripts/webkitpy/commands/queues.py
@@ -234,6 +234,9 @@ class AbstractReviewQueue(AbstractQueue, PersistentPatchCollectionDelegate, Step
     def status_server(self):
         return self.tool.status_server
 
+    def is_terminal_status(self, status):
+        return status == "Pass" or status == "Fail" or status.startswith("Error:")
+
     # AbstractQueue methods
 
     def begin_work_queue(self):
diff --git a/WebKitTools/Scripts/webkitpy/commands/queues_unittest.py b/WebKitTools/Scripts/webkitpy/commands/queues_unittest.py
index a422456..1aa5481 100644
--- a/WebKitTools/Scripts/webkitpy/commands/queues_unittest.py
+++ b/WebKitTools/Scripts/webkitpy/commands/queues_unittest.py
@@ -40,6 +40,10 @@ class TestQueue(AbstractQueue):
     name = "test-queue"
 
 
+class TestReviewQueue(AbstractReviewQueue):
+    name = "test-review-queue"
+
+
 class AbstractQueueTest(CommandsTest):
     def _assert_log_progress_output(self, patch_ids, progress_output):
         OutputCapture().assert_outputs(self, TestQueue().log_progress, [patch_ids], expected_stderr=progress_output)
@@ -63,6 +67,20 @@ class AbstractQueueTest(CommandsTest):
         self._assert_run_webkit_patch(["one", 2])
 
 
+class AbstractReviewQueueTest(CommandsTest):
+    def test_patch_collection_delegate_methods(self):
+        queue = TestReviewQueue()
+        tool = MockBugzillaTool()
+        queue.bind_to_tool(tool)
+        self.assertEquals(queue.collection_name(), "test-review-queue")
+        self.assertEquals(queue.fetch_potential_patch_ids(), [103])
+        queue.status_server()
+        self.assertTrue(queue.is_terminal_status("Pass"))
+        self.assertTrue(queue.is_terminal_status("Fail"))
+        self.assertTrue(queue.is_terminal_status("Error: Your patch exploded"))
+        self.assertFalse(queue.is_terminal_status("Foo"))
+
+
 class CommitQueueTest(QueuesTest):
     def test_commit_queue(self):
         expected_stderr = {
diff --git a/WebKitTools/Scripts/webkitpy/patchcollection.py b/WebKitTools/Scripts/webkitpy/patchcollection.py
index 246f487..7e8603c 100644
--- a/WebKitTools/Scripts/webkitpy/patchcollection.py
+++ b/WebKitTools/Scripts/webkitpy/patchcollection.py
@@ -37,6 +37,9 @@ class PersistentPatchCollectionDelegate:
     def status_server(self):
         raise NotImplementedError, "subclasses must implement"
 
+    def is_terminal_status(self, status):
+        raise NotImplementedError, "subclasses must implement"
+
 
 class PersistentPatchCollection:
     def __init__(self, delegate):
@@ -50,7 +53,7 @@ class PersistentPatchCollection:
         if cached:
             return cached
         status = self._status.patch_status(self._name, patch_id)
-        if status:
+        if status and self._delegate.is_terminal_status(status):
             self._status_cache[patch_id] = status
         return status
 
@@ -58,6 +61,5 @@ class PersistentPatchCollection:
         patch_ids = self._delegate.fetch_potential_patch_ids()
         for patch_id in patch_ids:
             status = self._cached_status(patch_id)
-            if not status:
+            if not status or not self._delegate.is_terminal_status(status):
                 return patch_id
-
diff --git a/WebKitTools/Scripts/webkitpy/patchcollection_unittest.py b/WebKitTools/Scripts/webkitpy/patchcollection_unittest.py
new file mode 100644
index 0000000..811fed9
--- /dev/null
+++ b/WebKitTools/Scripts/webkitpy/patchcollection_unittest.py
@@ -0,0 +1,53 @@
+#!/usr/bin/env python
+# Copyright (c) 2009, Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+# 
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+# 
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import unittest
+
+from webkitpy.mock import Mock
+from webkitpy.patchcollection import PersistentPatchCollection, PersistentPatchCollectionDelegate
+
+
+class TestPersistentPatchCollectionDelegate(PersistentPatchCollectionDelegate):
+    def collection_name(self):
+        return "test-collection"
+
+    def fetch_potential_patch_ids(self):
+        return [42, 192, 87]
+
+    def status_server(self):
+        return Mock()
+
+    def is_terminal_status(self, status):
+        return False
+
+
+class PersistentPatchCollectionTest(unittest.TestCase):
+    def test_next(self):
+        collection = PersistentPatchCollection(TestPersistentPatchCollectionDelegate())
+        collection.next()

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list