|
1 # Copyright (C) 2009 Google Inc. All rights reserved. |
|
2 # |
|
3 # Redistribution and use in source and binary forms, with or without |
|
4 # modification, are permitted provided that the following conditions are |
|
5 # met: |
|
6 # |
|
7 # * Redistributions of source code must retain the above copyright |
|
8 # notice, this list of conditions and the following disclaimer. |
|
9 # * Redistributions in binary form must reproduce the above |
|
10 # copyright notice, this list of conditions and the following disclaimer |
|
11 # in the documentation and/or other materials provided with the |
|
12 # distribution. |
|
13 # * Neither the name of Google Inc. nor the names of its |
|
14 # contributors may be used to endorse or promote products derived from |
|
15 # this software without specific prior written permission. |
|
16 # |
|
17 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
|
18 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
|
19 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
|
20 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
|
21 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
|
22 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
|
23 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
|
24 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
|
25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
|
26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
|
27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
28 |
|
29 from webkitpy.thirdparty.mock import Mock |
|
30 from webkitpy.tool.commands.commandtest import CommandsTest |
|
31 from webkitpy.tool.commands.upload import * |
|
32 from webkitpy.tool.mocktool import MockOptions, MockTool |
|
33 |
|
34 class UploadCommandsTest(CommandsTest): |
|
35 def test_commit_message_for_current_diff(self): |
|
36 tool = MockTool() |
|
37 expected_stdout = "This is a fake commit message that is at least 50 characters.\n" |
|
38 self.assert_execute_outputs(CommitMessageForCurrentDiff(), [], expected_stdout=expected_stdout, tool=tool) |
|
39 |
|
40 def test_clean_pending_commit(self): |
|
41 self.assert_execute_outputs(CleanPendingCommit(), []) |
|
42 |
|
43 def test_assign_to_committer(self): |
|
44 tool = MockTool() |
|
45 expected_stderr = "Warning, attachment 128 on bug 42 has invalid committer (non-committer@example.com)\nBug 77 is already assigned to foo@foo.com (None).\nBug 76 has no non-obsolete patches, ignoring.\n" |
|
46 self.assert_execute_outputs(AssignToCommitter(), [], expected_stderr=expected_stderr, tool=tool) |
|
47 tool.bugs.reassign_bug.assert_called_with(42, "eric@webkit.org", "Attachment 128 was posted by a committer and has review+, assigning to Eric Seidel for commit.") |
|
48 |
|
49 def test_obsolete_attachments(self): |
|
50 expected_stderr = "Obsoleting 2 old patches on bug 42\n" |
|
51 self.assert_execute_outputs(ObsoleteAttachments(), [42], expected_stderr=expected_stderr) |
|
52 |
|
53 def test_post(self): |
|
54 options = MockOptions() |
|
55 options.description = "MOCK description" |
|
56 options.request_commit = False |
|
57 options.review = True |
|
58 options.comment = None |
|
59 options.cc = None |
|
60 expected_stderr = """Running check-webkit-style |
|
61 MOCK: user.open_url: file://... |
|
62 Obsoleting 2 old patches on bug 42 |
|
63 MOCK add_patch_to_bug: bug_id=42, description=MOCK description, mark_for_review=True, mark_for_commit_queue=False, mark_for_landing=False |
|
64 -- Begin comment -- |
|
65 None |
|
66 -- End comment -- |
|
67 MOCK: user.open_url: http://example.com/42 |
|
68 """ |
|
69 self.assert_execute_outputs(Post(), [42], options=options, expected_stderr=expected_stderr) |
|
70 |
|
71 def test_land_safely(self): |
|
72 expected_stderr = "Obsoleting 2 old patches on bug 42\nMOCK add_patch_to_bug: bug_id=42, description=Patch for landing, mark_for_review=False, mark_for_commit_queue=False, mark_for_landing=True\n-- Begin comment --\nNone\n-- End comment --\n" |
|
73 self.assert_execute_outputs(LandSafely(), [42], expected_stderr=expected_stderr) |
|
74 |
|
75 def test_prepare_diff_with_arg(self): |
|
76 self.assert_execute_outputs(Prepare(), [42]) |
|
77 |
|
78 def test_prepare(self): |
|
79 expected_stderr = "MOCK create_bug\nbug_title: Mock user response\nbug_description: Mock user response\n" |
|
80 self.assert_execute_outputs(Prepare(), [], expected_stderr=expected_stderr) |
|
81 |
|
82 def test_upload(self): |
|
83 options = MockOptions() |
|
84 options.description = "MOCK description" |
|
85 options.request_commit = False |
|
86 options.review = True |
|
87 options.comment = None |
|
88 options.cc = None |
|
89 expected_stderr = """Running check-webkit-style |
|
90 MOCK: user.open_url: file://... |
|
91 Obsoleting 2 old patches on bug 42 |
|
92 MOCK add_patch_to_bug: bug_id=42, description=MOCK description, mark_for_review=True, mark_for_commit_queue=False, mark_for_landing=False |
|
93 -- Begin comment -- |
|
94 None |
|
95 -- End comment -- |
|
96 MOCK: user.open_url: http://example.com/42 |
|
97 """ |
|
98 self.assert_execute_outputs(Upload(), [42], options=options, expected_stderr=expected_stderr) |
|
99 |
|
100 def test_mark_bug_fixed(self): |
|
101 tool = MockTool() |
|
102 tool._scm.last_svn_commit_log = lambda: "r9876 |" |
|
103 options = Mock() |
|
104 options.bug_id = 42 |
|
105 options.comment = "MOCK comment" |
|
106 expected_stderr = "Bug: <http://example.com/42> Bug with two r+'d and cq+'d patches, one of which has an invalid commit-queue setter.\nRevision: 9876\nMOCK: user.open_url: http://example.com/42\nAdding comment to Bug 42.\nMOCK bug comment: bug_id=42, cc=None\n--- Begin comment ---\\MOCK comment\n\nCommitted r9876: <http://trac.webkit.org/changeset/9876>\n--- End comment ---\n\n" |
|
107 self.assert_execute_outputs(MarkBugFixed(), [], expected_stderr=expected_stderr, tool=tool, options=options) |
|
108 |
|
109 def test_edit_changelog(self): |
|
110 self.assert_execute_outputs(EditChangeLogs(), []) |