diff options
Diffstat (limited to 'Tools/Scripts/webkitpy/tool/commands')
8 files changed, 38 insertions, 13 deletions
diff --git a/Tools/Scripts/webkitpy/tool/commands/download.py b/Tools/Scripts/webkitpy/tool/commands/download.py index 020f339..1b478bf 100644 --- a/Tools/Scripts/webkitpy/tool/commands/download.py +++ b/Tools/Scripts/webkitpy/tool/commands/download.py @@ -95,6 +95,7 @@ class Land(AbstractSequencedCommand): steps.EnsureBuildersAreGreen, steps.UpdateChangeLogsWithReviewer, steps.ValidateReviewer, + steps.ValidateChangeLogs, # We do this after UpdateChangeLogsWithReviewer to avoid not having to cache the diff twice. steps.Build, steps.RunTests, steps.Commit, @@ -257,6 +258,7 @@ class AbstractPatchLandingCommand(AbstractPatchSequencingCommand): steps.CleanWorkingDirectory, steps.Update, steps.ApplyPatch, + steps.ValidateChangeLogs, steps.ValidateReviewer, steps.Build, steps.RunTests, diff --git a/Tools/Scripts/webkitpy/tool/commands/download_unittest.py b/Tools/Scripts/webkitpy/tool/commands/download_unittest.py index 3748a8f..ba23ab9 100644 --- a/Tools/Scripts/webkitpy/tool/commands/download_unittest.py +++ b/Tools/Scripts/webkitpy/tool/commands/download_unittest.py @@ -109,11 +109,11 @@ class DownloadCommandsTest(CommandsTest): def test_land_diff(self): expected_stderr = "Building WebKit\nRunning Python unit tests\nRunning Perl unit tests\nRunning JavaScriptCore tests\nRunning run-webkit-tests\nCommitted r49824: <http://trac.webkit.org/changeset/49824>\nUpdating bug 42\n" mock_tool = MockTool() - mock_tool.scm().create_patch = Mock() + mock_tool.scm().create_patch = Mock(return_value="Patch1\nMockPatch\n") mock_tool.checkout().modified_changelogs = Mock(return_value=[]) self.assert_execute_outputs(Land(), [42], options=self._default_options(), expected_stderr=expected_stderr, tool=mock_tool) # Make sure we're not calling expensive calls too often. - self.assertEqual(mock_tool.scm().create_patch.call_count, 0) + self.assertEqual(mock_tool.scm().create_patch.call_count, 1) self.assertEqual(mock_tool.checkout().modified_changelogs.call_count, 1) def test_land_red_builders(self): diff --git a/Tools/Scripts/webkitpy/tool/commands/queries.py b/Tools/Scripts/webkitpy/tool/commands/queries.py index f04f384..733751e 100644 --- a/Tools/Scripts/webkitpy/tool/commands/queries.py +++ b/Tools/Scripts/webkitpy/tool/commands/queries.py @@ -272,7 +272,7 @@ class FailureReason(AbstractDeclarativeCommand): print "%s failing" % (pluralize("builder", len(red_statuses))) builder_choices = [status["name"] for status in red_statuses] # We could offer an "All" choice here. - chosen_name = User.prompt_with_list("Which builder to diagnose:", builder_choices) + chosen_name = self._tool.user.prompt_with_list("Which builder to diagnose:", builder_choices) # FIXME: prompt_with_list should really take a set of objects and a set of names and then return the object. for status in red_statuses: if status["name"] == chosen_name: @@ -345,7 +345,7 @@ class FindFlakyTests(AbstractDeclarativeCommand): def _builder_to_analyze(self): statuses = self._tool.buildbot.builder_statuses() choices = [status["name"] for status in statuses] - chosen_name = User.prompt_with_list("Which builder to analyze:", choices) + chosen_name = self._tool.user.prompt_with_list("Which builder to analyze:", choices) for status in statuses: if status["name"] == chosen_name: return (self._tool.buildbot.builder_with_name(chosen_name), status["built_revision"]) diff --git a/Tools/Scripts/webkitpy/tool/commands/queues.py b/Tools/Scripts/webkitpy/tool/commands/queues.py index e15555f..5628543 100644 --- a/Tools/Scripts/webkitpy/tool/commands/queues.py +++ b/Tools/Scripts/webkitpy/tool/commands/queues.py @@ -96,7 +96,7 @@ class AbstractQueue(Command, QueueEngineDelegate): return self._tool.executive.run_and_throw_if_fail(webkit_patch_args) def _log_directory(self): - return "%s-logs" % self.name + return os.path.join("..", "%s-logs" % self.name) # QueueEngineDelegate methods @@ -312,9 +312,9 @@ class CommitQueue(AbstractPatchQueue, StepSequenceErrorHandler, CommitQueueTaskD def refetch_patch(self, patch): return self._tool.bugs.fetch_attachment(patch.id()) - def report_flaky_tests(self, patch, flaky_tests): + def report_flaky_tests(self, patch, flaky_test_results): reporter = FlakyTestReporter(self._tool, self.name) - reporter.report_flaky_tests(flaky_tests, patch) + reporter.report_flaky_tests(flaky_test_results, patch) # StepSequenceErrorHandler methods diff --git a/Tools/Scripts/webkitpy/tool/commands/queues_unittest.py b/Tools/Scripts/webkitpy/tool/commands/queues_unittest.py index d793213..34a6a64 100644 --- a/Tools/Scripts/webkitpy/tool/commands/queues_unittest.py +++ b/Tools/Scripts/webkitpy/tool/commands/queues_unittest.py @@ -31,6 +31,8 @@ import os from webkitpy.common.checkout.scm import CheckoutNeedsUpdate from webkitpy.common.net.bugzilla import Attachment from webkitpy.common.system.outputcapture import OutputCapture +from webkitpy.layout_tests.layout_package import test_results +from webkitpy.layout_tests.layout_package import test_failures from webkitpy.thirdparty.mock import Mock from webkitpy.tool.commands.commandtest import CommandsTest from webkitpy.tool.commands.queues import * @@ -53,7 +55,7 @@ class TestFeederQueue(FeederQueue): class AbstractQueueTest(CommandsTest): def test_log_directory(self): - self.assertEquals(TestQueue()._log_directory(), "test-queue-logs") + self.assertEquals(TestQueue()._log_directory(), os.path.join("..", "test-queue-logs")) def _assert_run_webkit_patch(self, run_args, port=None): queue = TestQueue() @@ -198,6 +200,9 @@ class SecondThoughtsCommitQueue(CommitQueue): class CommitQueueTest(QueuesTest): + def _mock_test_result(self, testname): + return test_results.TestResult(testname, [test_failures.FailureTextMismatch()]) + def test_commit_queue(self): expected_stderr = { "begin_work_queue": self._default_begin_work_queue_stderr("commit-queue", MockSCM.fake_checkout_root), @@ -333,13 +338,13 @@ MOCK: release_work_item: commit-queue 197 queue.bind_to_tool(MockTool()) expected_stderr = """MOCK bug comment: bug_id=76, cc=None --- Begin comment --- -The commit-queue just saw foo/bar.html flake while processing attachment 197 on bug 42. +The commit-queue just saw foo/bar.html flake (Text diff mismatch) while processing attachment 197 on bug 42. Port: MockPort Platform: MockPlatform 1.0 --- End comment --- MOCK bug comment: bug_id=76, cc=None --- Begin comment --- -The commit-queue just saw bar/baz.html flake while processing attachment 197 on bug 42. +The commit-queue just saw bar/baz.html flake (Text diff mismatch) while processing attachment 197 on bug 42. Port: MockPort Platform: MockPlatform 1.0 --- End comment --- @@ -353,7 +358,9 @@ The commit-queue is continuing to process your patch. --- End comment --- """ - OutputCapture().assert_outputs(self, queue.report_flaky_tests, [QueuesTest.mock_work_item, ["foo/bar.html", "bar/baz.html"]], expected_stderr=expected_stderr) + test_names = ["foo/bar.html", "bar/baz.html"] + test_results = [self._mock_test_result(name) for name in test_names] + OutputCapture().assert_outputs(self, queue.report_flaky_tests, [QueuesTest.mock_work_item, test_results], expected_stderr=expected_stderr) def test_layout_test_results(self): queue = CommitQueue() diff --git a/Tools/Scripts/webkitpy/tool/commands/rebaseline.py b/Tools/Scripts/webkitpy/tool/commands/rebaseline.py index 8c4b997..34a398a 100644 --- a/Tools/Scripts/webkitpy/tool/commands/rebaseline.py +++ b/Tools/Scripts/webkitpy/tool/commands/rebaseline.py @@ -34,6 +34,7 @@ import urllib from webkitpy.common.net.buildbot import BuildBot from webkitpy.common.net.layouttestresults import LayoutTestResults from webkitpy.common.system.user import User +from webkitpy.layout_tests.layout_package import test_failures from webkitpy.layout_tests.port import factory from webkitpy.tool.grammar import pluralize from webkitpy.tool.multicommandtool import AbstractDeclarativeCommand @@ -88,7 +89,7 @@ class Rebaseline(AbstractDeclarativeCommand): shutil.move(downloaded_file, local_file) def _tests_to_update(self, build): - failing_tests = build.layout_test_results().results_matching_keys([LayoutTestResults.fail_key]) + failing_tests = build.layout_test_results().tests_matching_failure_types([test_failures.FailureTextMismatch]) return self._tool.user.prompt_with_list("Which test(s) to rebaseline:", failing_tests, can_choose_multiple=True) def _results_url_for_test(self, build, test): diff --git a/Tools/Scripts/webkitpy/tool/commands/rebaseline_unittest.py b/Tools/Scripts/webkitpy/tool/commands/rebaseline_unittest.py index d6582a7..79e4cf4 100644 --- a/Tools/Scripts/webkitpy/tool/commands/rebaseline_unittest.py +++ b/Tools/Scripts/webkitpy/tool/commands/rebaseline_unittest.py @@ -28,7 +28,19 @@ import unittest -from webkitpy.tool.commands.rebaseline import BuilderToPort +from webkitpy.common.system.outputcapture import OutputCapture +from webkitpy.thirdparty.mock import Mock +from webkitpy.tool.commands.rebaseline import BuilderToPort, Rebaseline +from webkitpy.tool.mocktool import MockTool + + +class RebaselineTest(unittest.TestCase): + # This just makes sure the code runs without exceptions. + def test_tests_to_update(self): + command = Rebaseline() + command.bind_to_tool(MockTool()) + build = Mock() + OutputCapture().assert_outputs(self, command._tests_to_update, [build]) class BuilderToPortTest(unittest.TestCase): diff --git a/Tools/Scripts/webkitpy/tool/commands/upload.py b/Tools/Scripts/webkitpy/tool/commands/upload.py index e12c8e2..6617b4f 100644 --- a/Tools/Scripts/webkitpy/tool/commands/upload.py +++ b/Tools/Scripts/webkitpy/tool/commands/upload.py @@ -196,6 +196,7 @@ class Post(AbstractPatchUploadingCommand): help_text = "Attach the current working directory diff to a bug as a patch file" argument_names = "[BUGID]" steps = [ + steps.ValidateChangeLogs, steps.CheckStyle, steps.ConfirmDiff, steps.ObsoletePatches, @@ -215,6 +216,7 @@ class LandSafely(AbstractPatchUploadingCommand): show_in_main_help = True steps = [ steps.UpdateChangeLogsWithReviewer, + steps.ValidateChangeLogs, steps.ObsoletePatches, steps.PostDiffForCommit, ] @@ -241,6 +243,7 @@ class Upload(AbstractPatchUploadingCommand): argument_names = "[BUGID]" show_in_main_help = True steps = [ + steps.ValidateChangeLogs, steps.CheckStyle, steps.PromptForBugOrTitle, steps.CreateBug, |