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

Side by Side Diff: tests/gcl_unittest.py

Issue 13800018: Make gcl use git_cl.py code for consistency in the CL description formatting. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@2_refactor
Patch Set: append_line -> append_footer Created 7 years, 8 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/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 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 # pylint: disable=E1103,E1101,E1120 8 # pylint: disable=E1103,E1101,E1120
9 9
10 import os 10 import os
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 change_info.issue = 1 46 change_info.issue = 1
47 change_info.patchset = 0 47 change_info.patchset = 0
48 change_info.description = 'deescription' 48 change_info.description = 'deescription'
49 change_info.files = files 49 change_info.files = files
50 change_info.GetFiles = lambda : change_info.files 50 change_info.GetFiles = lambda : change_info.files
51 change_info.GetIssueDescription = lambda : change_info.description 51 change_info.GetIssueDescription = lambda : change_info.description
52 change_info.GetFileNames = lambda : [f[1] for f in change_info.files] 52 change_info.GetFileNames = lambda : [f[1] for f in change_info.files]
53 change_info.GetLocalRoot = lambda : 'proout' 53 change_info.GetLocalRoot = lambda : 'proout'
54 change_info.patch = None 54 change_info.patch = None
55 change_info.rietveld = 'https://my_server' 55 change_info.rietveld = 'https://my_server'
56 change_info.reviewers = None
57 change_info._closed = False 56 change_info._closed = False
58 change_info._deleted = False 57 change_info._deleted = False
59 change_info._comments_added = [] 58 change_info._comments_added = []
60 59
61 class RpcServer(object): 60 class RpcServer(object):
62 # pylint: disable=R0201,W0613 61 # pylint: disable=R0201,W0613
63 def get_issue_properties(self, issue, messages): 62 def get_issue_properties(self, issue, messages):
64 return { 'patchsets': [1337] } 63 return { 'patchsets': [1337] }
65 change_info.RpcServer = RpcServer 64 change_info.RpcServer = RpcServer
66 65
(...skipping 28 matching lines...) Expand all
95 'CMDopened', 'CMDpassthru', 'CMDpresubmit', 'CMDrename', 'CMDsettings', 94 'CMDopened', 'CMDpassthru', 'CMDpresubmit', 'CMDrename', 'CMDsettings',
96 'CMDstatus', 'CMDtry', 'CMDupload', 95 'CMDstatus', 'CMDtry', 'CMDupload',
97 'ChangeInfo', 'Command', 'DEFAULT_LINT_IGNORE_REGEX', 96 'ChangeInfo', 'Command', 'DEFAULT_LINT_IGNORE_REGEX',
98 'DEFAULT_LINT_REGEX', 'CheckHomeForFile', 'DoPresubmitChecks', 97 'DEFAULT_LINT_REGEX', 'CheckHomeForFile', 'DoPresubmitChecks',
99 'ErrorExit', 'FILES_CACHE', 'FilterFlag', 'GenUsage', 98 'ErrorExit', 'FILES_CACHE', 'FilterFlag', 'GenUsage',
100 'GenerateChangeName', 'GenerateDiff', 'GetCLs', 'GetCacheDir', 99 'GenerateChangeName', 'GenerateDiff', 'GetCLs', 'GetCacheDir',
101 'GetCachedFile', 'GetChangelistInfoFile', 'GetChangesDir', 100 'GetCachedFile', 'GetChangelistInfoFile', 'GetChangesDir',
102 'GetCodeReviewSetting', 'GetFilesNotInCL', 'GetInfoDir', 101 'GetCodeReviewSetting', 'GetFilesNotInCL', 'GetInfoDir',
103 'GetModifiedFiles', 'GetRepositoryRoot', 'ListFiles', 102 'GetModifiedFiles', 'GetRepositoryRoot', 'ListFiles',
104 'LoadChangelistInfoForMultiple', 'MISSING_TEST_MSG', 103 'LoadChangelistInfoForMultiple', 'MISSING_TEST_MSG',
105 'OptionallyDoPresubmitChecks', 'REPOSITORY_ROOT', 'REVIEWERS_REGEX', 104 'OptionallyDoPresubmitChecks', 'REPOSITORY_ROOT',
106 'RunShell', 'RunShellWithReturnCode', 'SVN', 105 'RunShell', 'RunShellWithReturnCode', 'SVN',
107 'TryChange', 'UnknownFiles', 'Warn', 106 'TryChange', 'UnknownFiles', 'Warn',
108 'attrs', 'breakpad', 'defer_attributes', 'fix_encoding', 107 'attrs', 'breakpad', 'defer_attributes', 'fix_encoding',
109 'gclient_utils', 'json', 'main', 'need_change', 'need_change_and_args', 108 'gclient_utils', 'git_cl', 'json', 'main', 'need_change',
110 'no_args', 'optparse', 'os', 'presubmit_support', 'random', 're', 109 'need_change_and_args', 'no_args', 'optparse', 'os',
111 'rietveld', 110 'presubmit_support', 'random', 're', 'rietveld',
112 'string', 'subprocess2', 'sys', 'tempfile', 'time', 111 'string', 'subprocess2', 'sys', 'tempfile', 'time',
113 'upload', 'urllib2', 112 'upload', 'urllib2',
114 ] 113 ]
115 # If this test fails, you should add the relevant test. 114 # If this test fails, you should add the relevant test.
116 self.compareMembers(gcl, members) 115 self.compareMembers(gcl, members)
117 116
118 def testIsSVNMoved(self): 117 def testIsSVNMoved(self):
119 # TODO(maruel): TEST ME 118 # TODO(maruel): TEST ME
120 pass 119 pass
121 120
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 class ChangeInfoUnittest(GclTestsBase): 185 class ChangeInfoUnittest(GclTestsBase):
187 def setUp(self): 186 def setUp(self):
188 GclTestsBase.setUp(self) 187 GclTestsBase.setUp(self)
189 self.mox.StubOutWithMock(gcl, 'GetChangelistInfoFile') 188 self.mox.StubOutWithMock(gcl, 'GetChangelistInfoFile')
190 self.mox.StubOutWithMock(gcl, 'GetRepositoryRoot') 189 self.mox.StubOutWithMock(gcl, 'GetRepositoryRoot')
191 190
192 def testChangeInfoMembers(self): 191 def testChangeInfoMembers(self):
193 self.mox.ReplayAll() 192 self.mox.ReplayAll()
194 members = [ 193 members = [
195 'AddComment', 'CloseIssue', 'Delete', 'Exists', 'GetFiles', 194 'AddComment', 'CloseIssue', 'Delete', 'Exists', 'GetFiles',
196 'GetFileNames', 'GetLocalRoot', 'GetIssueDescription', 'Load', 195 'GetFileNames', 'GetLocalRoot',
196 'Load',
197 'MissingTests', 'NeedsUpload', 'PrimeLint', 'RpcServer', 'Save', 197 'MissingTests', 'NeedsUpload', 'PrimeLint', 'RpcServer', 'Save',
198 'SendToRietveld', 198 'SendToRietveld',
199 'SEPARATOR', 199 'SEPARATOR',
200 'UpdateRietveldDescription', 200 'UpdateDescriptionFromIssue', 'UpdateRietveldDescription',
201 'description', 'issue', 'name', 201 'append_footer',
202 'needs_upload', 'patch', 'patchset', 'reviewers', 'rietveld', 202 'description', 'force_description', 'get_reviewers', 'issue', 'name',
203 'needs_upload', 'patch', 'patchset', 'rietveld',
203 ] 204 ]
204 # If this test fails, you should add the relevant test. 205 # If this test fails, you should add the relevant test.
205 self.compareMembers( 206 self.compareMembers(
206 gcl.ChangeInfo('', 0, 0, '', None, self.fake_root_dir, 'foo', False), 207 gcl.ChangeInfo('', 0, 0, '', None, self.fake_root_dir, 'foo', False),
207 members) 208 members)
208 209
209 def testChangeInfoBase(self): 210 def testChangeInfoBase(self):
210 files = [('M', 'foo'), ('A', 'bar')] 211 files = [('M', 'foo'), ('A', 'bar')]
211 self.mox.ReplayAll() 212 self.mox.ReplayAll()
212 o = gcl.ChangeInfo( 213 o = gcl.ChangeInfo(
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 change_info.files = [('A', 'aa'), ('M', 'bb')] 316 change_info.files = [('A', 'aa'), ('M', 'bb')]
316 change_info.patch = None 317 change_info.patch = None
317 change_info.rietveld = 'https://my_server' 318 change_info.rietveld = 'https://my_server'
318 files = [item[1] for item in change_info.files] 319 files = [item[1] for item in change_info.files]
319 output = presubmit_support.PresubmitOutput() 320 output = presubmit_support.PresubmitOutput()
320 gcl.DoPresubmitChecks(change_info, False, True).AndReturn(output) 321 gcl.DoPresubmitChecks(change_info, False, True).AndReturn(output)
321 #gcl.GetCodeReviewSetting('CODE_REVIEW_SERVER').AndReturn('my_server') 322 #gcl.GetCodeReviewSetting('CODE_REVIEW_SERVER').AndReturn('my_server')
322 gcl.os.getcwd().AndReturn('somewhere') 323 gcl.os.getcwd().AndReturn('somewhere')
323 change_info.GetFiles().AndReturn(change_info.files) 324 change_info.GetFiles().AndReturn(change_info.files)
324 gcl.os.chdir('proout') 325 gcl.os.chdir('proout')
326 change_info.get_reviewers().AndReturn('foo@bar.com')
325 change_info.GetFileNames().AndReturn(files) 327 change_info.GetFileNames().AndReturn(files)
326 gcl.GenerateDiff(files) 328 gcl.GenerateDiff(files)
327 gcl.upload.RealMain(['upload.py', '-y', '--server=https://my_server', 329 gcl.upload.RealMain(['upload.py', '-y', '--server=https://my_server',
328 '-r', 'georges@example.com', 330 '-r', 'georges@example.com',
329 '--issue=1', '--title= '], 331 '--issue=1', '--title= '],
330 change_info.patch).AndReturn(("1", 332 change_info.patch).AndReturn(("1",
331 "2")) 333 "2"))
332 change_info.GetLocalRoot().AndReturn('proout') 334 change_info.GetLocalRoot().AndReturn('proout')
333 change_info.Save() 335 change_info.Save()
334 change_info.PrimeLint() 336 change_info.PrimeLint()
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 451
450 def testReviewersInDescription(self): 452 def testReviewersInDescription(self):
451 change_info = self.mox.CreateMock(gcl.ChangeInfo) 453 change_info = self.mox.CreateMock(gcl.ChangeInfo)
452 change_info.name = 'naame' 454 change_info.name = 'naame'
453 change_info.issue = 1 455 change_info.issue = 1
454 change_info.patchset = 0 456 change_info.patchset = 0
455 change_info.description = 'deescription\n\nR=georges@example.com', 457 change_info.description = 'deescription\n\nR=georges@example.com',
456 change_info.files = [('A', 'aa'), ('M', 'bb')] 458 change_info.files = [('A', 'aa'), ('M', 'bb')]
457 change_info.patch = None 459 change_info.patch = None
458 change_info.rietveld = 'https://my_server' 460 change_info.rietveld = 'https://my_server'
459 change_info.reviewers = ['georges@example.com']
460 files = [item[1] for item in change_info.files] 461 files = [item[1] for item in change_info.files]
461 output = presubmit_support.PresubmitOutput() 462 output = presubmit_support.PresubmitOutput()
462 gcl.DoPresubmitChecks(change_info, False, True).AndReturn(output) 463 gcl.DoPresubmitChecks(change_info, False, True).AndReturn(output)
463 #gcl.GetCodeReviewSetting('CODE_REVIEW_SERVER').AndReturn('my_server') 464 #gcl.GetCodeReviewSetting('CODE_REVIEW_SERVER').AndReturn('my_server')
464 gcl.os.getcwd().AndReturn('somewhere') 465 gcl.os.getcwd().AndReturn('somewhere')
465 change_info.GetFiles().AndReturn(change_info.files) 466 change_info.GetFiles().AndReturn(change_info.files)
467 change_info.get_reviewers().AndReturn(['georges@example.com'])
466 change_info.GetFileNames().AndReturn(files) 468 change_info.GetFileNames().AndReturn(files)
467 change_info.GetLocalRoot().AndReturn('proout') 469 change_info.GetLocalRoot().AndReturn('proout')
468 gcl.os.chdir('proout') 470 gcl.os.chdir('proout')
469 gcl.GenerateDiff(files) 471 gcl.GenerateDiff(files)
470 gcl.upload.RealMain(['upload.py', '-y', '--server=https://my_server', 472 gcl.upload.RealMain(['upload.py', '-y', '--server=https://my_server',
471 '--reviewers=georges@example.com', 473 '--reviewers=georges@example.com',
472 '--issue=1', '--title= '], 474 '--issue=1', '--title= '],
473 change_info.patch).AndReturn(("1", "2")) 475 change_info.patch).AndReturn(("1", "2"))
474 change_info.Save() 476 change_info.Save()
475 change_info.PrimeLint() 477 change_info.PrimeLint()
(...skipping 17 matching lines...) Expand all
493 output.reviewers = ['foo@example.com', 'bar@example.com'] 495 output.reviewers = ['foo@example.com', 'bar@example.com']
494 gcl.DoPresubmitChecks(change_info, False, True).AndReturn(output) 496 gcl.DoPresubmitChecks(change_info, False, True).AndReturn(output)
495 #gcl.GetCodeReviewSetting('CODE_REVIEW_SERVER').AndReturn('my_server') 497 #gcl.GetCodeReviewSetting('CODE_REVIEW_SERVER').AndReturn('my_server')
496 gcl.os.getcwd().AndReturn('somewhere') 498 gcl.os.getcwd().AndReturn('somewhere')
497 gcl.os.chdir('proout') 499 gcl.os.chdir('proout')
498 gcl.GenerateDiff(change_info.GetFileNames()) 500 gcl.GenerateDiff(change_info.GetFileNames())
499 gcl.upload.RealMain(['upload.py', '-y', '--server=https://my_server', 501 gcl.upload.RealMain(['upload.py', '-y', '--server=https://my_server',
500 '--reviewers=foo@example.com,bar@example.com', 502 '--reviewers=foo@example.com,bar@example.com',
501 '--issue=1', '--title= '], 503 '--issue=1', '--title= '],
502 change_info.patch).AndReturn(("1", "2")) 504 change_info.patch).AndReturn(("1", "2"))
505 change_info.get_reviewers().AndReturn(['foo@example.com,bar@example.com'])
503 change_info.Save() 506 change_info.Save()
504 change_info.PrimeLint() 507 change_info.PrimeLint()
505 gcl.os.chdir('somewhere') 508 gcl.os.chdir('somewhere')
506 gcl.sys.stdout.write("*** Upload does not submit a try; use gcl try to" 509 gcl.sys.stdout.write("*** Upload does not submit a try; use gcl try to"
507 " submit a try. ***") 510 " submit a try. ***")
508 gcl.sys.stdout.write("\n") 511 gcl.sys.stdout.write("\n")
509 gcl.GetRepositoryRoot().AndReturn(self.fake_root_dir) 512 gcl.GetRepositoryRoot().AndReturn(self.fake_root_dir)
510 gcl.ChangeInfo.Load('naame', self.fake_root_dir, True, True 513 gcl.ChangeInfo.Load('naame', self.fake_root_dir, True, True
511 ).AndReturn(change_info) 514 ).AndReturn(change_info)
512 self.mox.ReplayAll() 515 self.mox.ReplayAll()
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 self.mox.ReplayAll() 568 self.mox.ReplayAll()
566 569
567 retval = gcl.CMDcommit(['naame']) 570 retval = gcl.CMDcommit(['naame'])
568 571
569 self.assertEquals(retval, 1) 572 self.assertEquals(retval, 1)
570 573
571 def testPresubmitSucceeds(self): 574 def testPresubmitSucceeds(self):
572 change_info = self.mockLoad() 575 change_info = self.mockLoad()
573 self.mockPresubmit(change_info, fail=False) 576 self.mockPresubmit(change_info, fail=False)
574 self.mockCommit( 577 self.mockCommit(
575 change_info, 'deescription\nReview URL: https://my_server/1', '') 578 change_info, 'deescription\n\nReview URL: https://my_server/1', '')
579 change_info.UpdateDescriptionFromIssue()
576 self.mox.ReplayAll() 580 self.mox.ReplayAll()
577 581
578 retval = gcl.CMDcommit(['naame']) 582 retval = gcl.CMDcommit(['naame'])
579 583
580 self.assertEquals(retval, 0) 584 self.assertEquals(retval, 0)
581 self.assertEquals(change_info.description, 'deescription') 585 self.assertEquals(change_info.description, 'deescription')
582 # pylint: disable=W0212 586 # pylint: disable=W0212
583 self.assertFalse(change_info._deleted) 587 self.assertFalse(change_info._deleted)
584 self.assertFalse(change_info._closed) 588 self.assertFalse(change_info._closed)
585 589
586 def testPresubmitSucceedsWithCommittedMessage(self): 590 def testPresubmitSucceedsWithCommittedMessage(self):
587 change_info = self.mockLoad() 591 change_info = self.mockLoad()
588 self.mockPresubmit(change_info, fail=False) 592 self.mockPresubmit(change_info, fail=False)
589 self.mockCommit( 593 self.mockCommit(
590 change_info, 'deescription\nReview URL: https://my_server/1', 594 change_info,
595 'deescription\n\nReview URL: https://my_server/1',
591 '\nCommitted revision 12345') 596 '\nCommitted revision 12345')
592 597 change_info.UpdateDescriptionFromIssue()
598 change_info.append_footer('Committed: http://view/12345')
593 self.mox.ReplayAll() 599 self.mox.ReplayAll()
594 600
595 retval = gcl.CMDcommit(['naame']) 601 retval = gcl.CMDcommit(['naame'])
596 self.assertEquals(retval, 0) 602 self.assertEquals(retval, 0)
597 self.assertEquals(change_info.description, 603 # This is because append_footer is mocked.
598 'deescription\n\nCommitted: http://view/12345') 604 self.assertEquals(change_info.description, 'deescription')
599 # pylint: disable=W0212 605 # pylint: disable=W0212
600 self.assertTrue(change_info._deleted) 606 self.assertTrue(change_info._deleted)
601 self.assertTrue(change_info._closed) 607 self.assertTrue(change_info._closed)
602 self.assertEqual( 608 self.assertEqual(
603 change_info._comments_added, 609 change_info._comments_added,
604 ["Committed patchset #1 manually as r12345 (presubmit successful)."]) 610 ["Committed patchset #1 manually as r12345 (presubmit successful)."])
605 611
606 612
607 if __name__ == '__main__': 613 if __name__ == '__main__':
608 import unittest 614 import unittest
609 unittest.main() 615 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