Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 # Copyright (c) 2009 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2009 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 gcl.py.""" | 6 """Unit tests for gcl.py.""" |
| 7 | 7 |
| 8 import StringIO | 8 import StringIO |
| 9 import os | 9 import os |
| 10 import sys | 10 import sys |
| 11 import unittest | 11 import unittest |
| 12 | 12 |
| 13 # Local imports | 13 # Local imports |
| 14 import __init__ | 14 import __init__ |
| 15 import gcl | 15 import gcl |
| 16 mox = __init__.mox | 16 mox = __init__.mox |
| 17 | 17 |
| 18 | 18 |
| 19 class GclTestsBase(unittest.TestCase): | 19 class GclTestsBase(unittest.TestCase): |
| 20 """Setups and tear downs the mocks but doesn't test anything as-is.""" | 20 """Setups and tear downs the mocks but doesn't test anything as-is.""" |
| 21 def setUp(self): | 21 def setUp(self): |
| 22 self.mox = mox.Mox() | |
| 22 def RunShellMock(filename): | 23 def RunShellMock(filename): |
| 23 return filename | 24 return filename |
| 24 self._RunShell = gcl.RunShell | 25 self._RunShell = gcl.RunShell |
| 25 gcl.RunShell = RunShellMock | 26 gcl.RunShell = RunShellMock |
| 27 self._gcl_gclient_CaptureSVNInfo = gcl.gclient.CaptureSVNInfo | |
| 28 gcl.gclient.CaptureSVNInfo = self.mox.CreateMockAnything() | |
| 29 self._gcl_os_getcwd = gcl.os.getcwd | |
| 30 gcl.os.getcwd = self.mox.CreateMockAnything() | |
| 26 | 31 |
| 27 def tearDown(self): | 32 def tearDown(self): |
| 28 gcl.RunShell = self._RunShell | 33 gcl.RunShell = self._RunShell |
| 34 gcl.gclient.CaptureSVNInfo = self._gcl_gclient_CaptureSVNInfo | |
| 35 gcl.os.getcwd = self._gcl_os_getcwd | |
| 29 | 36 |
| 30 def compareMembers(self, object, members): | 37 def compareMembers(self, object, members): |
| 31 """If you add a member, be sure to add the relevant test!""" | 38 """If you add a member, be sure to add the relevant test!""" |
| 32 # Skip over members starting with '_' since they are usually not meant to | 39 # Skip over members starting with '_' since they are usually not meant to |
| 33 # be for public use. | 40 # be for public use. |
| 34 actual_members = [x for x in sorted(dir(object)) | 41 actual_members = [x for x in sorted(dir(object)) |
| 35 if not x.startswith('_')] | 42 if not x.startswith('_')] |
| 36 expected_members = sorted(members) | 43 expected_members = sorted(members) |
| 37 if actual_members != expected_members: | 44 if actual_members != expected_members: |
| 38 diff = ([i for i in actual_members if i not in expected_members] + | 45 diff = ([i for i in actual_members if i not in expected_members] + |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 68 def testHelp(self): | 75 def testHelp(self): |
| 69 old_stdout = sys.stdout | 76 old_stdout = sys.stdout |
| 70 try: | 77 try: |
| 71 dummy = StringIO.StringIO() | 78 dummy = StringIO.StringIO() |
| 72 gcl.sys.stdout = dummy | 79 gcl.sys.stdout = dummy |
| 73 gcl.Help() | 80 gcl.Help() |
| 74 self.assertEquals(len(dummy.getvalue()), 1813) | 81 self.assertEquals(len(dummy.getvalue()), 1813) |
| 75 finally: | 82 finally: |
| 76 gcl.sys.stdout = old_stdout | 83 gcl.sys.stdout = old_stdout |
| 77 | 84 |
| 78 def testGetRepositoryRoot(self): | 85 def testGetRepositoryRootNone(self): |
| 79 try: | 86 gcl.repository_root = None |
| 80 def RunShellMock(filename): | 87 gcl.os.getcwd().AndReturn("/bleh/prout") |
| 81 return '<?xml version="1.0"?>\n<info>' | 88 result = { |
| 82 gcl.RunShell = RunShellMock | 89 "Repository Root": "" |
| 83 gcl.GetRepositoryRoot() | 90 } |
| 84 except Exception,e: | 91 gcl.gclient.CaptureSVNInfo("/bleh/prout", print_error=False).AndReturn(resul t) |
|
Nicolas Sylvain
2009/05/20 18:26:57
80 chars
| |
| 85 self.assertEquals(e.args[0], "gcl run outside of repository") | 92 self.mox.ReplayAll() |
| 86 pass | 93 self.assertRaises(Exception, gcl.GetRepositoryRoot) |
| 94 self.mox.VerifyAll() | |
| 95 | |
| 96 def testGetRepositoryRootGood(self): | |
| 97 gcl.repository_root = None | |
| 98 root_path = os.path.join('bleh', 'prout', 'pouet') | |
| 99 gcl.os.getcwd().AndReturn(root_path) | |
| 100 result1 = { "Repository Root": "Some root" } | |
| 101 gcl.gclient.CaptureSVNInfo(root_path, print_error=False).AndReturn(result1) | |
| 102 gcl.os.getcwd().AndReturn(root_path) | |
| 103 results2 = { "Repository Root": "A different root" } | |
| 104 gcl.gclient.CaptureSVNInfo( | |
| 105 os.path.dirname(root_path), | |
| 106 print_error=False).AndReturn(results2) | |
| 107 self.mox.ReplayAll() | |
| 108 self.assertEquals(gcl.GetRepositoryRoot(), root_path) | |
| 109 self.mox.VerifyAll() | |
| 87 | 110 |
| 88 | 111 |
| 89 class ChangeInfoUnittest(GclTestsBase): | 112 class ChangeInfoUnittest(GclTestsBase): |
| 90 def testChangeInfoMembers(self): | 113 def testChangeInfoMembers(self): |
| 91 members = [ | 114 members = [ |
| 92 'CloseIssue', 'Delete', 'FileList', 'MissingTests', 'Save', | 115 'CloseIssue', 'Delete', 'FileList', 'MissingTests', 'Save', |
| 93 'UpdateRietveldDescription', 'description', 'files', 'issue', 'name', | 116 'UpdateRietveldDescription', 'description', 'files', 'issue', 'name', |
| 94 'patch' | 117 'patch' |
| 95 ] | 118 ] |
| 96 # If this test fails, you should add the relevant test. | 119 # If this test fails, you should add the relevant test. |
| 97 self.compareMembers(gcl.ChangeInfo(), members) | 120 self.compareMembers(gcl.ChangeInfo(), members) |
| 98 | 121 |
| 99 def testChangeInfoBase(self): | 122 def testChangeInfoBase(self): |
| 100 files = [('M', 'foo'), ('A', 'bar')] | 123 files = [('M', 'foo'), ('A', 'bar')] |
| 101 o = gcl.ChangeInfo('name2', 'issue2', 'description2', files) | 124 o = gcl.ChangeInfo('name2', 'issue2', 'description2', files) |
| 102 self.assertEquals(o.name, 'name2') | 125 self.assertEquals(o.name, 'name2') |
| 103 self.assertEquals(o.issue, 'issue2') | 126 self.assertEquals(o.issue, 'issue2') |
| 104 self.assertEquals(o.description, 'description2') | 127 self.assertEquals(o.description, 'description2') |
| 105 self.assertEquals(o.files, files) | 128 self.assertEquals(o.files, files) |
| 106 self.assertEquals(o.patch, None) | 129 self.assertEquals(o.patch, None) |
| 107 self.assertEquals(o.FileList(), ['foo', 'bar']) | 130 self.assertEquals(o.FileList(), ['foo', 'bar']) |
| 108 | 131 |
| 109 | 132 |
| 110 class UploadCLUnittest(GclTestsBase): | 133 class UploadCLUnittest(GclTestsBase): |
| 111 def setUp(self): | 134 def setUp(self): |
| 112 GclTestsBase.setUp(self) | 135 GclTestsBase.setUp(self) |
| 113 self.mox = mox.Mox() | |
| 114 self._os_chdir = gcl.os.chdir | 136 self._os_chdir = gcl.os.chdir |
| 115 gcl.os.chdir = self.mox.CreateMockAnything() | 137 gcl.os.chdir = self.mox.CreateMockAnything() |
| 116 self._os_close = gcl.os.close | 138 self._os_close = gcl.os.close |
| 117 gcl.os.close = self.mox.CreateMockAnything() | 139 gcl.os.close = self.mox.CreateMockAnything() |
| 118 self._os_getcwd = gcl.os.getcwd | |
| 119 gcl.os.getcwd = self.mox.CreateMockAnything() | |
| 120 self._os_remove = gcl.os.remove | 140 self._os_remove = gcl.os.remove |
| 121 gcl.os.remove = self.mox.CreateMockAnything() | 141 gcl.os.remove = self.mox.CreateMockAnything() |
| 122 self._os_write = gcl.os.write | 142 self._os_write = gcl.os.write |
| 123 gcl.os.write = self.mox.CreateMockAnything() | 143 gcl.os.write = self.mox.CreateMockAnything() |
| 124 self._tempfile = gcl.tempfile | 144 self._tempfile = gcl.tempfile |
| 125 gcl.tempfile = self.mox.CreateMockAnything() | 145 gcl.tempfile = self.mox.CreateMockAnything() |
| 126 self._upload_RealMain = gcl.upload.RealMain | 146 self._upload_RealMain = gcl.upload.RealMain |
| 127 gcl.upload.RealMain = self.mox.CreateMockAnything() | 147 gcl.upload.RealMain = self.mox.CreateMockAnything() |
| 128 self._DoPresubmitChecks = gcl.DoPresubmitChecks | 148 self._DoPresubmitChecks = gcl.DoPresubmitChecks |
| 129 gcl.DoPresubmitChecks = self.mox.CreateMockAnything() | 149 gcl.DoPresubmitChecks = self.mox.CreateMockAnything() |
| 130 self._GenerateDiff = gcl.GenerateDiff | 150 self._GenerateDiff = gcl.GenerateDiff |
| 131 gcl.GenerateDiff = self.mox.CreateMockAnything() | 151 gcl.GenerateDiff = self.mox.CreateMockAnything() |
| 132 self._GetCodeReviewSetting = gcl.GetCodeReviewSetting | 152 self._GetCodeReviewSetting = gcl.GetCodeReviewSetting |
| 133 gcl.GetCodeReviewSetting = self.mox.CreateMockAnything() | 153 gcl.GetCodeReviewSetting = self.mox.CreateMockAnything() |
| 134 self._GetRepositoryRoot = gcl.GetRepositoryRoot | 154 self._GetRepositoryRoot = gcl.GetRepositoryRoot |
| 135 gcl.GetRepositoryRoot = self.mox.CreateMockAnything() | 155 gcl.GetRepositoryRoot = self.mox.CreateMockAnything() |
| 136 self._SendToRietveld = gcl.SendToRietveld | 156 self._SendToRietveld = gcl.SendToRietveld |
| 137 gcl.SendToRietveld = self.mox.CreateMockAnything() | 157 gcl.SendToRietveld = self.mox.CreateMockAnything() |
| 138 self._TryChange = gcl.TryChange | 158 self._TryChange = gcl.TryChange |
| 139 gcl.TryChange = self.mox.CreateMockAnything() | 159 gcl.TryChange = self.mox.CreateMockAnything() |
| 140 | 160 |
| 141 def tearDown(self): | 161 def tearDown(self): |
| 142 GclTestsBase.tearDown(self) | 162 GclTestsBase.tearDown(self) |
| 143 gcl.os.chdir = self._os_chdir | 163 gcl.os.chdir = self._os_chdir |
| 144 gcl.os.close = self._os_close | 164 gcl.os.close = self._os_close |
| 145 gcl.os.getcwd = self._os_getcwd | |
| 146 gcl.os.remove = self._os_remove | 165 gcl.os.remove = self._os_remove |
| 147 gcl.os.write = self._os_write | 166 gcl.os.write = self._os_write |
| 148 gcl.tempfile = self._tempfile | 167 gcl.tempfile = self._tempfile |
| 149 gcl.upload.RealMain = self._upload_RealMain | 168 gcl.upload.RealMain = self._upload_RealMain |
| 150 gcl.DoPresubmitChecks = self._DoPresubmitChecks | 169 gcl.DoPresubmitChecks = self._DoPresubmitChecks |
| 151 gcl.GenerateDiff = self._GenerateDiff | 170 gcl.GenerateDiff = self._GenerateDiff |
| 152 gcl.GetCodeReviewSetting = self._GetCodeReviewSetting | 171 gcl.GetCodeReviewSetting = self._GetCodeReviewSetting |
| 153 gcl.GetRepositoryRoot = self._GetRepositoryRoot | 172 gcl.GetRepositoryRoot = self._GetRepositoryRoot |
| 154 gcl.SendToRietveld = self._SendToRietveld | 173 gcl.SendToRietveld = self._SendToRietveld |
| 155 gcl.TryChange = self._TryChange | 174 gcl.TryChange = self._TryChange |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 257 ['--issue', '1', '--patchset', '2'], | 276 ['--issue', '1', '--patchset', '2'], |
| 258 swallow_exception=True) | 277 swallow_exception=True) |
| 259 gcl.os.chdir('somewhere') | 278 gcl.os.chdir('somewhere') |
| 260 self.mox.ReplayAll() | 279 self.mox.ReplayAll() |
| 261 gcl.UploadCL(change_info, args) | 280 gcl.UploadCL(change_info, args) |
| 262 self.mox.VerifyAll() | 281 self.mox.VerifyAll() |
| 263 | 282 |
| 264 | 283 |
| 265 if __name__ == '__main__': | 284 if __name__ == '__main__': |
| 266 unittest.main() | 285 unittest.main() |
| OLD | NEW |