Changeset 76926 in webkit
- Timestamp:
- Jan 28, 2011 2:14:13 AM (13 years ago)
- Location:
- trunk/Tools
- Files:
-
- 6 added
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/ChangeLog
r76916 r76926 1 2011-01-28 Adam Barth <abarth@webkit.org> 2 3 Reviewed by Eric Seidel. 4 5 Add webkit-patch roll-chromium-deps 6 https://bugs.webkit.org/show_bug.cgi?id=53288 7 8 This command updates the Source/WebKit/chromium/DEPS file with the 9 last-known good revision of Chromium (or a revision specified on the 10 command line). I'd eventually like to turn this into a SheriffBot 11 command, but this is the first step. 12 13 This patch somewhat sprawled because I needed to move a bunch of code 14 out of ChangeLog that should never have been there in the first place. 15 Also, I had to fix a bug in MockUser in order to test the new command. 16 17 * Scripts/webkitpy/common/checkout/api.py: 18 * Scripts/webkitpy/common/checkout/changelog.py: 19 * Scripts/webkitpy/common/checkout/changelog_unittest.py: 20 * Scripts/webkitpy/common/checkout/deps.py: Added. 21 * Scripts/webkitpy/common/config/urls.py: 22 * Scripts/webkitpy/tool/commands/__init__.py: 23 * Scripts/webkitpy/tool/commands/download_unittest.py: 24 * Scripts/webkitpy/tool/commands/roll.py: Added. 25 * Scripts/webkitpy/tool/commands/roll_unittest.py: Added. 26 * Scripts/webkitpy/tool/commands/upload_unittest.py: 27 * Scripts/webkitpy/tool/mocktool.py: 28 * Scripts/webkitpy/tool/steps/__init__.py: 29 * Scripts/webkitpy/tool/steps/preparechangelogfordepsroll.py: Added. 30 * Scripts/webkitpy/tool/steps/preparechangelogforrevert.py: 31 * Scripts/webkitpy/tool/steps/preparechangelogforrevert_unittest.py: Added. 32 * Scripts/webkitpy/tool/steps/suggestreviewers_unittest.py: 33 * Scripts/webkitpy/tool/steps/updatechromiumdeps.py: Added. 34 * Scripts/webkitpy/tool/steps/validatechangelogs_unittest.py: 35 1 36 2011-01-27 Greg Coletta <greg.coletta@nokia.com> 2 37 -
trunk/Tools/Scripts/webkitpy/common/checkout/api.py
r75769 r76926 34 34 from webkitpy.common.checkout.commitinfo import CommitInfo 35 35 from webkitpy.common.checkout.scm import CommitMessage 36 from webkitpy.common.checkout.deps import DEPS 36 37 from webkitpy.common.memoized import memoized 37 38 from webkitpy.common.net.bugzilla import parse_bug_id … … 149 150 pass # We might not have ChangeLogs. 150 151 152 def chromium_deps(self): 153 return DEPS(os.path.join(self._scm.checkout_root, "Source", "WebKit", "chromium", "DEPS")) 154 151 155 def apply_patch(self, patch, force=False): 152 156 # It's possible that the patch was not made from the root directory. -
trunk/Tools/Scripts/webkitpy/common/checkout/changelog.py
r73951 r76926 37 37 from webkitpy.common.system.deprecated_logging import log 38 38 from webkitpy.common.config.committers import CommitterList 39 from webkitpy.common.config import urls40 39 from webkitpy.common.net.bugzilla import parse_bug_id 41 from webkitpy.tool.grammar import join_with_separators42 40 43 41 … … 146 144 return "\n".join(lines) 147 145 148 # This probably does not belong in changelogs.py 149 def _message_for_revert(self, revision_list, reason, bug_url): 150 message = "Unreviewed, rolling out %s.\n" % join_with_separators(['r' + str(revision) for revision in revision_list]) 151 for revision in revision_list: 152 message += "%s\n" % urls.view_revision_url(revision) 153 if bug_url: 154 message += "%s\n" % bug_url 155 # Add an extra new line after the rollout links, before any reason. 156 message += "\n" 157 if reason: 158 message += "%s\n\n" % reason 159 return self._wrap_lines(message) 160 161 def update_for_revert(self, revision_list, reason, bug_url=None): 146 def update_with_unreviewed_message(self, message): 162 147 reviewed_by_regexp = re.compile( 163 148 "%sReviewed by NOBODY \(OOPS!\)\." % self._changelog_indent) … … 166 151 for line in fileinput.FileInput(self.path, inplace=1): 167 152 if reviewed_by_regexp.search(line): 168 message_lines = self._message_for_revert(revision_list, 169 reason, 170 bug_url) 153 message_lines = self._wrap_lines(message) 171 154 print reviewed_by_regexp.sub(message_lines, line), 172 155 # Remove all the ChangeLog boilerplate between the Reviewed by -
trunk/Tools/Scripts/webkitpy/common/checkout/changelog_unittest.py
r73951 r76926 143 143 os.remove(changelog_path) 144 144 self.assertEquals(actual_contents, expected_contents) 145 146 _revert_message = """ Unreviewed, rolling out r12345.147 http://trac.webkit.org/changeset/12345148 http://example.com/123149 150 This is a very long reason which should be long enough so that151 _message_for_revert will need to wrap it. We'll also include152 a153 https://veryveryveryveryverylongbugurl.com/reallylongbugthingy.cgi?bug_id=12354154 link so that we can make sure we wrap that right too.155 """156 157 def test_message_for_revert(self):158 changelog = ChangeLog("/fake/path")159 long_reason = "This is a very long reason which should be long enough so that _message_for_revert will need to wrap it. We'll also include a https://veryveryveryveryverylongbugurl.com/reallylongbugthingy.cgi?bug_id=12354 link so that we can make sure we wrap that right too."160 message = changelog._message_for_revert([12345], long_reason, "http://example.com/123")161 self.assertEquals(message, self._revert_message)162 163 _revert_entry_with_bug_url = '''2009-08-19 Eric Seidel <eric@webkit.org>164 165 Unreviewed, rolling out r12345.166 http://trac.webkit.org/changeset/12345167 http://example.com/123168 169 Reason170 171 * Scripts/bugzilla-tool:172 '''173 174 _revert_entry_without_bug_url = '''2009-08-19 Eric Seidel <eric@webkit.org>175 176 Unreviewed, rolling out r12345.177 http://trac.webkit.org/changeset/12345178 179 Reason180 181 * Scripts/bugzilla-tool:182 '''183 184 _multiple_revert_entry_with_bug_url = '''2009-08-19 Eric Seidel <eric@webkit.org>185 186 Unreviewed, rolling out r12345, r12346, and r12347.187 http://trac.webkit.org/changeset/12345188 http://trac.webkit.org/changeset/12346189 http://trac.webkit.org/changeset/12347190 http://example.com/123191 192 Reason193 194 * Scripts/bugzilla-tool:195 '''196 197 _multiple_revert_entry_without_bug_url = '''2009-08-19 Eric Seidel <eric@webkit.org>198 199 Unreviewed, rolling out r12345, r12346, and r12347.200 http://trac.webkit.org/changeset/12345201 http://trac.webkit.org/changeset/12346202 http://trac.webkit.org/changeset/12347203 204 Reason205 206 * Scripts/bugzilla-tool:207 '''208 209 def _assert_update_for_revert_output(self, args, expected_entry):210 changelog_contents = u"%s\n%s" % (self._new_entry_boilerplate, self._example_changelog)211 changelog_path = self._write_tmp_file_with_contents(changelog_contents.encode("utf-8"))212 changelog = ChangeLog(changelog_path)213 changelog.update_for_revert(*args)214 actual_entry = changelog.latest_entry()215 os.remove(changelog_path)216 self.assertEquals(actual_entry.contents(), expected_entry)217 self.assertEquals(actual_entry.reviewer_text(), None)218 # These checks could be removed to allow this to work on other entries:219 self.assertEquals(actual_entry.author_name(), "Eric Seidel")220 self.assertEquals(actual_entry.author_email(), "eric@webkit.org")221 222 def test_update_for_revert(self):223 self._assert_update_for_revert_output([[12345], "Reason"], self._revert_entry_without_bug_url)224 self._assert_update_for_revert_output([[12345], "Reason", "http://example.com/123"], self._revert_entry_with_bug_url)225 self._assert_update_for_revert_output([[12345, 12346, 12347], "Reason"], self._multiple_revert_entry_without_bug_url)226 self._assert_update_for_revert_output([[12345, 12346, 12347], "Reason", "http://example.com/123"], self._multiple_revert_entry_with_bug_url)227 228 229 if __name__ == '__main__':230 unittest.main() -
trunk/Tools/Scripts/webkitpy/common/config/urls.py
r73691 r76926 35 35 return "http://trac.webkit.org/changeset/%s" % revision_number 36 36 37 chromium_lkgr_url = "http://chromium-status.appspot.com/lkgr" 37 38 38 39 contribution_guidelines = "http://webkit.org/coding/contributing.html" -
trunk/Tools/Scripts/webkitpy/tool/commands/__init__.py
r73991 r76926 11 11 from webkitpy.tool.commands.rebaseline import Rebaseline 12 12 from webkitpy.tool.commands.rebaselineserver import RebaselineServer 13 from webkitpy.tool.commands.roll import * 13 14 from webkitpy.tool.commands.sheriffbot import * 14 15 from webkitpy.tool.commands.upload import * -
trunk/Tools/Scripts/webkitpy/tool/commands/commandtest.py
r73827 r76926 33 33 34 34 class CommandsTest(unittest.TestCase): 35 def assert_execute_outputs(self, command, args, expected_stdout="", expected_stderr="", options=MockOptions(), tool=MockTool()):35 def assert_execute_outputs(self, command, args, expected_stdout="", expected_stderr="", expected_exception=None, options=MockOptions(), tool=MockTool()): 36 36 options.blocks = None 37 37 options.cc = 'MOCK cc' … … 46 46 options.reviewer = 'MOCK reviewer' 47 47 command.bind_to_tool(tool) 48 OutputCapture().assert_outputs(self, command.execute, [options, args, tool], expected_stdout=expected_stdout, expected_stderr=expected_stderr )48 OutputCapture().assert_outputs(self, command.execute, [options, args, tool], expected_stdout=expected_stdout, expected_stderr=expected_stderr, expected_exception=expected_exception) -
trunk/Tools/Scripts/webkitpy/tool/commands/download_unittest.py
r74639 r76926 201 201 202 202 def test_rollout(self): 203 expected_stderr = "Preparing rollout for bug 42.\nUpdating working directory\nRunning prepare-ChangeLog\nMOCK: user.open_url: file://...\nBuilding WebKit\nCommitted r49824: <http://trac.webkit.org/changeset/49824>\n" 204 expected_stdout = "Was that diff correct?\n" 205 self.assert_execute_outputs(Rollout(), [852, "Reason"], options=self._default_options(), expected_stdout=expected_stdout, expected_stderr=expected_stderr) 206 203 expected_stderr = """Preparing rollout for bug 42. 204 Updating working directory 205 Running prepare-ChangeLog 206 MOCK: user.open_url: file://... 207 Was that diff correct? 208 Building WebKit 209 Committed r49824: <http://trac.webkit.org/changeset/49824> 210 """ 211 self.assert_execute_outputs(Rollout(), [852, "Reason"], options=self._default_options(), expected_stderr=expected_stderr) 212 -
trunk/Tools/Scripts/webkitpy/tool/commands/upload_unittest.py
r74373 r76926 62 62 expected_stderr = """Running check-webkit-style 63 63 MOCK: user.open_url: file://... 64 Was that diff correct? 64 65 Obsoleting 2 old patches on bug 42 65 66 MOCK add_patch_to_bug: bug_id=42, description=MOCK description, mark_for_review=True, mark_for_commit_queue=False, mark_for_landing=False 66 67 MOCK: user.open_url: http://example.com/42 67 68 """ 68 expected_stdout = "Was that diff correct?\n" 69 self.assert_execute_outputs(Post(), [42], options=options, expected_stdout=expected_stdout, expected_stderr=expected_stderr) 69 self.assert_execute_outputs(Post(), [42], options=options, expected_stderr=expected_stderr) 70 70 71 71 def test_land_safely(self): … … 91 91 expected_stderr = """Running check-webkit-style 92 92 MOCK: user.open_url: file://... 93 Was that diff correct? 93 94 Obsoleting 2 old patches on bug 42 94 95 MOCK add_patch_to_bug: bug_id=42, description=MOCK description, mark_for_review=True, mark_for_commit_queue=False, mark_for_landing=False 95 96 MOCK: user.open_url: http://example.com/42 96 97 """ 97 expected_stdout = "Was that diff correct?\n" 98 self.assert_execute_outputs(Upload(), [42], options=options, expected_stdout=expected_stdout, expected_stderr=expected_stderr) 98 self.assert_execute_outputs(Upload(), [42], options=options, expected_stderr=expected_stderr) 99 99 100 100 def test_mark_bug_fixed(self): … … 107 107 Revision: 9876 108 108 MOCK: user.open_url: http://example.com/42 109 Is this correct? 109 110 Adding comment to Bug 42. 110 111 MOCK bug comment: bug_id=42, cc=None … … 116 117 117 118 """ 118 expected_stdout = "Is this correct?\n" 119 self.assert_execute_outputs(MarkBugFixed(), [], expected_stdout=expected_stdout, expected_stderr=expected_stderr, tool=tool, options=options) 119 self.assert_execute_outputs(MarkBugFixed(), [], expected_stderr=expected_stderr, tool=tool, options=options) 120 120 121 121 def test_edit_changelog(self): -
trunk/Tools/Scripts/webkitpy/tool/mocktool.py
r76642 r76926 496 496 497 497 498 class MockDEPS(object): 499 def read_variable(self, name): 500 return 6564 501 502 def write_variable(self, name, value): 503 log("MOCK: MockDEPS.write_variable(%s, %s)" % (name, value)) 504 505 498 506 class MockCheckout(object): 499 507 … … 529 537 return commit_message 530 538 539 def chromium_deps(self): 540 return MockDEPS() 541 531 542 def apply_patch(self, patch, force=False): 532 543 pass … … 562 573 563 574 def confirm(self, message=None, default='y'): 564 print message575 log(message) 565 576 return default == 'y' 566 577 -
trunk/Tools/Scripts/webkitpy/tool/steps/__init__.py
r74639 r76926 48 48 from webkitpy.tool.steps.postdiffforcommit import PostDiffForCommit 49 49 from webkitpy.tool.steps.postdiffforrevert import PostDiffForRevert 50 from webkitpy.tool.steps.preparechangelogfordepsroll import PrepareChangeLogForDEPSRoll 50 51 from webkitpy.tool.steps.preparechangelogforrevert import PrepareChangeLogForRevert 51 52 from webkitpy.tool.steps.preparechangelog import PrepareChangeLog … … 56 57 from webkitpy.tool.steps.suggestreviewers import SuggestReviewers 57 58 from webkitpy.tool.steps.updatechangelogswithreviewer import UpdateChangeLogsWithReviewer 59 from webkitpy.tool.steps.updatechromiumdeps import UpdateChromiumDEPS 58 60 from webkitpy.tool.steps.update import Update 59 61 from webkitpy.tool.steps.validatechangelogs import ValidateChangeLogs -
trunk/Tools/Scripts/webkitpy/tool/steps/preparechangelogforrevert.py
r73951 r76926 30 30 31 31 from webkitpy.common.checkout.changelog import ChangeLog 32 from webkitpy.common.config import urls 33 from webkitpy.tool.grammar import join_with_separators 32 34 from webkitpy.tool.steps.abstractstep import AbstractStep 33 35 34 36 35 37 class PrepareChangeLogForRevert(AbstractStep): 38 @classmethod 39 def _message_for_revert(cls, revision_list, reason, bug_url=None): 40 message = "Unreviewed, rolling out %s.\n" % join_with_separators(['r' + str(revision) for revision in revision_list]) 41 for revision in revision_list: 42 message += "%s\n" % urls.view_revision_url(revision) 43 if bug_url: 44 message += "%s\n" % bug_url 45 # Add an extra new line after the rollout links, before any reason. 46 message += "\n" 47 if reason: 48 message += "%s\n\n" % reason 49 return message 50 36 51 def run(self, state): 37 52 # This could move to prepare-ChangeLog by adding a --revert= option. … … 39 54 changelog_paths = self._tool.checkout().modified_changelogs(git_commit=None) 40 55 bug_url = self._tool.bugs.bug_url_for_bug_id(state["bug_id"]) if state["bug_id"] else None 56 message = self._message_for_revert(state["revision_list"], state["reason"], bug_url) 41 57 for changelog_path in changelog_paths: 42 58 # FIXME: Seems we should prepare the message outside of changelogs.py and then just pass in 43 59 # text that we want to use to replace the reviewed by line. 44 ChangeLog(changelog_path).update_ for_revert(state["revision_list"], state["reason"], bug_url)60 ChangeLog(changelog_path).update_with_unreviewed_message(message) -
trunk/Tools/Scripts/webkitpy/tool/steps/suggestreviewers_unittest.py
r70274 r76926 42 42 capture = OutputCapture() 43 43 step = SuggestReviewers(MockTool(), MockOptions(suggest_reviewers=True, git_commit=None)) 44 expected_stdout = "The following reviewers have recently modified files in your patch:\nFoo Bar\nWould you like to CC them?\n" 45 capture.assert_outputs(self, step.run, [{"bug_id": "123"}], expected_stdout=expected_stdout) 44 expected_stdout = "The following reviewers have recently modified files in your patch:\nFoo Bar\n" 45 expected_stderr = "Would you like to CC them?\n" 46 capture.assert_outputs(self, step.run, [{"bug_id": "123"}], expected_stdout=expected_stdout, expected_stderr=expected_stderr) -
trunk/Tools/Scripts/webkitpy/tool/steps/validatechangelogs_unittest.py
r75328 r76926 46 46 expected_stdout = expected_stderr = "" 47 47 if should_fail and not non_interactive: 48 expected_stdout = "OK to continue?\n" 49 expected_stderr = "The diff to mock/ChangeLog looks wrong. Are you sure your ChangeLog entry is at the top of the file?\n" 50 result = OutputCapture().assert_outputs(self, step._check_changelog_diff, [diff_file], expected_stdout=expected_stdout, expected_stderr=expected_stderr) 48 expected_stderr = "The diff to mock/ChangeLog looks wrong. Are you sure your ChangeLog entry is at the top of the file?\nOK to continue?\n" 49 result = OutputCapture().assert_outputs(self, step._check_changelog_diff, [diff_file], expected_stderr=expected_stderr) 51 50 self.assertEqual(not result, should_fail) 52 51
Note: See TracChangeset
for help on using the changeset viewer.