OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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() |
OLD | NEW |