OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 """Unit tests for git_cl.py.""" | 6 """Unit tests for git_cl.py.""" |
7 | 7 |
8 import os | 8 import os |
9 import StringIO | 9 import StringIO |
10 import stat | 10 import stat |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
201 test('ssh://chrome-review.source.com/#/c/123/4/', fail=True) | 201 test('ssh://chrome-review.source.com/#/c/123/4/', fail=True) |
202 # Rietveld. | 202 # Rietveld. |
203 test('https://codereview.source.com/123', | 203 test('https://codereview.source.com/123', |
204 123, None, 'codereview.source.com') | 204 123, None, 'codereview.source.com') |
205 test('https://codereview.source.com/www123', fail=True) | 205 test('https://codereview.source.com/www123', fail=True) |
206 # Gerrrit. | 206 # Gerrrit. |
207 test('https://chrome-review.source.com/c/123/4', | 207 test('https://chrome-review.source.com/c/123/4', |
208 123, 4, 'chrome-review.source.com') | 208 123, 4, 'chrome-review.source.com') |
209 test('https://chrome-review.source.com/bad/123/4', fail=True) | 209 test('https://chrome-review.source.com/bad/123/4', fail=True) |
210 | 210 |
| 211 def test_get_bug_line_values(self): |
| 212 f = lambda p, bugs: list(git_cl._get_bug_line_values(p, bugs)) |
| 213 self.assertEqual(f('', ''), []) |
| 214 self.assertEqual(f('', '123,v8:456'), ['123', 'v8:456']) |
| 215 self.assertEqual(f('v8', '456'), ['v8:456']) |
| 216 self.assertEqual(f('v8', 'chromium:123,456'), ['v8:456', 'chromium:123']) |
| 217 # Not nice, but not worth carying. |
| 218 self.assertEqual(f('v8', 'chromium:123,456,v8:123'), |
| 219 ['v8:456', 'chromium:123', 'v8:123']) |
| 220 |
211 | 221 |
212 class TestGitCl(TestCase): | 222 class TestGitCl(TestCase): |
213 def setUp(self): | 223 def setUp(self): |
214 super(TestGitCl, self).setUp() | 224 super(TestGitCl, self).setUp() |
215 self.calls = [] | 225 self.calls = [] |
216 self._calls_done = [] | 226 self._calls_done = [] |
217 self.mock(subprocess2, 'call', self._mocked_call) | 227 self.mock(subprocess2, 'call', self._mocked_call) |
218 self.mock(subprocess2, 'check_call', self._mocked_call) | 228 self.mock(subprocess2, 'check_call', self._mocked_call) |
219 self.mock(subprocess2, 'check_output', self._mocked_call) | 229 self.mock(subprocess2, 'check_output', self._mocked_call) |
220 self.mock(subprocess2, 'communicate', self._mocked_call) | 230 self.mock(subprocess2, 'communicate', self._mocked_call) |
(...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
681 git_cl.main(['upload', '--send-mail']) | 691 git_cl.main(['upload', '--send-mail']) |
682 self.fail() | 692 self.fail() |
683 except SystemExit: | 693 except SystemExit: |
684 self.assertEqual( | 694 self.assertEqual( |
685 'Using 50% similarity for rename/copy detection. Override with ' | 695 'Using 50% similarity for rename/copy detection. Override with ' |
686 '--similarity.\n', | 696 '--similarity.\n', |
687 stdout.getvalue()) | 697 stdout.getvalue()) |
688 self.assertEqual( | 698 self.assertEqual( |
689 'Must specify reviewers to send email.\n', stderr.getvalue()) | 699 'Must specify reviewers to send email.\n', stderr.getvalue()) |
690 | 700 |
| 701 def test_bug_on_cmd(self): |
| 702 self._run_reviewer_test( |
| 703 ['--bug=500658,proj:123'], |
| 704 'desc\n\nBUG=500658\nBUG=proj:123', |
| 705 '# Blah blah comment.\ndesc\n\nBUG=500658\nBUG=proj:1234', |
| 706 'desc\n\nBUG=500658\nBUG=proj:1234', |
| 707 []) |
| 708 |
691 def test_dcommit(self): | 709 def test_dcommit(self): |
692 self.mock(git_cl.sys, 'stdout', StringIO.StringIO()) | 710 self.mock(git_cl.sys, 'stdout', StringIO.StringIO()) |
693 self.calls = ( | 711 self.calls = ( |
694 self._dcommit_calls_1() + | 712 self._dcommit_calls_1() + |
695 self._git_sanity_checks('fake_ancestor_sha', 'working') + | 713 self._git_sanity_checks('fake_ancestor_sha', 'working') + |
696 self._dcommit_calls_normal() + | 714 self._dcommit_calls_normal() + |
697 self._dcommit_calls_3()) | 715 self._dcommit_calls_3()) |
698 git_cl.main(['dcommit']) | 716 git_cl.main(['dcommit']) |
699 | 717 |
700 def test_dcommit_bypass_hooks(self): | 718 def test_dcommit_bypass_hooks(self): |
(...skipping 994 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1695 ((['rm_file_or_tree', '/abs/git_repo_root/.git/hooks/commit-msg'],), | 1713 ((['rm_file_or_tree', '/abs/git_repo_root/.git/hooks/commit-msg'],), |
1696 ''), | 1714 ''), |
1697 ] | 1715 ] |
1698 cl._codereview_impl._GerritCommitMsgHookCheck(offer_removal=True) | 1716 cl._codereview_impl._GerritCommitMsgHookCheck(offer_removal=True) |
1699 | 1717 |
1700 | 1718 |
1701 if __name__ == '__main__': | 1719 if __name__ == '__main__': |
1702 git_cl.logging.basicConfig( | 1720 git_cl.logging.basicConfig( |
1703 level=git_cl.logging.DEBUG if '-v' in sys.argv else git_cl.logging.ERROR) | 1721 level=git_cl.logging.DEBUG if '-v' in sys.argv else git_cl.logging.ERROR) |
1704 unittest.main() | 1722 unittest.main() |
OLD | NEW |