Chromium Code Reviews| Index: tests/git_cl_test.py |
| diff --git a/tests/git_cl_test.py b/tests/git_cl_test.py |
| index 68be49f792cccf455404b6dfe0428cfa4c43e64a..e10371c9f0434dc21e2e772664448efafde93fdf 100755 |
| --- a/tests/git_cl_test.py |
| +++ b/tests/git_cl_test.py |
| @@ -109,9 +109,17 @@ class TestGitCl(TestCase): |
| self.assertTrue( |
| self.calls, |
| '@%d Expected: <Missing> Actual: %r' % (self._calls_done, args)) |
| - expected_args, result = self.calls.pop(0) |
| + top = self.calls.pop(0) |
| + if len(top) == 2: |
| + expected_args, result = top |
| + exception = None |
| + else: |
| + 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.
|
| + |
| # Also logs otherwise it could get caught in a try/finally and be hard to |
| # diagnose. |
| + if exception: |
| + raise exception |
| if expected_args != args: |
| msg = '@%d Expected: %r Actual: %r' % ( |
| self._calls_done, expected_args, args) |
| @@ -853,6 +861,44 @@ class TestGitCl(TestCase): |
| git_cl.GetTargetRef('origin', 'refs/remotes/origin/master', |
| None, 'prefix/')) |
| + def test_patch_when_dirty(self): |
| + # Patch when local tree is dirty |
| + self.mock(git_common, 'is_dirty_git_tree', lambda x: True) |
| + self.assertNotEqual(git_cl.main(['patch', '123456']), 0) |
| + |
| + def test_diff_when_dirty(self): |
| + # Do 'git cl diff' when local tree is dirty |
| + self.mock(git_common, 'is_dirty_git_tree', lambda x: True) |
| + self.assertNotEqual(git_cl.main(['diff']), 0) |
| + |
| + def _patch_common(self): |
| + self.mock(git_cl.Changelist, 'GetMostRecentPatchset', lambda x: '60001') |
| + self.mock(git_cl.Changelist, 'GetPatchSetDiff', lambda *args: None) |
| + self.mock(git_cl.Changelist, 'SetIssue', lambda *args: None) |
| + self.mock(git_cl.Changelist, 'SetPatchset', lambda *args: None) |
| + self.mock(git_cl, 'IsGitVersionAtLeast', lambda *args: True) |
| + |
| + self.calls = [ |
| + ((['git', 'config', 'rietveld.autoupdate'],), ''), |
| + ((['git', 'config', 'rietveld.server'],), 'codereview.example.com'), |
| + ((['git', 'rev-parse', '--show-cdup'],), ''), |
| + ((['sed', '-e', 's|^--- a/|--- |; s|^+++ b/|+++ |'],), ''), |
| + ] |
| + |
| + def test_patch_successful(self): |
| + self._patch_common() |
| + self.calls += [ |
| + ((['git', 'apply', '--index', '-p0', '--3way'],), ''), |
| + ((['git', 'commit', '-m', 'patch from issue 123456 at patchset 60001 (http://crrev.com/123456#ps60001)'],), ''), |
| + ] |
| + self.assertEqual(git_cl.main(['patch', '123456']), 0) |
| + |
| + def test_patch_conflict(self): |
| + self._patch_common() |
| + self.calls += [ |
| + ((['git', 'apply', '--index', '-p0', '--3way'],), '', subprocess2.CalledProcessError(1, '', '', '', '')), |
| + ] |
| + self.assertNotEqual(git_cl.main(['patch', '123456']), 0) |
| if __name__ == '__main__': |
| git_cl.logging.basicConfig( |