2009-11-26 Adam Barth <abarth@webkit.org>
authorabarth@webkit.org <abarth@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 27 Nov 2009 07:54:57 +0000 (07:54 +0000)
committerabarth@webkit.org <abarth@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 27 Nov 2009 07:54:57 +0000 (07:54 +0000)
        Reviewed by Eric Seidel.

        [bzt] Kill WebKitLandingScripts
        https://bugs.webkit.org/show_bug.cgi?id=31904

        Step 1: Kill prepare_clean_working_directory and run_webkit_tests.

        * Scripts/bugzilla-tool:
        * Scripts/modules/buildsteps.py: Added.
        * Scripts/modules/commands/download.py:
        * Scripts/modules/landingsequence.py:
        * Scripts/modules/webkitlandingscripts.py:

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

WebKitTools/ChangeLog
WebKitTools/Scripts/bugzilla-tool
WebKitTools/Scripts/modules/buildsteps.py [new file with mode: 0644]
WebKitTools/Scripts/modules/commands/download.py
WebKitTools/Scripts/modules/landingsequence.py
WebKitTools/Scripts/modules/webkitlandingscripts.py

index 1cd7774e313f4675c2bb80f442338c7a06577f40..512a3284e97b66a4923cdb7e4ded65f082d97471 100644 (file)
@@ -1,3 +1,18 @@
+2009-11-26  Adam Barth  <abarth@webkit.org>
+
+        Reviewed by Eric Seidel.
+
+        [bzt] Kill WebKitLandingScripts
+        https://bugs.webkit.org/show_bug.cgi?id=31904
+
+        Step 1: Kill prepare_clean_working_directory and run_webkit_tests.
+
+        * Scripts/bugzilla-tool:
+        * Scripts/modules/buildsteps.py: Added.
+        * Scripts/modules/commands/download.py:
+        * Scripts/modules/landingsequence.py:
+        * Scripts/modules/webkitlandingscripts.py:
+
 2009-11-26  Zoltan Horvath  <zoltan@webkit.org>
 
         Reviewed by Adam Barth.
index 8e0181d5f9972f728520dcca7152f48a27075121..35a344a19a4ec77d1145052ed63a603771859de7 100755 (executable)
@@ -32,6 +32,7 @@
 
 import os
 
+from modules.buildsteps import BuildSteps
 from modules.commands.download import *
 from modules.commands.queries import *
 from modules.commands.queues import *
@@ -46,6 +47,7 @@ class BugzillaTool(MultiCommandTool):
         self.bugs = Bugzilla()
         self.buildbot = BuildBot()
         self.cached_scm = None
+        self.steps = BuildSteps()
 
     def dry_run_callback(self, option, opt, value, parser):
         self.scm().dryrun = True
diff --git a/WebKitTools/Scripts/modules/buildsteps.py b/WebKitTools/Scripts/modules/buildsteps.py
new file mode 100644 (file)
index 0000000..f215f1a
--- /dev/null
@@ -0,0 +1,50 @@
+# 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
+
+from modules.webkitlandingscripts import WebKitLandingScripts
+from modules.webkitport import WebKitPort
+
+class BuildSteps:
+    def clean_working_directory(self, scm, options, allow_local_commits=False):
+        os.chdir(scm.checkout_root)
+        if not allow_local_commits:
+            scm.ensure_no_local_commits(options.force_clean)
+        if options.clean:
+            scm.ensure_clean_working_directory(force_clean=options.force_clean)
+
+    def run_tests(self, launch_safari, fail_fast=False, quiet=False, port=WebKitPort):
+        args = port.run_webkit_tests_command()
+        if not launch_safari:
+            args.append("--no-launch-safari")
+        if quiet:
+            args.append("--quiet")
+        if fail_fast:
+            args.append("--exit-after-n-failures=1")
+        WebKitLandingScripts.run_and_throw_if_fail(args)
index d0eb26538ad3a83b1f3f418e6c037cbc0b413b81..181c95c8eb689e466a693ba9b84c0eeeab563891 100644 (file)
@@ -87,7 +87,7 @@ class ApplyAttachment(Command):
         Command.__init__(self, "Apply an attachment to the local working directory", "ATTACHMENT_ID", options=options)
 
     def execute(self, options, args, tool):
-        WebKitApplyingScripts.setup_for_patch_apply(tool.scm(), options)
+        WebKitApplyingScripts.setup_for_patch_apply(tool, options)
         attachment_id = args[0]
         attachment = tool.bugs.fetch_attachment(attachment_id)
         WebKitApplyingScripts.apply_patches_with_options(tool.scm(), [attachment], options)
@@ -101,7 +101,7 @@ class ApplyPatches(Command):
         Command.__init__(self, "Apply reviewed patches from provided bugs to the local working directory", "BUGID", options=options)
 
     def execute(self, options, args, tool):
-        WebKitApplyingScripts.setup_for_patch_apply(tool.scm(), options)
+        WebKitApplyingScripts.setup_for_patch_apply(tool, options)
         bug_id = args[0]
         patches = tool.bugs.fetch_reviewed_patches_from_bug(bug_id)
         WebKitApplyingScripts.apply_patches_with_options(tool.scm(), patches, options)
@@ -116,10 +116,10 @@ class WebKitApplyingScripts:
         ]
 
     @staticmethod
-    def setup_for_patch_apply(scm, options):
-        WebKitLandingScripts.prepare_clean_working_directory(scm, options, allow_local_commits=True)
+    def setup_for_patch_apply(tool, options):
+        tool.steps.clean_working_directory(tool.scm(), options, allow_local_commits=True)
         if options.update:
-            scm.update_webkit()
+            tool.scm().update_webkit()
 
     @staticmethod
     def apply_patches_with_options(scm, patches, options):
@@ -392,7 +392,7 @@ class Rollout(Command):
             else:
                 log("Failed to parse bug number from diff.  No bugs will be updated/reopened after the rollout.")
 
-        WebKitLandingScripts.prepare_clean_working_directory(tool.scm(), options)
+        tool.steps.clean_working_directory(tool.scm(), options)
         tool.scm().update_webkit()
         tool.scm().apply_reverse_diff(revision)
         self._create_changelogs_for_revert(tool.scm(), revision)
index ef1275321a9a7fa91ccf9eb26e4cf3ca82892047..50852bcbd9a1256331727a5cd7403e7abd076201 100644 (file)
@@ -68,7 +68,7 @@ class LandingSequence:
             WorkQueue.exit_after_handled_error(e)
 
     def clean(self):
-        WebKitLandingScripts.prepare_clean_working_directory(self._tool.scm(), self._options)
+        self._tool.steps.clean_working_directory(self._tool.scm(), self._options)
 
     def update(self):
         self._tool.scm().update_webkit()
@@ -85,7 +85,7 @@ class LandingSequence:
 
     def test(self):
         # When running non-interactively we don't want to launch Safari and we want to exit after the first failure.
-        WebKitLandingScripts.run_webkit_tests(launch_safari=not self._options.non_interactive, fail_fast=self._options.non_interactive, quiet=self._options.quiet, port=self._port)
+        self._tool.run_tests(launch_safari=not self._options.non_interactive, fail_fast=self._options.non_interactive, quiet=self._options.quiet, port=self._port)
 
     def commit(self):
         commit_message = commit_message_for_this_commit(self._tool.scm())
index e6245050938be01de51edf0f982ad767b8641084..fe4e2719d1feca6d6345dfd5462e1dbb2112d520 100644 (file)
@@ -129,21 +129,4 @@ class WebKitLandingScripts:
             return
         error("Builders at %s are red, please do not commit.  Pass --ignore-builders to bypass this check." % (buildbot.buildbot_host))
 
-    @classmethod
-    def run_webkit_tests(cls, launch_safari, fail_fast=False, quiet=False, port=WebKitPort):
-        args = port.run_webkit_tests_command()
-        if not launch_safari:
-            args.append("--no-launch-safari")
-        if quiet:
-            args.append("--quiet")
-        if fail_fast:
-            args.append("--exit-after-n-failures=1")
-        cls.run_and_throw_if_fail(args)
 
-    @staticmethod
-    def prepare_clean_working_directory(scm, options, allow_local_commits=False):
-        os.chdir(scm.checkout_root)
-        if not allow_local_commits:
-            scm.ensure_no_local_commits(options.force_clean)
-        if options.clean:
-            scm.ensure_clean_working_directory(force_clean=options.force_clean)