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

Side by Side Diff: tests/gcl_unittest.py

Issue 2198001: Use function decorator to simplify main() (Closed)
Patch Set: Created 10 years, 7 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
« no previous file with comments | « gcl.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/python 1 #!/usr/bin/python
2 # Copyright (c) 2010 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2010 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 # Fixes include path. 8 # Fixes include path.
9 from super_mox import mox, SuperMoxTestBase 9 from super_mox import mox, SuperMoxTestBase
10 10
(...skipping 16 matching lines...) Expand all
27 27
28 28
29 class GclUnittest(GclTestsBase): 29 class GclUnittest(GclTestsBase):
30 """General gcl.py tests.""" 30 """General gcl.py tests."""
31 def testMembersChanged(self): 31 def testMembersChanged(self):
32 self.mox.ReplayAll() 32 self.mox.ReplayAll()
33 members = [ 33 members = [
34 'CODEREVIEW_SETTINGS', 'CODEREVIEW_SETTINGS_FILE', 34 'CODEREVIEW_SETTINGS', 'CODEREVIEW_SETTINGS_FILE',
35 'CMDchange', 'CMDchanges', 'CMDcommit', 'CMDdelete', 'CMDdeleteempties', 35 'CMDchange', 'CMDchanges', 'CMDcommit', 'CMDdelete', 'CMDdeleteempties',
36 'CMDdescription', 'CMDdiff', 'CMDhelp', 'CMDlint', 'CMDnothave', 36 'CMDdescription', 'CMDdiff', 'CMDhelp', 'CMDlint', 'CMDnothave',
37 'CMDopened', 'CMDpresubmit', 'CMDrename', 'CMDsettings', 'CMDstatus', 37 'CMDopened', 'CMDpassthru', 'CMDpresubmit', 'CMDrename', 'CMDsettings',
38 'CMDtry', 'CMDupload', 38 'CMDstatus', 'CMDtry', 'CMDupload',
39 'ChangeInfo', 'DEFAULT_LINT_IGNORE_REGEX', 39 'ChangeInfo', 'DEFAULT_LINT_IGNORE_REGEX',
40 'DEFAULT_LINT_REGEX', 'CheckHomeForFile', 40 'DEFAULT_LINT_REGEX', 'CheckHomeForFile',
41 'DoPresubmitChecks', 'ErrorExit', 'FILES_CACHE', 'FilterFlag', 41 'DoPresubmitChecks', 'ErrorExit', 'FILES_CACHE', 'FilterFlag',
42 'GenerateChangeName', 'GenerateDiff', 'GetCLs', 'GetCacheDir', 42 'GenerateChangeName', 'GenerateDiff', 'GetCLs', 'GetCacheDir',
43 'GetCachedFile', 'GetChangelistInfoFile', 'GetChangesDir', 43 'GetCachedFile', 'GetChangelistInfoFile', 'GetChangesDir',
44 'GetCodeReviewSetting', 'GetEditor', 'GetFilesNotInCL', 'GetInfoDir', 44 'GetCodeReviewSetting', 'GetEditor', 'GetFilesNotInCL', 'GetInfoDir',
45 'GetIssueDescription', 'GetModifiedFiles', 'GetRepositoryRoot', 45 'GetIssueDescription', 'GetModifiedFiles', 'GetRepositoryRoot',
46 'ListFiles', 46 'ListFiles',
47 'LoadChangelistInfoForMultiple', 'MISSING_TEST_MSG', 47 'LoadChangelistInfoForMultiple', 'MISSING_TEST_MSG',
48 'OptionallyDoPresubmitChecks', 'REPOSITORY_ROOT', 48 'OptionallyDoPresubmitChecks', 'REPOSITORY_ROOT',
49 'RunShell', 'RunShellWithReturnCode', 'SVN', 49 'RunShell', 'RunShellWithReturnCode', 'SVN',
50 'SendToRietveld', 'TryChange', 'UnknownFiles', 'Warn', 50 'SendToRietveld', 'TryChange', 'UnknownFiles', 'Warn',
51 'breakpad', 'gclient_utils', 'getpass', 'main', 'os', 'random', 're', 51 'breakpad', 'gclient_utils', 'getpass', 'main', 'need_change', 'os',
52 'shutil', 'string', 'subprocess', 'sys', 'tempfile', 'time', 'upload', 52 'random', 're', 'shutil', 'string', 'subprocess', 'sys', 'tempfile',
53 'urllib2', 53 'time', 'upload', 'urllib2',
54 ] 54 ]
55 # If this test fails, you should add the relevant test. 55 # If this test fails, you should add the relevant test.
56 self.compareMembers(gcl, members) 56 self.compareMembers(gcl, members)
57 57
58 def testIsSVNMoved(self): 58 def testIsSVNMoved(self):
59 # TODO(maruel): TEST ME 59 # TODO(maruel): TEST ME
60 pass 60 pass
61 61
62 def testGetSVNFileProperty(self): 62 def testGetSVNFileProperty(self):
63 # TODO(maruel): TEST ME 63 # TODO(maruel): TEST ME
(...skipping 17 matching lines...) Expand all
81 root_path = gcl.os.path.join('bleh', 'prout', 'pouet') 81 root_path = gcl.os.path.join('bleh', 'prout', 'pouet')
82 gcl.os.getcwd().AndReturn(root_path) 82 gcl.os.getcwd().AndReturn(root_path)
83 gcl.SVN.GetCheckoutRoot(root_path).AndReturn(root_path + '.~') 83 gcl.SVN.GetCheckoutRoot(root_path).AndReturn(root_path + '.~')
84 self.mox.ReplayAll() 84 self.mox.ReplayAll()
85 self.assertEquals(gcl.GetRepositoryRoot(), root_path + '.~') 85 self.assertEquals(gcl.GetRepositoryRoot(), root_path + '.~')
86 86
87 def testHelp(self): 87 def testHelp(self):
88 gcl.sys.stdout.write(mox.StrContains('GCL is a wrapper for Subversion')) 88 gcl.sys.stdout.write(mox.StrContains('GCL is a wrapper for Subversion'))
89 gcl.sys.stdout.write('\n') 89 gcl.sys.stdout.write('\n')
90 self.mox.ReplayAll() 90 self.mox.ReplayAll()
91 gcl.CMDhelp() 91 gcl.CMDhelp([])
92 92
93 93
94 class ChangeInfoUnittest(GclTestsBase): 94 class ChangeInfoUnittest(GclTestsBase):
95 def setUp(self): 95 def setUp(self):
96 GclTestsBase.setUp(self) 96 GclTestsBase.setUp(self)
97 self.mox.StubOutWithMock(gcl, 'GetChangelistInfoFile') 97 self.mox.StubOutWithMock(gcl, 'GetChangelistInfoFile')
98 self.mox.StubOutWithMock(gcl, 'GetRepositoryRoot') 98 self.mox.StubOutWithMock(gcl, 'GetRepositoryRoot')
99 99
100 def testChangeInfoMembers(self): 100 def testChangeInfoMembers(self):
101 self.mox.ReplayAll() 101 self.mox.ReplayAll()
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 class CMDuploadUnittest(GclTestsBase): 178 class CMDuploadUnittest(GclTestsBase):
179 def setUp(self): 179 def setUp(self):
180 GclTestsBase.setUp(self) 180 GclTestsBase.setUp(self)
181 self.mox.StubOutWithMock(gcl, 'CheckHomeForFile') 181 self.mox.StubOutWithMock(gcl, 'CheckHomeForFile')
182 self.mox.StubOutWithMock(gcl, 'DoPresubmitChecks') 182 self.mox.StubOutWithMock(gcl, 'DoPresubmitChecks')
183 self.mox.StubOutWithMock(gcl, 'GenerateDiff') 183 self.mox.StubOutWithMock(gcl, 'GenerateDiff')
184 self.mox.StubOutWithMock(gcl, 'GetCodeReviewSetting') 184 self.mox.StubOutWithMock(gcl, 'GetCodeReviewSetting')
185 self.mox.StubOutWithMock(gcl, 'GetRepositoryRoot') 185 self.mox.StubOutWithMock(gcl, 'GetRepositoryRoot')
186 self.mox.StubOutWithMock(gcl, 'SendToRietveld') 186 self.mox.StubOutWithMock(gcl, 'SendToRietveld')
187 self.mox.StubOutWithMock(gcl, 'TryChange') 187 self.mox.StubOutWithMock(gcl, 'TryChange')
188 self.mox.StubOutWithMock(gcl.ChangeInfo, 'Load')
188 189
189 def testNew(self): 190 def testNew(self):
190 change_info = self.mox.CreateMock(gcl.ChangeInfo) 191 change_info = self.mox.CreateMock(gcl.ChangeInfo)
191 change_info.name = 'naame' 192 change_info.name = 'naame'
192 change_info.issue = 1 193 change_info.issue = 1
193 change_info.patchset = 0 194 change_info.patchset = 0
194 change_info.description = 'deescription', 195 change_info.description = 'deescription',
195 change_info.files = [('A', 'aa'), ('M', 'bb')] 196 change_info.files = [('A', 'aa'), ('M', 'bb')]
196 change_info.patch = None 197 change_info.patch = None
197 files = [item[1] for item in change_info.files] 198 files = [item[1] for item in change_info.files]
198 args = ['--foo=bar']
199 gcl.CheckHomeForFile('.gcl_upload_no_try').AndReturn(None) 199 gcl.CheckHomeForFile('.gcl_upload_no_try').AndReturn(None)
200 gcl.DoPresubmitChecks(change_info, False, True).AndReturn(True) 200 gcl.DoPresubmitChecks(change_info, False, True).AndReturn(True)
201 gcl.GetCodeReviewSetting('CODE_REVIEW_SERVER').AndReturn('my_server') 201 gcl.GetCodeReviewSetting('CODE_REVIEW_SERVER').AndReturn('my_server')
202 gcl.os.getcwd().AndReturn('somewhere') 202 gcl.os.getcwd().AndReturn('somewhere')
203 change_info.GetFiles().AndReturn(change_info.files) 203 change_info.GetFiles().AndReturn(change_info.files)
204 change_info.GetLocalRoot().AndReturn('proout') 204 change_info.GetLocalRoot().AndReturn('proout')
205 gcl.os.chdir('proout') 205 gcl.os.chdir('proout')
206 change_info.GetFileNames().AndReturn(files) 206 change_info.GetFileNames().AndReturn(files)
207 gcl.GenerateDiff(files) 207 gcl.GenerateDiff(files)
208 gcl.upload.RealMain(['upload.py', '-y', '--server=my_server', '--foo=bar', 208 gcl.upload.RealMain(['upload.py', '-y', '--server=my_server',
209 "--message=''", '--issue=1'], change_info.patch).AndReturn(("1", 209 '-r', 'georges@example.com',
210 '--message=\'\'', '--issue=1'],
211 change_info.patch).AndReturn(("1",
210 "2")) 212 "2"))
211 gcl.SendToRietveld("/lint/issue%s_%s" % ('1', '2'), timeout=0.5) 213 gcl.SendToRietveld("/lint/issue%s_%s" % ('1', '2'), timeout=0.5)
212 gcl.GetCodeReviewSetting('TRY_ON_UPLOAD').AndReturn('True') 214 gcl.GetCodeReviewSetting('TRY_ON_UPLOAD').AndReturn('True')
213 gcl.TryChange(change_info, [], swallow_exception=True) 215 gcl.TryChange(change_info, [], swallow_exception=True)
214 gcl.os.chdir('somewhere') 216 gcl.os.chdir('somewhere')
215 change_info.Save() 217 change_info.Save()
218 gcl.GetRepositoryRoot().AndReturn(self.fake_root_dir)
219 gcl.ChangeInfo.Load('naame', self.fake_root_dir, True, True
220 ).AndReturn(change_info)
216 self.mox.ReplayAll() 221 self.mox.ReplayAll()
217 222
218 gcl.CMDupload(change_info, args) 223 gcl.CMDupload(['naame', '-r', 'georges@example.com'])
219 224
220 def testServerOverride(self): 225 def testServerOverride(self):
221 change_info = gcl.ChangeInfo('naame', 0, 0, 'deescription', 226 change_info = gcl.ChangeInfo('naame', 0, 0, 'deescription',
222 [('A', 'aa'), ('M', 'bb')], 227 [('A', 'aa'), ('M', 'bb')],
223 self.fake_root_dir) 228 self.fake_root_dir)
224 self.mox.StubOutWithMock(change_info, 'Save') 229 self.mox.StubOutWithMock(change_info, 'Save')
225 args = ['--server=a', '--no_watchlists']
226 change_info.Save() 230 change_info.Save()
227 gcl.CheckHomeForFile('.gcl_upload_no_try').AndReturn(None) 231 gcl.CheckHomeForFile('.gcl_upload_no_try').AndReturn(None)
228 gcl.DoPresubmitChecks(change_info, False, True).AndReturn(True) 232 gcl.DoPresubmitChecks(change_info, False, True).AndReturn(True)
229 gcl.GetCodeReviewSetting('CODE_REVIEW_SERVER').AndReturn('my_server') 233 gcl.GetCodeReviewSetting('CODE_REVIEW_SERVER').AndReturn('my_server')
230 gcl.tempfile.mkstemp(text=True).AndReturn((42, 'descfile')) 234 gcl.tempfile.mkstemp(text=True).AndReturn((42, 'descfile'))
231 gcl.os.write(42, change_info.description) 235 gcl.os.write(42, change_info.description)
232 gcl.os.close(42) 236 gcl.os.close(42)
233 gcl.GetCodeReviewSetting('CC_LIST') 237 gcl.GetCodeReviewSetting('CC_LIST')
234 gcl.GetCodeReviewSetting('PRIVATE') 238 gcl.GetCodeReviewSetting('PRIVATE')
235 gcl.os.getcwd().AndReturn('somewhere') 239 gcl.os.getcwd().AndReturn('somewhere')
236 gcl.os.chdir(change_info.GetLocalRoot()) 240 gcl.os.chdir(change_info.GetLocalRoot())
237 gcl.GenerateDiff(change_info.GetFileNames()) 241 gcl.GenerateDiff(change_info.GetFileNames())
238 gcl.upload.RealMain(['upload.py', '-y', '--server=my_server', '--server=a', 242 gcl.upload.RealMain(['upload.py', '-y', '--server=my_server', '--server=a',
239 "--description_file=descfile", 243 "--description_file=descfile",
240 "--message=deescription"], change_info.patch).AndReturn(("1", "2")) 244 "--message=deescription"], change_info.patch).AndReturn(("1", "2"))
241 gcl.os.remove('descfile') 245 gcl.os.remove('descfile')
242 gcl.SendToRietveld("/lint/issue%s_%s" % ('1', '2'), timeout=0.5) 246 gcl.SendToRietveld("/lint/issue%s_%s" % ('1', '2'), timeout=0.5)
243 gcl.os.chdir('somewhere') 247 gcl.os.chdir('somewhere')
248 gcl.GetRepositoryRoot().AndReturn(self.fake_root_dir)
249 gcl.ChangeInfo.Load('naame', self.fake_root_dir, True, True
250 ).AndReturn(change_info)
244 self.mox.ReplayAll() 251 self.mox.ReplayAll()
245 252
246 gcl.CMDupload(change_info, args) 253 gcl.CMDupload(['naame', '--server=a', '--no_watchlists'])
247 254
248 def testNoTry(self): 255 def testNoTry(self):
249 change_info = gcl.ChangeInfo('naame', 0, 0, 'deescription', 256 change_info = gcl.ChangeInfo('naame', 0, 0, 'deescription',
250 [('A', 'aa'), ('M', 'bb')], 257 [('A', 'aa'), ('M', 'bb')],
251 self.fake_root_dir) 258 self.fake_root_dir)
252 change_info.Save = self.mox.CreateMockAnything() 259 change_info.Save = self.mox.CreateMockAnything()
253 args = ['--no-try', '--no_watchlists']
254 change_info.Save() 260 change_info.Save()
255 gcl.DoPresubmitChecks(change_info, False, True).AndReturn(True) 261 gcl.DoPresubmitChecks(change_info, False, True).AndReturn(True)
256 gcl.GetCodeReviewSetting('CODE_REVIEW_SERVER').AndReturn('my_server') 262 gcl.GetCodeReviewSetting('CODE_REVIEW_SERVER').AndReturn('my_server')
257 gcl.tempfile.mkstemp(text=True).AndReturn((42, 'descfile')) 263 gcl.tempfile.mkstemp(text=True).AndReturn((42, 'descfile'))
258 gcl.os.write(42, change_info.description) 264 gcl.os.write(42, change_info.description)
259 gcl.os.close(42) 265 gcl.os.close(42)
260 gcl.GetCodeReviewSetting('CC_LIST') 266 gcl.GetCodeReviewSetting('CC_LIST')
261 gcl.GetCodeReviewSetting('PRIVATE') 267 gcl.GetCodeReviewSetting('PRIVATE')
262 gcl.os.getcwd().AndReturn('somewhere') 268 gcl.os.getcwd().AndReturn('somewhere')
263 gcl.os.chdir(change_info.GetLocalRoot()) 269 gcl.os.chdir(change_info.GetLocalRoot())
264 gcl.GenerateDiff(change_info.GetFileNames()) 270 gcl.GenerateDiff(change_info.GetFileNames())
265 gcl.upload.RealMain(['upload.py', '-y', '--server=my_server', 271 gcl.upload.RealMain(['upload.py', '-y', '--server=my_server',
266 "--description_file=descfile", 272 "--description_file=descfile",
267 "--message=deescription"], change_info.patch).AndReturn(("1", "2")) 273 "--message=deescription"], change_info.patch).AndReturn(("1", "2"))
268 gcl.os.remove('descfile') 274 gcl.os.remove('descfile')
269 gcl.SendToRietveld("/lint/issue%s_%s" % ('1', '2'), timeout=0.5) 275 gcl.SendToRietveld("/lint/issue%s_%s" % ('1', '2'), timeout=0.5)
270 gcl.os.chdir('somewhere') 276 gcl.os.chdir('somewhere')
277 gcl.GetRepositoryRoot().AndReturn(self.fake_root_dir)
278 gcl.ChangeInfo.Load('naame', self.fake_root_dir, True, True
279 ).AndReturn(change_info)
271 self.mox.ReplayAll() 280 self.mox.ReplayAll()
272 281
273 gcl.CMDupload(change_info, args) 282 gcl.CMDupload(['naame', '--no-try', '--no_watchlists'])
274 283
275 def testNormal(self): 284 def testNormal(self):
276 change_info = gcl.ChangeInfo('naame', 0, 0, 'deescription', 285 change_info = gcl.ChangeInfo('naame', 0, 0, 'deescription',
277 [('A', 'aa'), ('M', 'bb')], 286 [('A', 'aa'), ('M', 'bb')],
278 self.fake_root_dir) 287 self.fake_root_dir)
279 self.mox.StubOutWithMock(change_info, 'Save') 288 self.mox.StubOutWithMock(change_info, 'Save')
280 args = ['--no_watchlists']
281 change_info.Save() 289 change_info.Save()
282 gcl.CheckHomeForFile('.gcl_upload_no_try').AndReturn(None) 290 gcl.CheckHomeForFile('.gcl_upload_no_try').AndReturn(None)
283 gcl.DoPresubmitChecks(change_info, False, True).AndReturn(True) 291 gcl.DoPresubmitChecks(change_info, False, True).AndReturn(True)
284 gcl.GetCodeReviewSetting('CODE_REVIEW_SERVER').AndReturn('my_server') 292 gcl.GetCodeReviewSetting('CODE_REVIEW_SERVER').AndReturn('my_server')
285 gcl.tempfile.mkstemp(text=True).AndReturn((42, 'descfile')) 293 gcl.tempfile.mkstemp(text=True).AndReturn((42, 'descfile'))
286 gcl.os.write(42, change_info.description) 294 gcl.os.write(42, change_info.description)
287 gcl.os.close(42) 295 gcl.os.close(42)
288 gcl.GetCodeReviewSetting('CC_LIST') 296 gcl.GetCodeReviewSetting('CC_LIST')
289 gcl.GetCodeReviewSetting('PRIVATE') 297 gcl.GetCodeReviewSetting('PRIVATE')
290 gcl.os.getcwd().AndReturn('somewhere') 298 gcl.os.getcwd().AndReturn('somewhere')
291 gcl.os.chdir(change_info.GetLocalRoot()) 299 gcl.os.chdir(change_info.GetLocalRoot())
292 gcl.GenerateDiff(change_info.GetFileNames()) 300 gcl.GenerateDiff(change_info.GetFileNames())
293 gcl.upload.RealMain(['upload.py', '-y', '--server=my_server', 301 gcl.upload.RealMain(['upload.py', '-y', '--server=my_server',
294 "--description_file=descfile", 302 "--description_file=descfile",
295 "--message=deescription"], change_info.patch).AndReturn(("1", "2")) 303 "--message=deescription"], change_info.patch).AndReturn(("1", "2"))
296 gcl.os.remove('descfile') 304 gcl.os.remove('descfile')
297 gcl.SendToRietveld("/lint/issue%s_%s" % ('1', '2'), timeout=0.5) 305 gcl.SendToRietveld("/lint/issue%s_%s" % ('1', '2'), timeout=0.5)
298 gcl.GetCodeReviewSetting('TRY_ON_UPLOAD').AndReturn('True') 306 gcl.GetCodeReviewSetting('TRY_ON_UPLOAD').AndReturn('True')
299 gcl.TryChange(change_info, [], swallow_exception=True) 307 gcl.TryChange(change_info, [], swallow_exception=True)
300 gcl.os.chdir('somewhere') 308 gcl.os.chdir('somewhere')
309 gcl.GetRepositoryRoot().AndReturn(self.fake_root_dir)
310 gcl.ChangeInfo.Load('naame', self.fake_root_dir, True, True
311 ).AndReturn(change_info)
301 self.mox.ReplayAll() 312 self.mox.ReplayAll()
302 313
303 gcl.CMDupload(change_info, args) 314 gcl.CMDupload(['naame', '--no_watchlists'])
304 self.assertEquals(change_info.issue, 1) 315 self.assertEquals(change_info.issue, 1)
305 self.assertEquals(change_info.patchset, 2) 316 self.assertEquals(change_info.patchset, 2)
306 317
307 318
308 if __name__ == '__main__': 319 if __name__ == '__main__':
309 import unittest 320 import unittest
310 unittest.main() 321 unittest.main()
OLDNEW
« no previous file with comments | « gcl.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698