[SCM] WebKit Debian packaging branch, webkit-1.2, updated. upstream/1.1.90-6072-g9a69373

abarth at webkit.org abarth at webkit.org
Thu Apr 8 00:44:20 UTC 2010


The following commit has been merged in the webkit-1.2 branch:
commit d31a63fabae38e4b5a35b8136d2e495c91cc10e6
Author: abarth at webkit.org <abarth at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Mon Dec 21 02:57:56 2009 +0000

    2009-12-20  Adam Barth  <abarth at webkit.org>
    
            Reviewed by Eric Seidel.
    
            [bzt] Optimize status updates for new dashboard
            https://bugs.webkit.org/show_bug.cgi?id=32797
    
            This patch makes the queues slightly more chatty with the web service.
            Also, this patch introduces some testing for the queues!
    
            * Scripts/modules/commands/early_warning_system.py:
            * Scripts/modules/commands/early_warning_system_unittest.py: Added.
            * Scripts/modules/commands/queues.py:
            * Scripts/modules/commands/queues_unittest.py:
            * Scripts/modules/commands/queuestest.py: Added.
            * Scripts/modules/mock_bugzillatool.py:
            * Scripts/modules/patchcollection.py:
            * Scripts/modules/queueengine.py:
            * Scripts/run-webkit-unittests:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@52430 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog
index d4b978f..7f689e2 100644
--- a/WebKitTools/ChangeLog
+++ b/WebKitTools/ChangeLog
@@ -1,5 +1,23 @@
 2009-12-20  Adam Barth  <abarth at webkit.org>
 
+        [bzt] Optimize status updates for new dashboard
+        https://bugs.webkit.org/show_bug.cgi?id=32797
+
+        This patch makes the queues slightly more chatty with the web service.
+        Also, this patch introduces some testing for the queues!
+
+        * Scripts/modules/commands/early_warning_system.py:
+        * Scripts/modules/commands/early_warning_system_unittest.py: Added.
+        * Scripts/modules/commands/queues.py:
+        * Scripts/modules/commands/queues_unittest.py:
+        * Scripts/modules/commands/queuestest.py: Added.
+        * Scripts/modules/mock_bugzillatool.py:
+        * Scripts/modules/patchcollection.py:
+        * Scripts/modules/queueengine.py:
+        * Scripts/run-webkit-unittests:
+
+2009-12-20  Adam Barth  <abarth at webkit.org>
+
         Reviewed by Eric Seidel.
 
         Prepare QueueStatusServer for new status messages
diff --git a/WebKitTools/Scripts/modules/commands/early_warning_system.py b/WebKitTools/Scripts/modules/commands/early_warning_system.py
index 3e9d2c7..56d2035 100644
--- a/WebKitTools/Scripts/modules/commands/early_warning_system.py
+++ b/WebKitTools/Scripts/modules/commands/early_warning_system.py
@@ -42,8 +42,9 @@ class AbstractEarlyWarningSystem(AbstractReviewQueue):
     def should_proceed_with_work_item(self, patch):
         try:
             self.run_bugzilla_tool(["build", self.port.flag(), "--force-clean", "--quiet"])
+            self._update_status("Building", patch)
         except ScriptError, e:
-            self._update_status("Unable to perform a build.")
+            self._update_status("Unable to perform a build")
             return False
         return True
 
@@ -58,21 +59,20 @@ class AbstractEarlyWarningSystem(AbstractReviewQueue):
                 "--parent-command=%s" % self.name,
                 "--no-update",
                 patch["id"]])
-            self._patches.did_pass(patch)
+            self._did_pass(patch)
         except ScriptError, e:
-            self._patches.did_fail(patch)
+            self._did_fail(patch)
             raise e
 
     @classmethod
     def handle_script_error(cls, tool, state, script_error):
+        status_id = cls._update_status_for_script_error(tool, state, script_error)
         # FIXME: This won't be right for ports that don't use build-webkit!
         if not script_error.command_name() == "build-webkit":
             return
-        patch = state["patch"]
-        status_id = tool.status_bot.update_status(cls.name, "patch %s failed: %s" % (patch["id"], script_error.message), patch, StringIO(script_error.output))
         results_link = tool.status_bot.results_url_for_status(status_id)
-        message = "Attachment %s did not build on %s:\nBuild output: %s" % (patch["id"], cls.port_name, results_link)
-        tool.bugs.post_comment_to_bug(patch["bug_id"], message, cc=cls.watchers)
+        message = "Attachment %s did not build on %s:\nBuild output: %s" % (state["patch"]["id"], cls.port_name, results_link)
+        tool.bugs.post_comment_to_bug(state["patch"]["bug_id"], message, cc=cls.watchers)
 
 
 class GtkEWS(AbstractEarlyWarningSystem):
diff --git a/WebKitTools/Scripts/modules/commands/early_warning_system_unittest.py b/WebKitTools/Scripts/modules/commands/early_warning_system_unittest.py
new file mode 100644
index 0000000..a5459df
--- /dev/null
+++ b/WebKitTools/Scripts/modules/commands/early_warning_system_unittest.py
@@ -0,0 +1,56 @@
+# 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 os
+import unittest
+
+from modules.commands.early_warning_system import *
+from modules.commands.queuestest import QueuesTest
+from modules.mock import Mock
+
+class EarlyWarningSytemTest(QueuesTest):
+    def test_chromium_ews(self):
+        expected_stderr = {
+            "begin_work_queue" : "CAUTION: chromium-ews will discard all local changes in \"%s\"\nRunning WebKit chromium-ews.\n" % os.getcwd(),
+            "handle_unexpected_error" : "Mock error message\n",
+        }
+        self.assert_queue_outputs(ChromiumEWS(), expected_stderr=expected_stderr)
+
+    def test_qt_ews(self):
+        expected_stderr = {
+            "begin_work_queue" : "CAUTION: qt-ews will discard all local changes in \"%s\"\nRunning WebKit qt-ews.\n" % os.getcwd(),
+            "handle_unexpected_error" : "Mock error message\n",
+        }
+        self.assert_queue_outputs(QtEWS(), expected_stderr=expected_stderr)
+
+    def test_gtk_ews(self):
+        expected_stderr = {
+            "begin_work_queue" : "CAUTION: gtk-ews will discard all local changes in \"%s\"\nRunning WebKit gtk-ews.\n" % os.getcwd(),
+            "handle_unexpected_error" : "Mock error message\n",
+        }
+        self.assert_queue_outputs(GtkEWS(), expected_stderr=expected_stderr)
diff --git a/WebKitTools/Scripts/modules/commands/queues.py b/WebKitTools/Scripts/modules/commands/queues.py
index e6e1503..8e39f3a 100644
--- a/WebKitTools/Scripts/modules/commands/queues.py
+++ b/WebKitTools/Scripts/modules/commands/queues.py
@@ -47,6 +47,11 @@ class AbstractQueue(Command, QueueEngineDelegate):
     watchers = [
         "webkit-bot-watchers at googlegroups.com",
     ]
+
+    _pass_status = "Pass"
+    _fail_status = "Fail"
+    _error_status = "Error"
+
     def __init__(self, options=None): # Default values should never be collections (like []) as default values are shared between invocations
         options_list = (options or []) + [
             make_option("--no-confirm", action="store_false", dest="confirm", default=True, help="Do not ask the user for confirmation before running the queue.  Dangerous!"),
@@ -62,6 +67,12 @@ class AbstractQueue(Command, QueueEngineDelegate):
     def _update_status(self, message, patch=None, results_file=None):
         self.tool.status_bot.update_status(self.name, message, patch, results_file)
 
+    def _did_pass(self, patch):
+        self._update_status(self._pass_status, patch)
+
+    def _did_fail(self, patch):
+        self._update_status(self._fail_status, patch)
+
     def queue_log_path(self):
         return "%s.log" % self.name
 
@@ -69,12 +80,12 @@ class AbstractQueue(Command, QueueEngineDelegate):
         return os.path.join("%s-logs" % self.name, "%s.log" % patch["bug_id"])
 
     def begin_work_queue(self):
-        log("CAUTION: %s will discard all local changes in %s" % (self.name, self.tool.scm().checkout_root))
+        log("CAUTION: %s will discard all local changes in \"%s\"" % (self.name, self.tool.scm().checkout_root))
         if self.options.confirm:
             response = raw_input("Are you sure?  Type \"yes\" to continue: ")
             if (response != "yes"):
                 error("User declined.")
-        log("Running WebKit %s. %s" % (self.name, datetime.now().strftime(QueueEngine.log_date_format)))
+        log("Running WebKit %s." % self.name)
 
     def should_continue_work_queue(self):
         return True
@@ -101,11 +112,14 @@ class AbstractQueue(Command, QueueEngineDelegate):
     def log_progress(self, patch_ids):
         log("%s in %s [%s]" % (pluralize("patch", len(patch_ids)), self.name, ", ".join(map(str, patch_ids))))
 
-    def execute(self, options, args, tool):
+    def execute(self, options, args, tool, engine=QueueEngine):
         self.options = options
         self.tool = tool
-        work_queue = QueueEngine(self.name, self)
-        return work_queue.run()
+        return engine(self.name, self).run()
+
+    @classmethod
+    def _update_status_for_script_error(cls, tool, state, script_error):
+        return tool.status_bot.update_status(cls.name, script_error.message, state["patch"], StringIO(script_error.output))
 
 
 class CommitQueue(AbstractQueue, StepSequenceErrorHandler):
@@ -121,7 +135,7 @@ class CommitQueue(AbstractQueue, StepSequenceErrorHandler):
     def next_work_item(self):
         patches = self.tool.bugs.fetch_patches_from_commit_queue(reject_invalid_patches=True)
         if not patches:
-            self._update_status("Empty queue.")
+            self._update_status("Empty queue")
             return None
         # Only bother logging if we have patches in the queue.
         self.log_progress([patch['id'] for patch in patches])
@@ -131,14 +145,19 @@ class CommitQueue(AbstractQueue, StepSequenceErrorHandler):
         red_builders_names = self.tool.buildbot.red_core_builders_names()
         if red_builders_names:
             red_builders_names = map(lambda name: "\"%s\"" % name, red_builders_names) # Add quotes around the names.
-            self._update_status("Builders [%s] are red. See http://build.webkit.org." % ", ".join(red_builders_names), None)
+            self._update_status("Builders [%s] are red. See http://build.webkit.org" % ", ".join(red_builders_names), None)
             return False
-        self._update_status("Landing patch %s from bug %s." % (patch["id"], patch["bug_id"]), patch)
+        self._update_status("Landing patch", patch)
         return True
 
     def process_work_item(self, patch):
-        self._cc_watchers(patch["bug_id"])
-        self.run_bugzilla_tool(["land-attachment", "--force-clean", "--non-interactive", "--parent-command=commit-queue", "--quiet", patch["id"]])
+        try:
+            self._cc_watchers(patch["bug_id"])
+            self.run_bugzilla_tool(["land-attachment", "--force-clean", "--non-interactive", "--parent-command=commit-queue", "--quiet", patch["id"]])
+            self._did_pass(patch)
+        except ScriptError, e:
+            self._did_fail(patch)
+            raise e
 
     def handle_unexpected_error(self, patch, message):
         self.tool.bugs.reject_patch_from_commit_queue(patch["id"], message)
@@ -154,9 +173,8 @@ class CommitQueue(AbstractQueue, StepSequenceErrorHandler):
 
     @classmethod
     def handle_script_error(cls, tool, state, script_error):
-        patch = state["patch"]
-        status_id = tool.status_bot.update_status(cls.name, "patch %s failed: %s" % (patch['id'], script_error.message), patch, StringIO(script_error.output))
-        tool.bugs.reject_patch_from_commit_queue(patch["id"], cls._error_message_for_bug(tool, status_id, script_error))
+        status_id = cls._update_status_for_script_error(tool, state, script_error)
+        tool.bugs.reject_patch_from_commit_queue(state["patch"]["id"], cls._error_message_for_bug(tool, status_id, script_error))
 
 
 class AbstractReviewQueue(AbstractQueue, PersistentPatchCollectionDelegate, StepSequenceErrorHandler):
@@ -184,7 +202,7 @@ class AbstractReviewQueue(AbstractQueue, PersistentPatchCollectionDelegate, Step
         patch_id = self._patches.next()
         if patch_id:
             return self.tool.bugs.fetch_attachment(patch_id)
-        self._update_status("Empty queue.")
+        self._update_status("Empty queue")
 
     def should_proceed_with_work_item(self, patch):
         raise NotImplementedError, "subclasses must implement"
@@ -208,7 +226,7 @@ class StyleQueue(AbstractReviewQueue):
         AbstractReviewQueue.__init__(self)
 
     def should_proceed_with_work_item(self, patch):
-        self._update_status("Checking style for patch %s on bug %s." % (patch["id"], patch["bug_id"]), patch)
+        self._update_status("Checking style", patch)
         return True
 
     def process_work_item(self, patch):
@@ -216,14 +234,15 @@ class StyleQueue(AbstractReviewQueue):
             self.run_bugzilla_tool(["check-style", "--force-clean", "--non-interactive", "--parent-command=style-queue", patch["id"]])
             message = "%s ran check-webkit-style on attachment %s without any errors." % (self.name, patch["id"])
             self.tool.bugs.post_comment_to_bug(patch["bug_id"], message, cc=self.watchers)
-            self._patches.did_pass(patch)
+            self._did_pass(patch)
         except ScriptError, e:
-            self._patches.did_fail(patch)
+            self._did_fail(patch)
             raise e
 
     @classmethod
     def handle_script_error(cls, tool, state, script_error):
+        status_id = cls._update_status_for_script_error(tool, state, script_error)
         if not script_error.command_name() == "check-webkit-style":
             return
-        message = "Attachment %s did not pass %s:\n\n%s" % (state["patch"]["id"], cls.name, script_error.message_with_output(output_limit=5*1024))
+        message = "Attachment %s did not pass %s:\n\n%s" % (state["patch"]["id"], cls.name, script_error.message_with_output(output_limit=3*1024))
         tool.bugs.post_comment_to_bug(state["patch"]["bug_id"], message, cc=cls.watchers)
diff --git a/WebKitTools/Scripts/modules/commands/queues_unittest.py b/WebKitTools/Scripts/modules/commands/queues_unittest.py
index 9a64604..8647af9 100644
--- a/WebKitTools/Scripts/modules/commands/queues_unittest.py
+++ b/WebKitTools/Scripts/modules/commands/queues_unittest.py
@@ -26,10 +26,12 @@
 # (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 os
 import unittest
 
 from modules.commands.commandtest import CommandsTest
 from modules.commands.queues import *
+from modules.commands.queuestest import QueuesTest
 from modules.mock_bugzillatool import MockBugzillaTool
 from modules.outputcapture import OutputCapture
 
@@ -59,3 +61,21 @@ class AbstractQueueTest(CommandsTest):
     def test_run_bugzilla_tool(self):
         self._assert_run_bugzilla_tool([1])
         self._assert_run_bugzilla_tool(["one", 2])
+
+
+class CommitQueueTest(QueuesTest):
+    def test_style_queue(self):
+        expected_stderr = {
+            "begin_work_queue" : "CAUTION: commit-queue will discard all local changes in \"%s\"\nRunning WebKit commit-queue.\n" % os.getcwd(),
+            "next_work_item" : "2 patches in commit-queue [197, 128]\n",
+        }
+        self.assert_queue_outputs(CommitQueue(), expected_stderr=expected_stderr)
+
+
+class StyleQueueTest(QueuesTest):
+    def test_style_queue(self):
+        expected_stderr = {
+            "begin_work_queue" : "CAUTION: style-queue will discard all local changes in \"%s\"\nRunning WebKit style-queue.\n" % os.getcwd(),
+            "handle_unexpected_error" : "Mock error message\n",
+        }
+        self.assert_queue_outputs(StyleQueue(), expected_stderr=expected_stderr)
diff --git a/WebKitTools/Scripts/modules/commands/queuestest.py b/WebKitTools/Scripts/modules/commands/queuestest.py
new file mode 100644
index 0000000..03f075e
--- /dev/null
+++ b/WebKitTools/Scripts/modules/commands/queuestest.py
@@ -0,0 +1,97 @@
+# 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 modules.mock import Mock
+from modules.mock_bugzillatool import MockBugzillaTool
+from modules.outputcapture import OutputCapture
+
+
+class MockQueueEngine(object):
+    def __init__(self, name, queue):
+        pass
+
+    def run(self):
+        pass
+
+
+class QueuesTest(unittest.TestCase):
+    mock_work_item = {
+        "id" : 1234,
+        "bug_id" : 345,
+    }
+
+    def assert_queue_outputs(self, queue, args=None, work_item=None, expected_stdout=None, expected_stderr=None, options=Mock(), tool=MockBugzillaTool()):
+        if not expected_stdout:
+            expected_stdout = {}
+        if not expected_stderr:
+            expected_stderr = {}
+        if not args:
+            args = []
+        if not work_item:
+            work_item = self.mock_work_item
+        options.confirm = False # FIXME: We should have a tool.user that we can mock.
+
+        queue.execute(options, args, tool, engine=MockQueueEngine)
+
+        OutputCapture().assert_outputs(self,
+                queue.queue_log_path,
+                expected_stdout=expected_stdout.get("queue_log_path", ""),
+                expected_stderr=expected_stderr.get("queue_log_path", ""))
+        OutputCapture().assert_outputs(self,
+                queue.work_item_log_path,
+                args=[work_item],
+                expected_stdout=expected_stdout.get("work_item_log_path", ""),
+                expected_stderr=expected_stderr.get("work_item_log_path", ""))
+        OutputCapture().assert_outputs(self,
+                queue.begin_work_queue,
+                expected_stdout=expected_stdout.get("begin_work_queue", ""),
+                expected_stderr=expected_stderr.get("begin_work_queue", ""))
+        OutputCapture().assert_outputs(self,
+                queue.should_continue_work_queue,
+                expected_stdout=expected_stdout.get("should_continue_work_queue", ""), expected_stderr=expected_stderr.get("should_continue_work_queue", ""))
+        OutputCapture().assert_outputs(self,
+                queue.next_work_item,
+                expected_stdout=expected_stdout.get("next_work_item", ""),
+                expected_stderr=expected_stderr.get("next_work_item", ""))
+        OutputCapture().assert_outputs(self,
+                queue.should_proceed_with_work_item,
+                args=[work_item],
+                expected_stdout=expected_stdout.get("should_proceed_with_work_item", ""),
+                expected_stderr=expected_stderr.get("should_proceed_with_work_item", ""))
+        OutputCapture().assert_outputs(self,
+                queue.process_work_item,
+                args=[work_item],
+                expected_stdout=expected_stdout.get("process_work_item", ""),
+                expected_stderr=expected_stderr.get("process_work_item", ""))
+        OutputCapture().assert_outputs(self,
+                queue.handle_unexpected_error,
+                args=[work_item, "Mock error message"],
+                expected_stdout=expected_stdout.get("handle_unexpected_error", ""),
+                expected_stderr=expected_stderr.get("handle_unexpected_error", ""))
diff --git a/WebKitTools/Scripts/modules/mock_bugzillatool.py b/WebKitTools/Scripts/modules/mock_bugzillatool.py
index 0ba9d0d..351398f 100644
--- a/WebKitTools/Scripts/modules/mock_bugzillatool.py
+++ b/WebKitTools/Scripts/modules/mock_bugzillatool.py
@@ -57,7 +57,7 @@ class MockBugzilla(Mock):
     def fetch_attachment_ids_from_review_queue(self):
         return [197, 128]
 
-    def fetch_patches_from_commit_queue(self):
+    def fetch_patches_from_commit_queue(self, reject_invalid_patches=False):
         return [self.patch1, self.patch2]
 
     def fetch_patches_from_pending_commit_list(self):
@@ -146,6 +146,12 @@ class MockStatusBot(object):
     def __init__(self):
         self.statusbot_host = "example.com"
 
+    def patch_status(self, queue_name, patch_id):
+        return None
+
+    def update_status(self, queue_name, status, patch=None, results_file=None):
+        return 187
+
 
 class MockBugzillaTool():
     def __init__(self):
diff --git a/WebKitTools/Scripts/modules/patchcollection.py b/WebKitTools/Scripts/modules/patchcollection.py
index add8129..246f487 100644
--- a/WebKitTools/Scripts/modules/patchcollection.py
+++ b/WebKitTools/Scripts/modules/patchcollection.py
@@ -39,9 +39,6 @@ class PersistentPatchCollectionDelegate:
 
 
 class PersistentPatchCollection:
-    _initial_status = "Pending"
-    _pass_status = "Pass"
-    _fail_status = "Fail"
     def __init__(self, delegate):
         self._delegate = delegate
         self._name = self._delegate.collection_name()
@@ -64,8 +61,3 @@ class PersistentPatchCollection:
             if not status:
                 return patch_id
 
-    def did_pass(self, patch):
-        self._status.update_status(self._name, self._pass_status, patch)
-
-    def did_fail(self, patch):
-        self._status.update_status(self._name, self._fail_status, patch)
diff --git a/WebKitTools/Scripts/modules/queueengine.py b/WebKitTools/Scripts/modules/queueengine.py
index 6cb1e13..c263c05 100644
--- a/WebKitTools/Scripts/modules/queueengine.py
+++ b/WebKitTools/Scripts/modules/queueengine.py
@@ -39,9 +39,6 @@ from modules.logging import log, OutputTee
 from modules.statusbot import StatusBot
 
 class QueueEngineDelegate:
-    def queue_name(self):
-        raise NotImplementedError, "subclasses must implement"
-
     def queue_log_path(self):
         raise NotImplementedError, "subclasses must implement"
 
diff --git a/WebKitTools/Scripts/run-webkit-unittests b/WebKitTools/Scripts/run-webkit-unittests
index 576a5e2..c4252d2 100755
--- a/WebKitTools/Scripts/run-webkit-unittests
+++ b/WebKitTools/Scripts/run-webkit-unittests
@@ -35,6 +35,7 @@ from modules.buildbot_unittest import *
 from modules.buildsteps_unittest import *
 from modules.changelogs_unittest import *
 from modules.commands.download_unittest import *
+from modules.commands.early_warning_system_unittest import *
 from modules.commands.upload_unittest import *
 from modules.commands.queries_unittest import *
 from modules.commands.queues_unittest import *

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list