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

Side by Side Diff: tests/presubmit_unittest.py

Issue 119365: Add InputApi.AffectedSourceFile() and custom filtering support. (Closed)
Patch Set: comment Created 11 years, 6 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 | « presubmit_support.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) 2006-2009 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2006-2009 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 presubmit_support.py and presubmit_canned_checks.py.""" 6 """Unit tests for presubmit_support.py and presubmit_canned_checks.py."""
7 7
8 import exceptions 8 import exceptions
9 import random 9 import random
10 import string 10 import string
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 elif not input_api.change.REALLYABSOLUTELYNOSUCHKEY: 53 elif not input_api.change.REALLYABSOLUTELYNOSUCHKEY:
54 return [output_api.PresubmitPromptWarning("??"), 54 return [output_api.PresubmitPromptWarning("??"),
55 output_api.PresubmitError("XX!!XX")] 55 output_api.PresubmitError("XX!!XX")]
56 else: 56 else:
57 return () 57 return ()
58 """ 58 """
59 59
60 def setUp(self): 60 def setUp(self):
61 mox.MoxTestBase.setUp(self) 61 mox.MoxTestBase.setUp(self)
62 self.mox.StubOutWithMock(presubmit, 'warnings') 62 self.mox.StubOutWithMock(presubmit, 'warnings')
63 # Stub out 'os' but keep os.path.dirname/join/normpath and os.sep. 63 # Stub out 'os' but keep os.path.dirname/join/normpath/splitext and os.sep.
64 os_sep = presubmit.os.sep 64 os_sep = presubmit.os.sep
65 os_path_join = presubmit.os.path.join 65 os_path_join = presubmit.os.path.join
66 os_path_dirname = presubmit.os.path.dirname 66 os_path_dirname = presubmit.os.path.dirname
67 os_path_normpath = presubmit.os.path.normpath 67 os_path_normpath = presubmit.os.path.normpath
68 os_path_splitext = presubmit.os.path.splitext
68 self.mox.StubOutWithMock(presubmit, 'os') 69 self.mox.StubOutWithMock(presubmit, 'os')
69 self.mox.StubOutWithMock(presubmit.os, 'path') 70 self.mox.StubOutWithMock(presubmit.os, 'path')
70 presubmit.os.sep = os_sep 71 presubmit.os.sep = os_sep
71 presubmit.os.path.join = os_path_join 72 presubmit.os.path.join = os_path_join
72 presubmit.os.path.dirname = os_path_dirname 73 presubmit.os.path.dirname = os_path_dirname
73 presubmit.os.path.normpath = os_path_normpath 74 presubmit.os.path.normpath = os_path_normpath
75 presubmit.os.path.splitext = os_path_splitext
74 self.mox.StubOutWithMock(presubmit, 'sys') 76 self.mox.StubOutWithMock(presubmit, 'sys')
75 # Special mocks. 77 # Special mocks.
76 def MockAbsPath(f): 78 def MockAbsPath(f):
77 return f 79 return f
78 presubmit.os.path.abspath = MockAbsPath 80 presubmit.os.path.abspath = MockAbsPath
79 self.mox.StubOutWithMock(presubmit.gcl, 'GetRepositoryRoot') 81 self.mox.StubOutWithMock(presubmit.gcl, 'GetRepositoryRoot')
80 fake_root_dir = RootDir() 82 fake_root_dir = RootDir()
81 self.fake_root_dir = fake_root_dir 83 self.fake_root_dir = fake_root_dir
82 def MockGetRepositoryRoot(): 84 def MockGetRepositoryRoot():
83 return fake_root_dir 85 return fake_root_dir
(...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 'Running default presubmit script.\n\n' 518 'Running default presubmit script.\n\n'
517 '** Presubmit Messages **\n\n' 519 '** Presubmit Messages **\n\n'
518 'http://tracker.com/42\n\n')) 520 'http://tracker.com/42\n\n'))
519 521
520 522
521 class InputApiUnittest(PresubmitTestsBase): 523 class InputApiUnittest(PresubmitTestsBase):
522 """Tests presubmit.InputApi.""" 524 """Tests presubmit.InputApi."""
523 def testMembersChanged(self): 525 def testMembersChanged(self):
524 self.mox.ReplayAll() 526 self.mox.ReplayAll()
525 members = [ 527 members = [
526 'AbsoluteLocalPaths', 'AffectedFiles', 'AffectedTextFiles', 528 'AbsoluteLocalPaths', 'AffectedFiles', 'AffectedSourceFiles',
527 'DepotToLocalPath', 'LocalPaths', 'LocalToDepotPath', 529 'AffectedTextFiles',
528 'PresubmitLocalPath', 'RightHandSideLines', 'ReadFile', 'ServerPaths', 530 'DEFAULT_BLACK_LIST', 'DEFAULT_WHITE_LIST',
531 'DepotToLocalPath', 'FilterSourceFile', 'LocalPaths',
532 'LocalToDepotPath',
533 'PresubmitLocalPath', 'ReadFile', 'RightHandSideLines', 'ServerPaths',
529 'basename', 'cPickle', 'cStringIO', 'canned_checks', 'change', 534 'basename', 'cPickle', 'cStringIO', 'canned_checks', 'change',
530 'is_committing', 'marshal', 'os_path', 'pickle', 'platform', 535 'is_committing', 'marshal', 'os_path', 'pickle', 'platform',
531 're', 'subprocess', 'tempfile', 'traceback', 'unittest', 'urllib2', 536 're', 'subprocess', 'tempfile', 'traceback', 'unittest', 'urllib2',
532 'version', 537 'version',
533 ] 538 ]
534 # If this test fails, you should add the relevant test. 539 # If this test fails, you should add the relevant test.
535 self.compareMembers(presubmit.InputApi(None, './.', False), members) 540 self.compareMembers(presubmit.InputApi(None, './.', False), members)
536 541
537 def testDepotToLocalPath(self): 542 def testDepotToLocalPath(self):
538 presubmit.gclient.CaptureSVNInfo('svn://foo/smurf').AndReturn( 543 presubmit.gclient.CaptureSVNInfo('svn://foo/smurf').AndReturn(
(...skipping 27 matching lines...) Expand all
566 self.assertEquals(api.PresubmitLocalPath(), 'foo/path') 571 self.assertEquals(api.PresubmitLocalPath(), 'foo/path')
567 self.assertEquals(api.change, 42) 572 self.assertEquals(api.change, 42)
568 573
569 def testInputApiPresubmitScriptFiltering(self): 574 def testInputApiPresubmitScriptFiltering(self):
570 join = presubmit.os.path.join 575 join = presubmit.os.path.join
571 description_lines = ('Hello there', 576 description_lines = ('Hello there',
572 'this is a change', 577 'this is a change',
573 'BUG=123', 578 'BUG=123',
574 ' STORY =http://foo/ \t', 579 ' STORY =http://foo/ \t',
575 'and some more regular text') 580 'and some more regular text')
581 blat = join('foo', 'blat.cc')
582 readme = join('foo', 'blat', 'READ_ME2')
583 binary = join('foo', 'blat', 'binary.dll')
584 weird = join('foo', 'blat', 'weird.xyz')
585 third_party = join('foo', 'third_party', 'third.cc')
586 another = join('foo', 'blat', 'another.h')
587 beingdeleted = join('foo', 'mat', 'beingdeleted.txt')
588 notfound = join('flop', 'notfound.txt')
589 flap = join('boo', 'flap.h')
576 files = [ 590 files = [
577 ['A', join('foo', 'blat.cc')], 591 ['A', blat],
578 ['M', join('foo', 'blat', 'binary.dll')], 592 ['M', readme],
593 ['M', binary],
594 ['M', weird],
595 ['M', another],
596 ['M', third_party],
579 ['D', 'foo/mat/beingdeleted.txt'], 597 ['D', 'foo/mat/beingdeleted.txt'],
580 ['M', 'flop/notfound.txt'], 598 ['M', 'flop/notfound.txt'],
581 ['A', 'boo/flap.h'], 599 ['A', 'boo/flap.h'],
582 ] 600 ]
583 601
584 602 for i in (blat, readme, binary, weird, another, third_party):
585 blat = join('foo', 'blat.cc') 603 presubmit.os.path.exists(i).AndReturn(True)
586 binary = join('foo', 'blat', 'binary.dll') 604 presubmit.os.path.isdir(i).AndReturn(False)
587 beingdeleted = join('foo', 'mat', 'beingdeleted.txt')
588 notfound = join('flop', 'notfound.txt')
589 flap = join('boo', 'flap.h')
590 presubmit.os.path.exists(blat).AndReturn(True)
591 presubmit.os.path.isdir(blat).AndReturn(False)
592 presubmit.os.path.exists(binary).AndReturn(True)
593 presubmit.os.path.isdir(binary).AndReturn(False)
594 presubmit.os.path.exists(beingdeleted).AndReturn(False) 605 presubmit.os.path.exists(beingdeleted).AndReturn(False)
595 presubmit.os.path.exists(notfound).AndReturn(False) 606 presubmit.os.path.exists(notfound).AndReturn(False)
596 presubmit.os.path.exists(flap).AndReturn(True) 607 presubmit.os.path.exists(flap).AndReturn(True)
597 presubmit.os.path.isdir(flap).AndReturn(False) 608 presubmit.os.path.isdir(flap).AndReturn(False)
598 presubmit.gclient.CaptureSVNInfo(beingdeleted).AndReturn({}) 609 presubmit.gclient.CaptureSVNInfo(beingdeleted).AndReturn({})
599 presubmit.gclient.CaptureSVNInfo(notfound).AndReturn({}) 610 presubmit.gclient.CaptureSVNInfo(notfound).AndReturn({})
600 presubmit.gcl.GetSVNFileProperty(blat, 'svn:mime-type').AndReturn(None) 611 presubmit.gcl.GetSVNFileProperty(blat, 'svn:mime-type').AndReturn(None)
612 presubmit.gcl.GetSVNFileProperty(readme, 'svn:mime-type').AndReturn(None)
601 presubmit.gcl.GetSVNFileProperty(binary, 'svn:mime-type').AndReturn( 613 presubmit.gcl.GetSVNFileProperty(binary, 'svn:mime-type').AndReturn(
602 'application/octet-stream') 614 'application/octet-stream')
615 presubmit.gcl.GetSVNFileProperty(weird, 'svn:mime-type').AndReturn(None)
616 presubmit.gcl.GetSVNFileProperty(another, 'svn:mime-type').AndReturn(None)
617 presubmit.gcl.GetSVNFileProperty(third_party, 'svn:mime-type'
618 ).AndReturn(None)
603 presubmit.gcl.ReadFile(blat).AndReturn('whatever\ncookie') 619 presubmit.gcl.ReadFile(blat).AndReturn('whatever\ncookie')
620 presubmit.gcl.ReadFile(another).AndReturn('whatever\ncookie2')
604 self.mox.ReplayAll() 621 self.mox.ReplayAll()
605 622
606 ci = presubmit.gcl.ChangeInfo(name='mychange', issue=0, patchset=0, 623 ci = presubmit.gcl.ChangeInfo(name='mychange', issue=0, patchset=0,
607 description='\n'.join(description_lines), 624 description='\n'.join(description_lines),
608 files=files) 625 files=files)
609 change = presubmit.GclChange(ci) 626 change = presubmit.GclChange(ci)
610 api = presubmit.InputApi(change, 'foo/PRESUBMIT.py', False) 627 input_api = presubmit.InputApi(change, 'foo/PRESUBMIT.py', False)
611 affected_files = api.AffectedFiles() 628 # Doesn't filter much
612 self.assertEquals(len(affected_files), 3) 629 got_files = input_api.AffectedFiles()
613 self.assertEquals(affected_files[0].LocalPath(), 630 self.assertEquals(len(got_files), 7)
614 presubmit.normpath('foo/blat.cc')) 631 self.assertEquals(got_files[0].LocalPath(), presubmit.normpath(blat))
615 self.assertEquals(affected_files[1].LocalPath(), 632 self.assertEquals(got_files[1].LocalPath(), presubmit.normpath(readme))
616 presubmit.normpath('foo/blat/binary.dll')) 633 self.assertEquals(got_files[2].LocalPath(), presubmit.normpath(binary))
617 self.assertEquals(affected_files[2].LocalPath(), 634 self.assertEquals(got_files[3].LocalPath(), presubmit.normpath(weird))
618 presubmit.normpath('foo/mat/beingdeleted.txt')) 635 self.assertEquals(got_files[4].LocalPath(), presubmit.normpath(another))
619 rhs_lines = [] 636 self.assertEquals(got_files[5].LocalPath(), presubmit.normpath(third_party))
620 for line in api.RightHandSideLines(): 637 self.assertEquals(got_files[6].LocalPath(),
621 rhs_lines.append(line) 638 presubmit.normpath(beingdeleted))
622 self.assertEquals(len(rhs_lines), 2) 639 # Ignores weird because of whitelist, third_party because of blacklist,
623 self.assertEqual(rhs_lines[0][0].LocalPath(), 640 # binary isn't a text file and beingdeleted doesn't exist. The rest is
624 presubmit.normpath('foo/blat.cc')) 641 # outside foo/.
642 rhs_lines = [x for x in input_api.RightHandSideLines(None)]
643 self.assertEquals(len(rhs_lines), 4)
644 self.assertEqual(rhs_lines[0][0].LocalPath(), presubmit.normpath(blat))
645 self.assertEqual(rhs_lines[1][0].LocalPath(), presubmit.normpath(blat))
646 self.assertEqual(rhs_lines[2][0].LocalPath(), presubmit.normpath(another))
647 self.assertEqual(rhs_lines[3][0].LocalPath(), presubmit.normpath(another))
648
649 def testCustomFilter(self):
650 def FilterSourceFile(affected_file):
651 return 'a' in affected_file.LocalPath()
652 files = [('A', 'eeaee'), ('M', 'eeabee'), ('M', 'eebcee')]
653 for (action, item) in files:
654 presubmit.os.path.exists(item).AndReturn(True)
655 presubmit.os.path.isdir(item).AndReturn(False)
656 presubmit.gcl.GetSVNFileProperty(item, 'svn:mime-type').AndReturn(None)
657 self.mox.ReplayAll()
658
659 ci = presubmit.gcl.ChangeInfo('mychange', 0, 0, '', files)
660 change = presubmit.GclChange(ci)
661 input_api = presubmit.InputApi(change, './PRESUBMIT.py', False)
662 got_files = input_api.AffectedSourceFiles(FilterSourceFile)
663 self.assertEquals(len(got_files), 2)
664 self.assertEquals(got_files[0].LocalPath(), 'eeaee')
665 self.assertEquals(got_files[1].LocalPath(), 'eeabee')
666
667 def testLambdaFilter(self):
668 white_list = [r".*?a.*?"]
669 black_list = [r".*?b.*?"]
670 files = [('A', 'eeaee'), ('M', 'eeabee'), ('M', 'eebcee'), ('M', 'eecaee')]
671 for (action, item) in files:
672 presubmit.os.path.exists(item).AndReturn(True)
673 presubmit.os.path.isdir(item).AndReturn(False)
674 presubmit.gcl.GetSVNFileProperty(item, 'svn:mime-type').AndReturn(None)
675 self.mox.ReplayAll()
676
677 ci = presubmit.gcl.ChangeInfo('mychange', 0, 0, '', files)
678 change = presubmit.GclChange(ci)
679 input_api = presubmit.InputApi(change, './PRESUBMIT.py', False)
680 # Sample usage of overiding the default white and black lists.
681 got_files = input_api.AffectedSourceFiles(
682 lambda x: input_api.FilterSourceFile(x, white_list, black_list))
683 self.assertEquals(len(got_files), 2)
684 self.assertEquals(got_files[0].LocalPath(), 'eeaee')
685 self.assertEquals(got_files[1].LocalPath(), 'eecaee')
625 686
626 def testGetAbsoluteLocalPath(self): 687 def testGetAbsoluteLocalPath(self):
627 join = presubmit.os.path.join 688 join = presubmit.os.path.join
628 normpath = presubmit.normpath 689 normpath = presubmit.normpath
629 # Regression test for bug of presubmit stuff that relies on invoking 690 # Regression test for bug of presubmit stuff that relies on invoking
630 # SVN (e.g. to get mime type of file) not working unless gcl invoked 691 # SVN (e.g. to get mime type of file) not working unless gcl invoked
631 # from the client root (e.g. if you were at 'src' and did 'cd base' before 692 # from the client root (e.g. if you were at 'src' and did 'cd base' before
632 # invoking 'gcl upload' it would fail because svn wouldn't find the files 693 # invoking 'gcl upload' it would fail because svn wouldn't find the files
633 # the presubmit script was asking about). 694 # the presubmit script was asking about).
634 files = [ 695 files = [
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
898 def TestContent(self, check, content1, content2, error_type): 959 def TestContent(self, check, content1, content2, error_type):
899 input_api1 = self.MockInputApi() 960 input_api1 = self.MockInputApi()
900 input_api1.change = self.MakeBasicChange('foo', 'Foo\n') 961 input_api1.change = self.MakeBasicChange('foo', 'Foo\n')
901 affected_file = self.mox.CreateMock(presubmit.SvnAffectedFile) 962 affected_file = self.mox.CreateMock(presubmit.SvnAffectedFile)
902 affected_file.LocalPath().AndReturn('foo.cc') 963 affected_file.LocalPath().AndReturn('foo.cc')
903 output1 = [ 964 output1 = [
904 (affected_file, 42, 'yo, ' + content1), 965 (affected_file, 42, 'yo, ' + content1),
905 (affected_file, 43, 'yer'), 966 (affected_file, 43, 'yer'),
906 (affected_file, 23, 'ya'), 967 (affected_file, 23, 'ya'),
907 ] 968 ]
908 input_api1.RightHandSideLines().AndReturn(output1) 969 input_api1.RightHandSideLines(mox.IgnoreArg()).AndReturn(output1)
909 input_api2 = self.MockInputApi() 970 input_api2 = self.MockInputApi()
910 input_api2.change = self.MakeBasicChange('foo', 'Foo\n') 971 input_api2.change = self.MakeBasicChange('foo', 'Foo\n')
911 output2 = [ 972 output2 = [
912 (affected_file, 42, 'yo, ' + content2), 973 (affected_file, 42, 'yo, ' + content2),
913 (affected_file, 43, 'yer'), 974 (affected_file, 43, 'yer'),
914 (affected_file, 23, 'ya'), 975 (affected_file, 23, 'ya'),
915 ] 976 ]
916 input_api2.RightHandSideLines().AndReturn(output2) 977 input_api2.RightHandSideLines(mox.IgnoreArg()).AndReturn(output2)
917 self.mox.ReplayAll() 978 self.mox.ReplayAll()
918 979
919 results1 = check(input_api1, presubmit.OutputApi) 980 results1 = check(input_api1, presubmit.OutputApi, None)
920 self.assertEquals(results1, []) 981 self.assertEquals(results1, [])
921 results2 = check(input_api2, presubmit.OutputApi) 982 results2 = check(input_api2, presubmit.OutputApi, None)
922 self.assertEquals(len(results2), 1) 983 self.assertEquals(len(results2), 1)
923 self.assertEquals(results2[0].__class__, error_type) 984 self.assertEquals(results2[0].__class__, error_type)
924 985
925 def testCannedCheckChangeHasBugField(self): 986 def testCannedCheckChangeHasBugField(self):
926 self.TestDescription(presubmit_canned_checks.CheckChangeHasBugField, 987 self.TestDescription(presubmit_canned_checks.CheckChangeHasBugField,
927 'BUG=1234', '', 988 'BUG=1234', '',
928 presubmit.OutputApi.PresubmitNotifyResult) 989 presubmit.OutputApi.PresubmitNotifyResult)
929 990
930 def testCannedCheckChangeHasTestField(self): 991 def testCannedCheckChangeHasTestField(self):
931 self.TestDescription(presubmit_canned_checks.CheckChangeHasTestField, 992 self.TestDescription(presubmit_canned_checks.CheckChangeHasTestField,
932 'TEST=did some stuff', '', 993 'TEST=did some stuff', '',
933 presubmit.OutputApi.PresubmitNotifyResult) 994 presubmit.OutputApi.PresubmitNotifyResult)
934 995
935 def testCannedCheckChangeHasTestedField(self): 996 def testCannedCheckChangeHasTestedField(self):
936 self.TestDescription(presubmit_canned_checks.CheckChangeHasTestedField, 997 self.TestDescription(presubmit_canned_checks.CheckChangeHasTestedField,
937 'TESTED=did some stuff', '', 998 'TESTED=did some stuff', '',
938 presubmit.OutputApi.PresubmitError) 999 presubmit.OutputApi.PresubmitError)
939 1000
940 def testCannedCheckChangeHasQAField(self): 1001 def testCannedCheckChangeHasQAField(self):
941 self.TestDescription(presubmit_canned_checks.CheckChangeHasQaField, 1002 self.TestDescription(presubmit_canned_checks.CheckChangeHasQaField,
942 'QA=BSOD your machine', '', 1003 'QA=BSOD your machine', '',
943 presubmit.OutputApi.PresubmitError) 1004 presubmit.OutputApi.PresubmitError)
944 1005
945 def testCannedCheckDoNotSubmitInDescription(self): 1006 def testCannedCheckDoNotSubmitInDescription(self):
946 self.TestDescription(presubmit_canned_checks.CheckDoNotSubmitInDescription, 1007 self.TestDescription(presubmit_canned_checks.CheckDoNotSubmitInDescription,
947 'DO NOTSUBMIT', 'DO NOT ' + 'SUBMIT', 1008 'DO NOTSUBMIT', 'DO NOT ' + 'SUBMIT',
948 presubmit.OutputApi.PresubmitError) 1009 presubmit.OutputApi.PresubmitError)
949 1010
950 def testCannedCheckDoNotSubmitInFiles(self): 1011 def testCannedCheckDoNotSubmitInFiles(self):
951 self.TestContent(presubmit_canned_checks.CheckDoNotSubmitInFiles, 1012 self.TestContent(
952 'DO NOTSUBMIT', 'DO NOT ' + 'SUBMIT', 1013 lambda x,y,z: presubmit_canned_checks.CheckDoNotSubmitInFiles(x, y),
953 presubmit.OutputApi.PresubmitError) 1014 'DO NOTSUBMIT', 'DO NOT ' + 'SUBMIT',
1015 presubmit.OutputApi.PresubmitError)
954 1016
955 def testCheckChangeHasNoCR(self): 1017 def testCheckChangeHasNoCR(self):
956 input_api1 = self.MockInputApi() 1018 input_api1 = self.MockInputApi()
957 self.mox.StubOutWithMock(input_api1, 'ReadFile') 1019 self.mox.StubOutWithMock(input_api1, 'ReadFile')
958 input_api1.change = self.MakeBasicChange('foo', 'Foo\n') 1020 input_api1.change = self.MakeBasicChange('foo', 'Foo\n')
959 affected_file1 = self.mox.CreateMock(presubmit.SvnAffectedFile) 1021 affected_file1 = self.mox.CreateMock(presubmit.SvnAffectedFile)
960 input_api1.AffectedTextFiles().AndReturn([affected_file1]) 1022 input_api1.AffectedSourceFiles(None).AndReturn([affected_file1])
961 input_api1.ReadFile(affected_file1, 'rb').AndReturn("Hey!\nHo!\n") 1023 input_api1.ReadFile(affected_file1, 'rb').AndReturn("Hey!\nHo!\n")
962 input_api2 = self.MockInputApi() 1024 input_api2 = self.MockInputApi()
963 self.mox.StubOutWithMock(input_api2, 'ReadFile') 1025 self.mox.StubOutWithMock(input_api2, 'ReadFile')
964 input_api2.change = self.MakeBasicChange('foo', 'Foo\n') 1026 input_api2.change = self.MakeBasicChange('foo', 'Foo\n')
965 affected_file2 = self.mox.CreateMock(presubmit.SvnAffectedFile) 1027 affected_file2 = self.mox.CreateMock(presubmit.SvnAffectedFile)
966 input_api2.AffectedTextFiles().AndReturn([affected_file2]) 1028 input_api2.AffectedSourceFiles(None).AndReturn([affected_file2])
967 input_api2.ReadFile(affected_file2, 'rb').AndReturn("Hey!\r\nHo!\r\n") 1029 input_api2.ReadFile(affected_file2, 'rb').AndReturn("Hey!\r\nHo!\r\n")
968 affected_file2.LocalPath().AndReturn('bar.cc') 1030 affected_file2.LocalPath().AndReturn('bar.cc')
969 self.mox.ReplayAll() 1031 self.mox.ReplayAll()
970 1032
971 results = presubmit_canned_checks.CheckChangeHasNoCR( 1033 results = presubmit_canned_checks.CheckChangeHasNoCR(
972 input_api1, presubmit.OutputApi) 1034 input_api1, presubmit.OutputApi, None)
973 self.assertEquals(results, []) 1035 self.assertEquals(results, [])
974 results2 = presubmit_canned_checks.CheckChangeHasNoCR( 1036 results2 = presubmit_canned_checks.CheckChangeHasNoCR(
975 input_api2, presubmit.OutputApi) 1037 input_api2, presubmit.OutputApi, None)
976 self.assertEquals(len(results2), 1) 1038 self.assertEquals(len(results2), 1)
977 self.assertEquals(results2[0].__class__, 1039 self.assertEquals(results2[0].__class__,
978 presubmit.OutputApi.PresubmitPromptWarning) 1040 presubmit.OutputApi.PresubmitPromptWarning)
979 1041
980 def testCannedCheckChangeHasNoTabs(self): 1042 def testCannedCheckChangeHasNoTabs(self):
981 self.TestContent(presubmit_canned_checks.CheckChangeHasNoTabs, 1043 self.TestContent(presubmit_canned_checks.CheckChangeHasNoTabs,
982 'blah blah', 'blah\tblah', 1044 'blah blah', 'blah\tblah',
983 presubmit.OutputApi.PresubmitPromptWarning) 1045 presubmit.OutputApi.PresubmitPromptWarning)
984 1046
985 def testCannedCheckLongLines(self): 1047 def testCannedCheckLongLines(self):
986 check = lambda x,y: presubmit_canned_checks.CheckLongLines(x, y, 10) 1048 check = lambda x,y,z: presubmit_canned_checks.CheckLongLines(x, y, 10, z)
987 self.TestContent(check, '', 'blah blah blah', 1049 self.TestContent(check, '', 'blah blah blah',
988 presubmit.OutputApi.PresubmitPromptWarning) 1050 presubmit.OutputApi.PresubmitPromptWarning)
989 1051
990 def testCannedCheckTreeIsOpenOpen(self): 1052 def testCannedCheckTreeIsOpenOpen(self):
991 input_api = self.MockInputApi() 1053 input_api = self.MockInputApi()
992 input_api.is_committing = True 1054 input_api.is_committing = True
993 connection = self.mox.CreateMockAnything() 1055 connection = self.mox.CreateMockAnything()
994 input_api.urllib2.urlopen('url_to_open').AndReturn(connection) 1056 input_api.urllib2.urlopen('url_to_open').AndReturn(connection)
995 connection.read().AndReturn('1') 1057 connection.read().AndReturn('1')
996 connection.close() 1058 connection.close()
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
1135 test_result.errors = 0 1197 test_result.errors = 0
1136 self.mox.ReplayAll() 1198 self.mox.ReplayAll()
1137 1199
1138 results = presubmit_canned_checks.RunPythonUnitTests( 1200 results = presubmit_canned_checks.RunPythonUnitTests(
1139 input_api, presubmit.OutputApi, ['test_module']) 1201 input_api, presubmit.OutputApi, ['test_module'])
1140 self.assertEquals(len(results), 0) 1202 self.assertEquals(len(results), 0)
1141 1203
1142 1204
1143 if __name__ == '__main__': 1205 if __name__ == '__main__':
1144 unittest.main() 1206 unittest.main()
OLDNEW
« no previous file with comments | « presubmit_support.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698