+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.
import os
+from modules.buildsteps import BuildSteps
from modules.commands.download import *
from modules.commands.queries import *
from modules.commands.queues import *
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
--- /dev/null
+# 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)
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)
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)
]
@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):
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)
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()
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())
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)