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

Side by Side Diff: tests/gcl_unittest.py

Issue 2096003: Refactor gcl.py to use a similar pattern for every commands. (Closed)
Patch Set: Small fix 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 13 matching lines...) Expand all
24 self.mox.StubOutWithMock(gcl.gclient_utils, 'FileRead') 24 self.mox.StubOutWithMock(gcl.gclient_utils, 'FileRead')
25 self.mox.StubOutWithMock(gcl.gclient_utils, 'FileWrite') 25 self.mox.StubOutWithMock(gcl.gclient_utils, 'FileWrite')
26 gcl.REPOSITORY_ROOT = None 26 gcl.REPOSITORY_ROOT = None
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', 'Change', 34 'CODEREVIEW_SETTINGS', 'CODEREVIEW_SETTINGS_FILE',
35 'ChangeInfo', 'Changes', 'Commit', 'DEFAULT_LINT_IGNORE_REGEX', 35 'CMDchange', 'CMDchanges', 'CMDcommit', 'CMDdelete', 'CMDdeleteempties',
36 'DEFAULT_LINT_REGEX', 'CheckHomeForFile', 'DeleteEmptyChangeLists', 36 'CMDdescription', 'CMDdiff', 'CMDhelp', 'CMDlint', 'CMDnothave',
37 'CMDopened', 'CMDpresubmit', 'CMDrename', 'CMDsettings', 'CMDstatus',
38 'CMDtry', 'CMDupload',
39 'ChangeInfo', 'DEFAULT_LINT_IGNORE_REGEX',
40 'DEFAULT_LINT_REGEX', 'CheckHomeForFile',
37 'DoPresubmitChecks', 'ErrorExit', 'FILES_CACHE', 'FilterFlag', 41 'DoPresubmitChecks', 'ErrorExit', 'FILES_CACHE', 'FilterFlag',
38 'GenerateChangeName', 'GenerateDiff', 'GetCLs', 'GetCacheDir', 42 'GenerateChangeName', 'GenerateDiff', 'GetCLs', 'GetCacheDir',
39 'GetCachedFile', 'GetChangelistInfoFile', 'GetChangesDir', 43 'GetCachedFile', 'GetChangelistInfoFile', 'GetChangesDir',
40 'GetCodeReviewSetting', 'GetEditor', 'GetFilesNotInCL', 'GetInfoDir', 44 'GetCodeReviewSetting', 'GetEditor', 'GetFilesNotInCL', 'GetInfoDir',
41 'GetIssueDescription', 'GetModifiedFiles', 'GetRepositoryRoot', 'Help', 45 'GetIssueDescription', 'GetModifiedFiles', 'GetRepositoryRoot',
42 'Lint', 'LoadChangelistInfoForMultiple', 'MISSING_TEST_MSG', 'Opened', 46 'ListFiles',
43 'OptionallyDoPresubmitChecks', 'PresubmitCL', 'REPOSITORY_ROOT', 47 'LoadChangelistInfoForMultiple', 'MISSING_TEST_MSG',
48 'OptionallyDoPresubmitChecks', 'REPOSITORY_ROOT',
44 'RunShell', 'RunShellWithReturnCode', 'SVN', 49 'RunShell', 'RunShellWithReturnCode', 'SVN',
45 'SendToRietveld', 'TryChange', 'UnknownFiles', 'UploadCL', 'Warn', 50 'SendToRietveld', 'TryChange', 'UnknownFiles', 'Warn',
46 'breakpad', 'gclient_utils', 'getpass', 'main', 'os', 'random', 're', 51 'breakpad', 'gclient_utils', 'getpass', 'main', 'os', 'random', 're',
47 'shutil', 'string', 'subprocess', 'sys', 'tempfile', 'upload', 52 'shutil', 'string', 'subprocess', 'sys', 'tempfile', 'time', 'upload',
48 'urllib2', 53 'urllib2',
49 ] 54 ]
50 # If this test fails, you should add the relevant test. 55 # If this test fails, you should add the relevant test.
51 self.compareMembers(gcl, members) 56 self.compareMembers(gcl, members)
52 57
53 def testIsSVNMoved(self): 58 def testIsSVNMoved(self):
54 # TODO(maruel): TEST ME 59 # TODO(maruel): TEST ME
55 pass 60 pass
56 61
57 def testGetSVNFileProperty(self): 62 def testGetSVNFileProperty(self):
(...skipping 14 matching lines...) Expand all
72 self.mox.ReplayAll() 77 self.mox.ReplayAll()
73 self.assertRaises(gcl.gclient_utils.Error, gcl.GetRepositoryRoot) 78 self.assertRaises(gcl.gclient_utils.Error, gcl.GetRepositoryRoot)
74 79
75 def testGetRepositoryRootGood(self): 80 def testGetRepositoryRootGood(self):
76 root_path = gcl.os.path.join('bleh', 'prout', 'pouet') 81 root_path = gcl.os.path.join('bleh', 'prout', 'pouet')
77 gcl.os.getcwd().AndReturn(root_path) 82 gcl.os.getcwd().AndReturn(root_path)
78 gcl.SVN.GetCheckoutRoot(root_path).AndReturn(root_path + '.~') 83 gcl.SVN.GetCheckoutRoot(root_path).AndReturn(root_path + '.~')
79 self.mox.ReplayAll() 84 self.mox.ReplayAll()
80 self.assertEquals(gcl.GetRepositoryRoot(), root_path + '.~') 85 self.assertEquals(gcl.GetRepositoryRoot(), root_path + '.~')
81 86
82 def testGetCachedFile(self):
83 # TODO(maruel): TEST ME
84 pass
85
86 def testGetCodeReviewSetting(self):
87 # TODO(maruel): TEST ME
88 pass
89
90 def testGetChangelistInfoFile(self):
91 # TODO(maruel): TEST ME
92 pass
93
94 def testLoadChangelistInfoForMultiple(self):
95 # TODO(maruel): TEST ME
96 pass
97
98 def testGetModifiedFiles(self):
99 # TODO(maruel): TEST ME
100 pass
101
102 def testGetFilesNotInCL(self):
103 # TODO(maruel): TEST ME
104 pass
105
106 def testSendToRietveld(self):
107 # TODO(maruel): TEST ME
108 pass
109
110 def testOpened(self):
111 # TODO(maruel): TEST ME
112 pass
113
114 def testHelp(self): 87 def testHelp(self):
115 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'))
116 gcl.sys.stdout.write('\n') 89 gcl.sys.stdout.write('\n')
117 self.mox.ReplayAll() 90 self.mox.ReplayAll()
118 gcl.Help() 91 gcl.CMDhelp()
119
120 def testGenerateDiff(self):
121 # TODO(maruel): TEST ME
122 pass
123
124 def testPresubmitCL(self):
125 # TODO(maruel): TEST ME
126 pass
127
128 def testTryChange(self):
129 # TODO(maruel): TEST ME
130 pass
131
132 def testCommit(self):
133 # TODO(maruel): TEST ME
134 pass
135
136 def testChange(self):
137 # TODO(maruel): TEST ME
138 pass
139
140 def testLint(self):
141 # TODO(maruel): TEST ME
142 pass
143
144 def testDoPresubmitChecks(self):
145 # TODO(maruel): TEST ME
146 pass
147 92
148 93
149 class ChangeInfoUnittest(GclTestsBase): 94 class ChangeInfoUnittest(GclTestsBase):
150 def setUp(self): 95 def setUp(self):
151 GclTestsBase.setUp(self) 96 GclTestsBase.setUp(self)
152 self.mox.StubOutWithMock(gcl, 'GetChangelistInfoFile') 97 self.mox.StubOutWithMock(gcl, 'GetChangelistInfoFile')
153 self.mox.StubOutWithMock(gcl, 'GetRepositoryRoot') 98 self.mox.StubOutWithMock(gcl, 'GetRepositoryRoot')
154 99
155 def testChangeInfoMembers(self): 100 def testChangeInfoMembers(self):
156 self.mox.ReplayAll() 101 self.mox.ReplayAll()
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 gcl.gclient_utils.FileWrite( 168 gcl.gclient_utils.FileWrite(
224 'foo', 169 'foo',
225 gcl.ChangeInfo._SEPARATOR.join(['0, 0, dirty', '', ''])) 170 gcl.ChangeInfo._SEPARATOR.join(['0, 0, dirty', '', '']))
226 self.mox.ReplayAll() 171 self.mox.ReplayAll()
227 172
228 change_info = gcl.ChangeInfo('', 0, 0, '', None, self.fake_root_dir, 173 change_info = gcl.ChangeInfo('', 0, 0, '', None, self.fake_root_dir,
229 needs_upload=True) 174 needs_upload=True)
230 change_info.Save() 175 change_info.Save()
231 176
232 177
233 class UploadCLUnittest(GclTestsBase): 178 class CMDuploadUnittest(GclTestsBase):
234 def setUp(self): 179 def setUp(self):
235 GclTestsBase.setUp(self) 180 GclTestsBase.setUp(self)
236 self.mox.StubOutWithMock(gcl, 'CheckHomeForFile') 181 self.mox.StubOutWithMock(gcl, 'CheckHomeForFile')
237 self.mox.StubOutWithMock(gcl, 'DoPresubmitChecks') 182 self.mox.StubOutWithMock(gcl, 'DoPresubmitChecks')
238 self.mox.StubOutWithMock(gcl, 'GenerateDiff') 183 self.mox.StubOutWithMock(gcl, 'GenerateDiff')
239 self.mox.StubOutWithMock(gcl, 'GetCodeReviewSetting') 184 self.mox.StubOutWithMock(gcl, 'GetCodeReviewSetting')
240 self.mox.StubOutWithMock(gcl, 'GetRepositoryRoot') 185 self.mox.StubOutWithMock(gcl, 'GetRepositoryRoot')
241 self.mox.StubOutWithMock(gcl, 'SendToRietveld') 186 self.mox.StubOutWithMock(gcl, 'SendToRietveld')
242 self.mox.StubOutWithMock(gcl, 'TryChange') 187 self.mox.StubOutWithMock(gcl, 'TryChange')
243 188
(...skipping 19 matching lines...) Expand all
263 gcl.upload.RealMain(['upload.py', '-y', '--server=my_server', '--foo=bar', 208 gcl.upload.RealMain(['upload.py', '-y', '--server=my_server', '--foo=bar',
264 "--message=''", '--issue=1'], change_info.patch).AndReturn(("1", 209 "--message=''", '--issue=1'], change_info.patch).AndReturn(("1",
265 "2")) 210 "2"))
266 gcl.SendToRietveld("/lint/issue%s_%s" % ('1', '2'), timeout=0.5) 211 gcl.SendToRietveld("/lint/issue%s_%s" % ('1', '2'), timeout=0.5)
267 gcl.GetCodeReviewSetting('TRY_ON_UPLOAD').AndReturn('True') 212 gcl.GetCodeReviewSetting('TRY_ON_UPLOAD').AndReturn('True')
268 gcl.TryChange(change_info, [], swallow_exception=True) 213 gcl.TryChange(change_info, [], swallow_exception=True)
269 gcl.os.chdir('somewhere') 214 gcl.os.chdir('somewhere')
270 change_info.Save() 215 change_info.Save()
271 self.mox.ReplayAll() 216 self.mox.ReplayAll()
272 217
273 gcl.UploadCL(change_info, args) 218 gcl.CMDupload(change_info, args)
274 219
275 def testServerOverride(self): 220 def testServerOverride(self):
276 change_info = gcl.ChangeInfo('naame', 0, 0, 'deescription', 221 change_info = gcl.ChangeInfo('naame', 0, 0, 'deescription',
277 [('A', 'aa'), ('M', 'bb')], 222 [('A', 'aa'), ('M', 'bb')],
278 self.fake_root_dir) 223 self.fake_root_dir)
279 self.mox.StubOutWithMock(change_info, 'Save') 224 self.mox.StubOutWithMock(change_info, 'Save')
280 args = ['--server=a', '--no_watchlists'] 225 args = ['--server=a', '--no_watchlists']
281 change_info.Save() 226 change_info.Save()
282 gcl.CheckHomeForFile('.gcl_upload_no_try').AndReturn(None) 227 gcl.CheckHomeForFile('.gcl_upload_no_try').AndReturn(None)
283 gcl.DoPresubmitChecks(change_info, False, True).AndReturn(True) 228 gcl.DoPresubmitChecks(change_info, False, True).AndReturn(True)
284 gcl.GetCodeReviewSetting('CODE_REVIEW_SERVER').AndReturn('my_server') 229 gcl.GetCodeReviewSetting('CODE_REVIEW_SERVER').AndReturn('my_server')
285 gcl.tempfile.mkstemp(text=True).AndReturn((42, 'descfile')) 230 gcl.tempfile.mkstemp(text=True).AndReturn((42, 'descfile'))
286 gcl.os.write(42, change_info.description) 231 gcl.os.write(42, change_info.description)
287 gcl.os.close(42) 232 gcl.os.close(42)
288 gcl.GetCodeReviewSetting('CC_LIST') 233 gcl.GetCodeReviewSetting('CC_LIST')
289 gcl.GetCodeReviewSetting('PRIVATE') 234 gcl.GetCodeReviewSetting('PRIVATE')
290 gcl.os.getcwd().AndReturn('somewhere') 235 gcl.os.getcwd().AndReturn('somewhere')
291 gcl.os.chdir(change_info.GetLocalRoot()) 236 gcl.os.chdir(change_info.GetLocalRoot())
292 gcl.GenerateDiff(change_info.GetFileNames()) 237 gcl.GenerateDiff(change_info.GetFileNames())
293 gcl.upload.RealMain(['upload.py', '-y', '--server=my_server', '--server=a', 238 gcl.upload.RealMain(['upload.py', '-y', '--server=my_server', '--server=a',
294 "--description_file=descfile", 239 "--description_file=descfile",
295 "--message=deescription"], change_info.patch).AndReturn(("1", "2")) 240 "--message=deescription"], change_info.patch).AndReturn(("1", "2"))
296 gcl.os.remove('descfile') 241 gcl.os.remove('descfile')
297 gcl.SendToRietveld("/lint/issue%s_%s" % ('1', '2'), timeout=0.5) 242 gcl.SendToRietveld("/lint/issue%s_%s" % ('1', '2'), timeout=0.5)
298 gcl.os.chdir('somewhere') 243 gcl.os.chdir('somewhere')
299 self.mox.ReplayAll() 244 self.mox.ReplayAll()
300 245
301 gcl.UploadCL(change_info, args) 246 gcl.CMDupload(change_info, args)
302 247
303 def testNoTry(self): 248 def testNoTry(self):
304 change_info = gcl.ChangeInfo('naame', 0, 0, 'deescription', 249 change_info = gcl.ChangeInfo('naame', 0, 0, 'deescription',
305 [('A', 'aa'), ('M', 'bb')], 250 [('A', 'aa'), ('M', 'bb')],
306 self.fake_root_dir) 251 self.fake_root_dir)
307 change_info.Save = self.mox.CreateMockAnything() 252 change_info.Save = self.mox.CreateMockAnything()
308 args = ['--no-try', '--no_watchlists'] 253 args = ['--no-try', '--no_watchlists']
309 change_info.Save() 254 change_info.Save()
310 gcl.DoPresubmitChecks(change_info, False, True).AndReturn(True) 255 gcl.DoPresubmitChecks(change_info, False, True).AndReturn(True)
311 gcl.GetCodeReviewSetting('CODE_REVIEW_SERVER').AndReturn('my_server') 256 gcl.GetCodeReviewSetting('CODE_REVIEW_SERVER').AndReturn('my_server')
312 gcl.tempfile.mkstemp(text=True).AndReturn((42, 'descfile')) 257 gcl.tempfile.mkstemp(text=True).AndReturn((42, 'descfile'))
313 gcl.os.write(42, change_info.description) 258 gcl.os.write(42, change_info.description)
314 gcl.os.close(42) 259 gcl.os.close(42)
315 gcl.GetCodeReviewSetting('CC_LIST') 260 gcl.GetCodeReviewSetting('CC_LIST')
316 gcl.GetCodeReviewSetting('PRIVATE') 261 gcl.GetCodeReviewSetting('PRIVATE')
317 gcl.os.getcwd().AndReturn('somewhere') 262 gcl.os.getcwd().AndReturn('somewhere')
318 gcl.os.chdir(change_info.GetLocalRoot()) 263 gcl.os.chdir(change_info.GetLocalRoot())
319 gcl.GenerateDiff(change_info.GetFileNames()) 264 gcl.GenerateDiff(change_info.GetFileNames())
320 gcl.upload.RealMain(['upload.py', '-y', '--server=my_server', 265 gcl.upload.RealMain(['upload.py', '-y', '--server=my_server',
321 "--description_file=descfile", 266 "--description_file=descfile",
322 "--message=deescription"], change_info.patch).AndReturn(("1", "2")) 267 "--message=deescription"], change_info.patch).AndReturn(("1", "2"))
323 gcl.os.remove('descfile') 268 gcl.os.remove('descfile')
324 gcl.SendToRietveld("/lint/issue%s_%s" % ('1', '2'), timeout=0.5) 269 gcl.SendToRietveld("/lint/issue%s_%s" % ('1', '2'), timeout=0.5)
325 gcl.os.chdir('somewhere') 270 gcl.os.chdir('somewhere')
326 self.mox.ReplayAll() 271 self.mox.ReplayAll()
327 272
328 gcl.UploadCL(change_info, args) 273 gcl.CMDupload(change_info, args)
329 274
330 def testNormal(self): 275 def testNormal(self):
331 change_info = gcl.ChangeInfo('naame', 0, 0, 'deescription', 276 change_info = gcl.ChangeInfo('naame', 0, 0, 'deescription',
332 [('A', 'aa'), ('M', 'bb')], 277 [('A', 'aa'), ('M', 'bb')],
333 self.fake_root_dir) 278 self.fake_root_dir)
334 self.mox.StubOutWithMock(change_info, 'Save') 279 self.mox.StubOutWithMock(change_info, 'Save')
335 args = ['--no_watchlists'] 280 args = ['--no_watchlists']
336 change_info.Save() 281 change_info.Save()
337 gcl.CheckHomeForFile('.gcl_upload_no_try').AndReturn(None) 282 gcl.CheckHomeForFile('.gcl_upload_no_try').AndReturn(None)
338 gcl.DoPresubmitChecks(change_info, False, True).AndReturn(True) 283 gcl.DoPresubmitChecks(change_info, False, True).AndReturn(True)
339 gcl.GetCodeReviewSetting('CODE_REVIEW_SERVER').AndReturn('my_server') 284 gcl.GetCodeReviewSetting('CODE_REVIEW_SERVER').AndReturn('my_server')
340 gcl.tempfile.mkstemp(text=True).AndReturn((42, 'descfile')) 285 gcl.tempfile.mkstemp(text=True).AndReturn((42, 'descfile'))
341 gcl.os.write(42, change_info.description) 286 gcl.os.write(42, change_info.description)
342 gcl.os.close(42) 287 gcl.os.close(42)
343 gcl.GetCodeReviewSetting('CC_LIST') 288 gcl.GetCodeReviewSetting('CC_LIST')
344 gcl.GetCodeReviewSetting('PRIVATE') 289 gcl.GetCodeReviewSetting('PRIVATE')
345 gcl.os.getcwd().AndReturn('somewhere') 290 gcl.os.getcwd().AndReturn('somewhere')
346 gcl.os.chdir(change_info.GetLocalRoot()) 291 gcl.os.chdir(change_info.GetLocalRoot())
347 gcl.GenerateDiff(change_info.GetFileNames()) 292 gcl.GenerateDiff(change_info.GetFileNames())
348 gcl.upload.RealMain(['upload.py', '-y', '--server=my_server', 293 gcl.upload.RealMain(['upload.py', '-y', '--server=my_server',
349 "--description_file=descfile", 294 "--description_file=descfile",
350 "--message=deescription"], change_info.patch).AndReturn(("1", "2")) 295 "--message=deescription"], change_info.patch).AndReturn(("1", "2"))
351 gcl.os.remove('descfile') 296 gcl.os.remove('descfile')
352 gcl.SendToRietveld("/lint/issue%s_%s" % ('1', '2'), timeout=0.5) 297 gcl.SendToRietveld("/lint/issue%s_%s" % ('1', '2'), timeout=0.5)
353 gcl.GetCodeReviewSetting('TRY_ON_UPLOAD').AndReturn('True') 298 gcl.GetCodeReviewSetting('TRY_ON_UPLOAD').AndReturn('True')
354 gcl.TryChange(change_info, [], swallow_exception=True) 299 gcl.TryChange(change_info, [], swallow_exception=True)
355 gcl.os.chdir('somewhere') 300 gcl.os.chdir('somewhere')
356 self.mox.ReplayAll() 301 self.mox.ReplayAll()
357 302
358 gcl.UploadCL(change_info, args) 303 gcl.CMDupload(change_info, args)
359 self.assertEquals(change_info.issue, 1) 304 self.assertEquals(change_info.issue, 1)
360 self.assertEquals(change_info.patchset, 2) 305 self.assertEquals(change_info.patchset, 2)
361 306
362 307
363 if __name__ == '__main__': 308 if __name__ == '__main__':
364 import unittest 309 import unittest
365 unittest.main() 310 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