2009-12-06 Adam Barth <abarth@webkit.org>
authorabarth@webkit.org <abarth@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 7 Dec 2009 05:11:12 +0000 (05:11 +0000)
committerabarth@webkit.org <abarth@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 7 Dec 2009 05:11:12 +0000 (05:11 +0000)
        Reviewed by Eric Seidel.

        [bzt] Implement Qt EarlyWarningSystem and Chromium EarlyWarningSystem
        https://bugs.webkit.org/show_bug.cgi?id=32205

        * Scripts/modules/commands/early_warning_system.py: Added.
        * Scripts/modules/commands/queues.py:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@51746 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKitTools/ChangeLog
WebKitTools/Scripts/modules/commands/early_warning_system.py [new file with mode: 0644]
WebKitTools/Scripts/modules/commands/queues.py

index 85b232e5f5fba19ecfb2c4dd8eebb51aa29a8456..a01e756d4fd0df63f6b36753e25a1ddf44c90566 100644 (file)
@@ -1,3 +1,13 @@
+2009-12-06  Adam Barth  <abarth@webkit.org>
+
+        Reviewed by Eric Seidel.
+
+        [bzt] Implement Qt EarlyWarningSystem and Chromium EarlyWarningSystem
+        https://bugs.webkit.org/show_bug.cgi?id=32205
+
+        * Scripts/modules/commands/early_warning_system.py: Added.
+        * Scripts/modules/commands/queues.py:
+
 2009-12-06  Dan Bernstein  <mitz@apple.com>
 
         Reviewed by Adele Peterson.
diff --git a/WebKitTools/Scripts/modules/commands/early_warning_system.py b/WebKitTools/Scripts/modules/commands/early_warning_system.py
new file mode 100644 (file)
index 0000000..a3f7646
--- /dev/null
@@ -0,0 +1,66 @@
+#!/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.
+
+from modules.commands.queues import AbstractReviewQueue
+from modules.scm import ScriptError
+from modules.webkitport import WebKitPort
+
+class AbstractEarlyWarningSystem(AbstractReviewQueue):
+    def __init__(self):
+        AbstractReviewQueue.__init__(self)
+        self.port = WebKitPort.port(self.port_name)
+
+    def should_proceed_with_work_item(self, patch):
+        try:
+            self.run_bugzilla_tool(["build", self.port.flag(), "--force-clean", "--quiet"])
+        except ScriptError, e:
+            return (False, "Unable to perform a build.", None)
+        return (True, "Building patch %s on bug %s." % (patch["id"], patch["bug_id"]), patch)
+
+    def process_work_item(self, patch):
+        self.run_bugzilla_tool([
+            "build-attachment",
+            self.port.flag(),
+            "--force-clean",
+            "--quiet",
+            "--non-interactive",
+            "--parent-command=%s" % self.name,
+            "--no-update",
+            patch["id"]])
+        self._patches.did_pass(patch)
+
+
+class QtEWS(AbstractEarlyWarningSystem):
+    name = "qt-ews"
+    port_name = "qt"
+
+
+class ChromiumEWS(AbstractEarlyWarningSystem):
+    name = "chromium-ews"
+    port_name = "chromium"
index d45c30d90b45cd00afc95f9b95c01db02d8829ce..6aefd0f82629b908a504d6b1f58d660d29c35fbc 100644 (file)
@@ -41,10 +41,10 @@ from modules.patchcollection import PatchCollection, PersistentPatchCollection,
 from modules.processutils import run_and_throw_if_fail
 from modules.scm import ScriptError
 from modules.statusbot import StatusBot
-from modules.webkitport import WebKitPort
 from modules.workqueue import WorkQueue, WorkQueueDelegate
 
 class AbstractQueue(Command, WorkQueueDelegate):
+    show_in_main_help = False
     watchers = "webkit-bot-watchers@googlegroups.com"
     def __init__(self, options=None): # Default values should never be collections (like []) as default values are shared between invocations
         options_list = (options or []) + [
@@ -107,7 +107,6 @@ class AbstractQueue(Command, WorkQueueDelegate):
 
 class CommitQueue(AbstractQueue, LandingSequenceErrorHandler):
     name = "commit-queue"
-    show_in_main_help = False
     def __init__(self):
         AbstractQueue.__init__(self)
 
@@ -190,7 +189,6 @@ class AbstractReviewQueue(AbstractQueue, PersistentPatchCollectionDelegate, Land
 
 class StyleQueue(AbstractReviewQueue):
     name = "style-queue"
-    show_in_main_help = False
     def __init__(self):
         AbstractReviewQueue.__init__(self)
 
@@ -217,26 +215,3 @@ class StyleQueue(AbstractReviewQueue):
         if re.search("check-webkit-style", command):
             message = "Attachment %s did not pass %s:\n\n%s" % (patch["id"], cls.name, script_error.message_with_output(output_limit=5*1024))
             tool.bugs.post_comment_to_bug(patch["bug_id"], message, cc=cls.watchers)
-
-
-class BuildQueue(AbstractReviewQueue):
-    name = "build-queue"
-    show_in_main_help = False
-    def __init__(self):
-        options = WebKitPort.port_options()
-        AbstractReviewQueue.__init__(self, options)
-
-    def begin_work_queue(self):
-        AbstractReviewQueue.begin_work_queue(self)
-        self.port = WebKitPort.port(self.options)
-
-    def should_proceed_with_work_item(self, patch):
-        try:
-            self.run_bugzilla_tool(["build", self.port.flag(), "--force-clean", "--quiet"])
-        except ScriptError, e:
-            return (False, "Unable to perform a build.", None)
-        return (True, "Building patch %s on bug %s." % (patch["id"], patch["bug_id"]), patch)
-
-    def process_work_item(self, patch):
-        self.run_bugzilla_tool(["build-attachment", self.port.flag(), "--force-clean", "--quiet", "--non-interactive", "--parent-command=build-queue", "--no-update", patch["id"]])
-        self._patches.did_pass(patch)