Index: tests/revert_unittest.py |
diff --git a/tests/revert_unittest.py b/tests/revert_unittest.py |
index e95d3c4faeba6e9ed30b05f0634e59fad298c810..eee176d2ee0975f2ccf4b32ef6728a59b4177c64 100644 |
--- a/tests/revert_unittest.py |
+++ b/tests/revert_unittest.py |
@@ -16,7 +16,17 @@ from super_mox import mox |
class RevertTestsBase(super_mox.SuperMoxTestBase): |
"""Setups and tear downs the mocks but doesn't test anything as-is.""" |
- pass |
+ def setUp(self): |
+ super_mox.SuperMoxTestBase.setUp(self) |
+ self.mox.StubOutWithMock(revert, 'gcl') |
+ self.mox.StubOutWithMock(revert, 'gclient') |
+ self.mox.StubOutWithMock(revert, 'os') |
+ self.mox.StubOutWithMock(revert.os, 'path') |
+ self.mox.StubOutWithMock(revert.sys, 'stdout') |
+ |
+ # These functions are not tested. |
+ self.mox.StubOutWithMock(revert, 'GetRepoBase') |
+ self.mox.StubOutWithMock(revert, 'CaptureSVNLog') |
class RevertUnittest(RevertTestsBase): |
@@ -31,5 +41,75 @@ class RevertUnittest(RevertTestsBase): |
self.compareMembers(revert, members) |
+class RevertMainUnittest(RevertTestsBase): |
+ def setUp(self): |
+ RevertTestsBase.setUp(self) |
+ self.mox.StubOutWithMock(revert, 'gcl') |
+ self.mox.StubOutWithMock(revert, 'gclient') |
+ self.mox.StubOutWithMock(revert, 'os') |
+ self.mox.StubOutWithMock(revert.os, 'path') |
+ self.mox.StubOutWithMock(revert, 'sys') |
+ self.mox.StubOutWithMock(revert, 'Revert') |
+ |
+ def testMain(self): |
+ revert.gcl.GetInfoDir().AndReturn('foo') |
+ revert.os.path.exists('foo').AndReturn(True) |
+ revert.Revert([42, 23], True, True, False, 'bleh', ['foo@example.com'] |
+ ).AndReturn(31337) |
+ self.mox.ReplayAll() |
+ |
+ self.assertEquals(revert.Main(['revert', '-c', '-f', '-n', '-m', 'bleh', |
+ '-r', 'foo@example.com', '42', '23']), |
+ 31337) |
+ |
+ |
+class RevertRevertUnittest(RevertTestsBase): |
+ def setUp(self): |
+ RevertTestsBase.setUp(self) |
+ |
+ def testRevert(self): |
+ revert.gcl.GetRepositoryRoot().AndReturn('foo') |
+ revert.os.chdir('foo') |
+ entries = [{ |
+ 'author': 'Georges', |
+ 'paths': [ |
+ {'path': 'proto://fqdn/repo/random_file'} |
+ ], |
+ }] |
+ revert.CaptureSVNLog(['-r', '42', '-v']).AndReturn(entries) |
+ revert.GetRepoBase().AndReturn('proto://fqdn/repo/') |
+ revert.gclient.CaptureSVNStatus(['random_file']).AndReturn([]) |
+ revert.gcl.RunShell(['svn', 'up', 'random_file']) |
+ revert.os.path.isdir('random_file').AndReturn(False) |
+ status = """--- Reverse-merging r42 into '.': |
+M random_file |
+""" |
+ revert.gcl.RunShellWithReturnCode(['svn', 'merge', '-c', '-42', |
+ 'random_file'], |
+ print_output=True).AndReturn([status, 0]) |
+ change = self.mox.CreateMockAnything() |
+ revert.gcl.ChangeInfo('revert42', 0, 0, 'Reverting 42.\n\nbleh', |
+ [('M ', 'random_file')], 'foo').AndReturn(change) |
+ change.Save() |
+ revert.gcl.UploadCL(change, |
+ ['--no_presubmit', '-r', 'foo@example.com', '--no_try']) |
+ revert.gcl.Commit(change, ['--no_presubmit', '--force']) |
+ revert.gclient.Main(['gclient.py', 'sync']) |
+ outputs = [ |
+ 'Blaming Georges\n', |
+ 'Emailing foo@example.com\n', |
+ 'These files were modified in 42:', |
+ 'random_file', |
+ '', |
+ 'Reverting 42 in ./' |
+ ] |
+ for line in outputs: |
+ revert.sys.stdout.write(line) |
+ revert.sys.stdout.write('\n') |
+ self.mox.ReplayAll() |
+ |
+ revert.Revert([42], True, True, False, 'bleh', ['foo@example.com']) |
+ |
+ |
if __name__ == '__main__': |
unittest.main() |