[SCM] WebKit Debian packaging branch, webkit-1.1, updated. upstream/1.1.17-1283-gcf603cf
abarth at webkit.org
abarth at webkit.org
Tue Jan 5 23:56:49 UTC 2010
The following commit has been merged in the webkit-1.1 branch:
commit a6ccce3bc9abb2b737db92e1e4d4e2126dcd30d5
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