WebKitTools/ChangeLog

112009-11-21 Eric Seidel <eric@webkit.org>
22
 3 Reviewed by NOBODY (OOPS!).
 4
 5 AbstractQueue.run_bugzilla_tool throws an exception
 6 https://bugs.webkit.org/show_bug.cgi?id=31769
 7
 8 * Scripts/modules/commands/queues.py:
 9 - Fix exception in run_bugzilla_tool and make it return a result to be more testable.
 10 * Scripts/modules/commands/queues_unittest.py: Added.
 11 * Scripts/modules/webkitlandingscripts.py:
 12 - Make run_and_throw_if_fail return the output for easier testing.
 13 * Scripts/run-webkit-unittests:
 14 - Add queues_unittest.
 15
 162009-11-21 Eric Seidel <eric@webkit.org>
 17
318 Reviewed by Adam Barth.
419
520 commit-queue fails to run with "permissions error" due to bad bugzilla-tool path

WebKitTools/Scripts/modules/commands/queues.py

@@class AbstractQueue(Command, WorkQueueDelegate):
9595 raise NotImplementedError, "subclasses must implement"
9696
9797 def run_bugzilla_tool(self, args):
98  bugzilla_tool_args = [tool.path()] + args
99  WebKitLandingScripts.run_and_throw_if_fail(bugzilla_tool_args)
 98 bugzilla_tool_args = [self.tool.path()] + args
 99 return WebKitLandingScripts.run_and_throw_if_fail(bugzilla_tool_args)
100100
101101 def log_progress(self, patch_ids):
102102 log("%s in %s [%s]" % (pluralize("patch", len(patch_ids)), self.name, ", ".join(patch_ids)))

WebKitTools/Scripts/modules/commands/queues_unittest.py

 1#!/usr/bin/env python
 2# Copyright (c) 2009, Google Inc. All rights reserved.
 3#
 4# Redistribution and use in source and binary forms, with or without
 5# modification, are permitted provided that the following conditions are
 6# met:
 7#
 8# * Redistributions of source code must retain the above copyright
 9# notice, this list of conditions and the following disclaimer.
 10# * Redistributions in binary form must reproduce the above
 11# copyright notice, this list of conditions and the following disclaimer
 12# in the documentation and/or other materials provided with the
 13# distribution.
 14# * Neither the name of Google Inc. nor the names of its
 15# contributors may be used to endorse or promote products derived from
 16# this software without specific prior written permission.
 17#
 18# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 19# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 20# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 21# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 22# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 23# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 24# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 25# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 26# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 27# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 28# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 29
 30import unittest
 31
 32from modules.commands.queues import *
 33
 34class MockTool(object):
 35 def path(self):
 36 return "/bin/echo"
 37
 38class AbstractQueueTest(unittest.TestCase):
 39 def test_run_bugzilla_tool(self):
 40 queue = AbstractQueue()
 41 queue.tool = MockTool() # Normally set during execute()
 42 # The output doesn't matter here so much as making sure no exceptions are thrown.
 43 self.assertEquals(queue.run_bugzilla_tool(["foo", "bar"]), "foo bar\n")

WebKitTools/Scripts/modules/webkitlandingscripts.py

@@class WebKitLandingScripts:
9696 return child_process.poll()
9797 teed_output.write(output_line)
9898
 99 # FIXME: This should be unified with SCM.run_command() and placed in its own module.
99100 @staticmethod
100101 def run_and_throw_if_fail(args, quiet=False):
101102 # Cache the child's output locally so it can be used for error reports.

@@class WebKitLandingScripts:
112113
113114 if exit_code:
114115 raise ScriptError(script_args=args, exit_code=exit_code, output=child_output)
 116 return child_output
115117
116118 @classmethod
117119 def run_webkit_script(cls, script_name, quiet=False, port=WebKitPort):

WebKitTools/Scripts/run-webkit-unittests

@@from modules.bugzilla_unittest import *
3333from modules.buildbot_unittest import *
3434from modules.changelogs_unittest import *
3535from modules.commands.queries_unittest import *
 36from modules.commands.queues_unittest import *
3637from modules.committers_unittest import *
3738from modules.cpp_style_unittest import *
3839from modules.diff_parser_unittest import *