Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(345)

Side by Side Diff: tests/git_cl_test.py

Issue 1091283004: Don't clean up after conflict in "git cl patch" (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« git_cl.py ('K') | « git_cl.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 102
103 def tearDown(self): 103 def tearDown(self):
104 if not self.has_failed(): 104 if not self.has_failed():
105 self.assertEquals([], self.calls) 105 self.assertEquals([], self.calls)
106 super(TestGitCl, self).tearDown() 106 super(TestGitCl, self).tearDown()
107 107
108 def _mocked_call(self, *args, **_kwargs): 108 def _mocked_call(self, *args, **_kwargs):
109 self.assertTrue( 109 self.assertTrue(
110 self.calls, 110 self.calls,
111 '@%d Expected: <Missing> Actual: %r' % (self._calls_done, args)) 111 '@%d Expected: <Missing> Actual: %r' % (self._calls_done, args))
112 expected_args, result = self.calls.pop(0) 112 top = self.calls.pop(0)
113 if len(top) == 2:
114 expected_args, result = top
115 exception = None
116 else:
117 expected_args, result, exception = top
Sam Clegg 2015/04/20 23:32:16 nit: Do the raise here and avoid the "exception =
wychen 2015/04/22 00:23:18 Done.
118
113 # Also logs otherwise it could get caught in a try/finally and be hard to 119 # Also logs otherwise it could get caught in a try/finally and be hard to
114 # diagnose. 120 # diagnose.
121 if exception:
122 raise exception
115 if expected_args != args: 123 if expected_args != args:
116 msg = '@%d Expected: %r Actual: %r' % ( 124 msg = '@%d Expected: %r Actual: %r' % (
117 self._calls_done, expected_args, args) 125 self._calls_done, expected_args, args)
118 git_cl.logging.error(msg) 126 git_cl.logging.error(msg)
119 self.fail(msg) 127 self.fail(msg)
120 self._calls_done += 1 128 self._calls_done += 1
121 return result 129 return result
122 130
123 @classmethod 131 @classmethod
124 def _upload_calls(cls, similarity, find_copies, private): 132 def _upload_calls(cls, similarity, find_copies, private):
(...skipping 721 matching lines...) Expand 10 before | Expand all | Expand 10 after
846 self.assertEqual('refs/heads/master', 854 self.assertEqual('refs/heads/master',
847 git_cl.GetTargetRef('origin', 855 git_cl.GetTargetRef('origin',
848 'refs/remotes/branch-heads/123', 856 'refs/remotes/branch-heads/123',
849 branch, None)) 857 branch, None))
850 858
851 # Check target refs for pending prefix. 859 # Check target refs for pending prefix.
852 self.assertEqual('prefix/heads/master', 860 self.assertEqual('prefix/heads/master',
853 git_cl.GetTargetRef('origin', 'refs/remotes/origin/master', 861 git_cl.GetTargetRef('origin', 'refs/remotes/origin/master',
854 None, 'prefix/')) 862 None, 'prefix/'))
855 863
864 def test_patch_when_dirty(self):
865 # Patch when local tree is dirty
866 self.mock(git_common, 'is_dirty_git_tree', lambda x: True)
867 self.assertNotEqual(git_cl.main(['patch', '123456']), 0)
868
869 def test_diff_when_dirty(self):
870 # Do 'git cl diff' when local tree is dirty
871 self.mock(git_common, 'is_dirty_git_tree', lambda x: True)
872 self.assertNotEqual(git_cl.main(['diff']), 0)
873
874 def _patch_common(self):
875 self.mock(git_cl.Changelist, 'GetMostRecentPatchset', lambda x: '60001')
876 self.mock(git_cl.Changelist, 'GetPatchSetDiff', lambda *args: None)
877 self.mock(git_cl.Changelist, 'SetIssue', lambda *args: None)
878 self.mock(git_cl.Changelist, 'SetPatchset', lambda *args: None)
879 self.mock(git_cl, 'IsGitVersionAtLeast', lambda *args: True)
880
881 self.calls = [
882 ((['git', 'config', 'rietveld.autoupdate'],), ''),
883 ((['git', 'config', 'rietveld.server'],), 'codereview.example.com'),
884 ((['git', 'rev-parse', '--show-cdup'],), ''),
885 ((['sed', '-e', 's|^--- a/|--- |; s|^+++ b/|+++ |'],), ''),
886 ]
887
888 def test_patch_successful(self):
889 self._patch_common()
890 self.calls += [
891 ((['git', 'apply', '--index', '-p0', '--3way'],), ''),
892 ((['git', 'commit', '-m', 'patch from issue 123456 at patchset 60001 (http ://crrev.com/123456#ps60001)'],), ''),
893 ]
894 self.assertEqual(git_cl.main(['patch', '123456']), 0)
895
896 def test_patch_conflict(self):
897 self._patch_common()
898 self.calls += [
899 ((['git', 'apply', '--index', '-p0', '--3way'],), '', subprocess2.CalledPr ocessError(1, '', '', '', '')),
900 ]
901 self.assertNotEqual(git_cl.main(['patch', '123456']), 0)
856 902
857 if __name__ == '__main__': 903 if __name__ == '__main__':
858 git_cl.logging.basicConfig( 904 git_cl.logging.basicConfig(
859 level=git_cl.logging.DEBUG if '-v' in sys.argv else git_cl.logging.ERROR) 905 level=git_cl.logging.DEBUG if '-v' in sys.argv else git_cl.logging.ERROR)
860 unittest.main() 906 unittest.main()
OLDNEW
« git_cl.py ('K') | « git_cl.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698