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

Side by Side Diff: tests/gcl_unittest.py

Issue 6688017: Apparently when I changed OptionallyDoPresubmitChecks() to return the (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools/
Patch Set: Created 9 years, 9 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 | Annotate | Revision Log
« 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 # pylint is too confused. 8 # pylint is too confused.
9 # pylint: disable=E1101,E1103,E1120,W0212,W0403 9 # pylint: disable=E1101,E1103,E1120,W0212,W0403
10 10
(...skipping 16 matching lines...) Expand all
27 self.mox.StubOutWithMock(gcl.upload, 'RealMain') 27 self.mox.StubOutWithMock(gcl.upload, 'RealMain')
28 self.mox.StubOutWithMock(gcl.gclient_utils, 'FileRead') 28 self.mox.StubOutWithMock(gcl.gclient_utils, 'FileRead')
29 self.mox.StubOutWithMock(gcl.gclient_utils, 'FileWrite') 29 self.mox.StubOutWithMock(gcl.gclient_utils, 'FileWrite')
30 gcl.REPOSITORY_ROOT = None 30 gcl.REPOSITORY_ROOT = None
31 self.old_review_settings = gcl.CODEREVIEW_SETTINGS 31 self.old_review_settings = gcl.CODEREVIEW_SETTINGS
32 self.assertEquals(gcl.CODEREVIEW_SETTINGS, {}) 32 self.assertEquals(gcl.CODEREVIEW_SETTINGS, {})
33 33
34 def tearDown(self): 34 def tearDown(self):
35 gcl.CODEREVIEW_SETTINGS = self.old_review_settings 35 gcl.CODEREVIEW_SETTINGS = self.old_review_settings
36 36
37 def fakeChange(self, files=None):
38 if files == None:
39 files = [('A', 'aa'), ('M', 'bb')]
40
41 change_info = self.mox.CreateMock(gcl.ChangeInfo)
42 change_info.name = 'naame'
43 change_info.issue = 1
44 change_info.patchset = 0
45 change_info.description = 'deescription'
46 change_info.files = files
47 change_info.GetFiles = lambda : change_info.files
48 change_info.GetIssueDescription = lambda : change_info.description
49 change_info.GetFileNames = lambda : [f[1] for f in change_info.files]
50 change_info.GetLocalRoot = lambda : 'proout'
51 change_info.patch = None
52 change_info.rietveld = 'my_server'
53 change_info.reviewers = None
54 change_info._closed = False
55 change_info._deleted = False
56
57 def Delete():
58 change_info._deleted = True
59 change_info.Delete = Delete
60
61 def CloseIssue():
62 change_info._closed = True
63 change_info.CloseIssue = CloseIssue
64
65 return change_info
66
37 67
38 class GclUnittest(GclTestsBase): 68 class GclUnittest(GclTestsBase):
39 """General gcl.py tests.""" 69 """General gcl.py tests."""
40 def tearDown(self): 70 def tearDown(self):
41 gcl.CODEREVIEW_SETTINGS = {} 71 gcl.CODEREVIEW_SETTINGS = {}
42 72
43 def testMembersChanged(self): 73 def testMembersChanged(self):
44 self.mox.ReplayAll() 74 self.mox.ReplayAll()
45 members = [ 75 members = [
46 'CODEREVIEW_SETTINGS', 'CODEREVIEW_SETTINGS_FILE', 76 'CODEREVIEW_SETTINGS', 'CODEREVIEW_SETTINGS_FILE',
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 gcl.ChangeInfo.Load('naame', self.fake_root_dir, True, True 443 gcl.ChangeInfo.Load('naame', self.fake_root_dir, True, True
414 ).AndReturn(change_info) 444 ).AndReturn(change_info)
415 self.mox.ReplayAll() 445 self.mox.ReplayAll()
416 446
417 gcl.CMDupload(['naame']) 447 gcl.CMDupload(['naame'])
418 self.checkstdout('*** Upload does not submit a try; use gcl try to submit ' 448 self.checkstdout('*** Upload does not submit a try; use gcl try to submit '
419 'a try. ***\n' 449 'a try. ***\n'
420 '*** Upload does not submit a try; use gcl try to submit a try. ***\n') 450 '*** Upload does not submit a try; use gcl try to submit a try. ***\n')
421 451
422 def testSuggestReviewers(self): 452 def testSuggestReviewers(self):
423 change_info = self.mox.CreateMock(gcl.ChangeInfo) 453 change_info = self.fakeChange()
424 change_info.name = 'naame'
425 change_info.issue = 1
426 change_info.patchset = 0
427 change_info.description = 'deescription',
428 change_info.files = [('A', 'aa'), ('M', 'bb')]
429 change_info.patch = None
430 change_info.rietveld = 'my_server'
431 change_info.reviewers = None
432 files = [item[1] for item in change_info.files]
433 output = presubmit_support.PresubmitOutput() 454 output = presubmit_support.PresubmitOutput()
434 output.reviewers = ['foo@example.com', 'bar@example.com'] 455 output.reviewers = ['foo@example.com', 'bar@example.com']
435 gcl.DoPresubmitChecks(change_info, False, True).AndReturn(output) 456 gcl.DoPresubmitChecks(change_info, False, True).AndReturn(output)
436 #gcl.GetCodeReviewSetting('CODE_REVIEW_SERVER').AndReturn('my_server') 457 #gcl.GetCodeReviewSetting('CODE_REVIEW_SERVER').AndReturn('my_server')
437 gcl.os.getcwd().AndReturn('somewhere') 458 gcl.os.getcwd().AndReturn('somewhere')
438 change_info.GetFiles().AndReturn(change_info.files)
439 change_info.GetLocalRoot().AndReturn('proout')
440 gcl.os.chdir('proout') 459 gcl.os.chdir('proout')
441 change_info.GetFileNames().AndReturn(files) 460 gcl.GenerateDiff(change_info.GetFileNames())
442 gcl.GenerateDiff(files)
443 gcl.upload.RealMain(['upload.py', '-y', '--server=my_server', 461 gcl.upload.RealMain(['upload.py', '-y', '--server=my_server',
444 '--reviewers=foo@example.com,bar@example.com', 462 '--reviewers=foo@example.com,bar@example.com',
445 '--message=\'\'', '--issue=1'], 463 '--message=\'\'', '--issue=1'],
446 change_info.patch).AndReturn(("1", "2")) 464 change_info.patch).AndReturn(("1", "2"))
447 change_info.Save() 465 change_info.Save()
448 change_info.PrimeLint() 466 change_info.PrimeLint()
449 gcl.os.chdir('somewhere') 467 gcl.os.chdir('somewhere')
450 gcl.sys.stdout.write("*** Upload does not submit a try; use gcl try to" 468 gcl.sys.stdout.write("*** Upload does not submit a try; use gcl try to"
451 " submit a try. ***") 469 " submit a try. ***")
452 gcl.sys.stdout.write("\n") 470 gcl.sys.stdout.write("\n")
453 gcl.GetRepositoryRoot().AndReturn(self.fake_root_dir) 471 gcl.GetRepositoryRoot().AndReturn(self.fake_root_dir)
454 gcl.ChangeInfo.Load('naame', self.fake_root_dir, True, True 472 gcl.ChangeInfo.Load('naame', self.fake_root_dir, True, True
455 ).AndReturn(change_info) 473 ).AndReturn(change_info)
456 self.mox.ReplayAll() 474 self.mox.ReplayAll()
457 475
458 gcl.CMDupload(['naame']) 476 gcl.CMDupload(['naame'])
459 self.checkstdout('*** Upload does not submit a try; use gcl try to submit ' 477 self.checkstdout('*** Upload does not submit a try; use gcl try to submit '
460 'a try. ***\n' 478 'a try. ***\n'
461 '*** Upload does not submit a try; use gcl try to submit a try. ***\n') 479 '*** Upload does not submit a try; use gcl try to submit a try. ***\n')
462 480
463 481
482 class CMDCommitUnittest(GclTestsBase):
483 def mockLoad(self, files=None):
484 self.mox.StubOutWithMock(gcl, 'GetRepositoryRoot')
485 self.mox.StubOutWithMock(gcl.ChangeInfo, 'Load')
486 gcl.GetRepositoryRoot().AndReturn(self.fake_root_dir)
487 change_info = self.fakeChange(files)
488 gcl.ChangeInfo.Load('naame', self.fake_root_dir, True, True
489 ).AndReturn(change_info)
490 return change_info
491
492 def mockPresubmit(self, change_info, fail):
493 self.mox.StubOutWithMock(gcl, 'OptionallyDoPresubmitChecks')
494 output = presubmit_support.PresubmitOutput()
495 if fail:
496 output.fail()
497 gcl.OptionallyDoPresubmitChecks(change_info, True, []).AndReturn(output)
498
499 def mockCommit(self, change_info, commit_message, shell_output):
500 gcl.tempfile.mkstemp(text=True).AndReturn((42, 'commit'))
501 gcl.os.write(42, commit_message)
502 gcl.os.close(42)
503 gcl.tempfile.mkstemp(text=True).AndReturn((43, 'files'))
504 gcl.os.write(43, '\n'.join(change_info.GetFileNames()))
505 gcl.os.close(43)
506
507 gcl.os.getcwd().AndReturn('prev')
508 gcl.os.chdir(change_info.GetLocalRoot())
509 gcl.RunShell(['svn', 'commit', '--file=commit', '--targets=files'],
510 True).AndReturn(shell_output)
511 if 'Committed' in shell_output:
512 self.mox.StubOutWithMock(gcl, 'GetCodeReviewSetting')
513 gcl.GetCodeReviewSetting('VIEW_VC').AndReturn('http://view/')
514
515 gcl.os.remove('commit')
516 gcl.os.remove('files')
517 gcl.os.chdir('prev')
518
519 def testPresubmitEmpty(self):
520 self.mockLoad(files=[])
521 self.mox.ReplayAll()
522
523 retval = gcl.CMDcommit(['naame'])
524
525 self.assertEquals(retval, 1)
526
527 def testPresubmitFails(self):
528 change_info = self.mockLoad()
529 self.mockPresubmit(change_info, fail=True)
530 self.mox.ReplayAll()
531
532 retval = gcl.CMDcommit(['naame'])
533
534 self.assertEquals(retval, 1)
535
536 def testPresubmitSucceeds(self):
537 change_info = self.mockLoad()
538 self.mockPresubmit(change_info, fail=False)
539 self.mockCommit(change_info, 'deescription\nReview URL: http://my_server/1',
540 '')
541
542 self.mox.ReplayAll()
543
544 retval = gcl.CMDcommit(['naame'])
545
546 self.assertEquals(retval, 0)
547 self.assertEquals(change_info.description, 'deescription')
548 self.assertFalse(change_info._deleted)
549 self.assertFalse(change_info._closed)
550
551 def testPresubmitSucceedsWithCommittedMessage(self):
552 change_info = self.mockLoad()
553 self.mockPresubmit(change_info, fail=False)
554 self.mockCommit(change_info, 'deescription\nReview URL: http://my_server/1',
555 '\nCommitted revision 12345')
556
557 self.mox.ReplayAll()
558
559 retval = gcl.CMDcommit(['naame'])
560 self.assertEquals(retval, 0)
561 self.assertEquals(change_info.description,
562 'deescription\n\nCommitted: http://view/12345')
563 self.assertTrue(change_info._deleted)
564 self.assertTrue(change_info._closed)
565
566
464 if __name__ == '__main__': 567 if __name__ == '__main__':
465 import unittest 568 import unittest
466 unittest.main() 569 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