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

Side by Side Diff: tests/presubmit_unittest.py

Issue 114082: Improve the presubmit_canned_checks testing by using a real mock and testing for more cases. (Closed)
Patch Set: bump version 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 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 self.mox.StubOutWithMock(presubmit.gcl, 'GetRepositoryRoot') 79 self.mox.StubOutWithMock(presubmit.gcl, 'GetRepositoryRoot')
80 fake_root_dir = RootDir() 80 fake_root_dir = RootDir()
81 self.fake_root_dir = fake_root_dir 81 self.fake_root_dir = fake_root_dir
82 def MockGetRepositoryRoot(): 82 def MockGetRepositoryRoot():
83 return fake_root_dir 83 return fake_root_dir
84 presubmit.gcl.GetRepositoryRoot = MockGetRepositoryRoot 84 presubmit.gcl.GetRepositoryRoot = MockGetRepositoryRoot
85 self.mox.StubOutWithMock(presubmit.gclient, 'CaptureSVNInfo') 85 self.mox.StubOutWithMock(presubmit.gclient, 'CaptureSVNInfo')
86 self.mox.StubOutWithMock(presubmit.gcl, 'GetSVNFileProperty') 86 self.mox.StubOutWithMock(presubmit.gcl, 'GetSVNFileProperty')
87 self.mox.StubOutWithMock(presubmit.gcl, 'ReadFile') 87 self.mox.StubOutWithMock(presubmit.gcl, 'ReadFile')
88 88
89 @staticmethod
90 def MakeBasicChange(name, description):
91 ci = presubmit.gcl.ChangeInfo(name=name, description=description)
92 change = presubmit.GclChange(ci)
93 return change
94
95 def compareMembers(self, object, members): 89 def compareMembers(self, object, members):
96 """If you add a member, be sure to add the relevant test!""" 90 """If you add a member, be sure to add the relevant test!"""
97 # Skip over members starting with '_' since they are usually not meant to 91 # Skip over members starting with '_' since they are usually not meant to
98 # be for public use. 92 # be for public use.
99 actual_members = [x for x in sorted(dir(object)) 93 actual_members = [x for x in sorted(dir(object))
100 if not x.startswith('_')] 94 if not x.startswith('_')]
101 self.assertEqual(actual_members, sorted(members)) 95 self.assertEqual(actual_members, sorted(members))
102 96
103 97
104 class PresubmitUnittest(PresubmitTestsBase): 98 class PresubmitUnittest(PresubmitTestsBase):
105 """General presubmit_support.py tests (excluding InputApi and OutputApi).""" 99 """General presubmit_support.py tests (excluding InputApi and OutputApi)."""
106 def testMembersChanged(self): 100 def testMembersChanged(self):
107 self.mox.ReplayAll() 101 self.mox.ReplayAll()
108 members = [ 102 members = [
109 'AffectedFile', 'DoPresubmitChecks', 'GclChange', 'InputApi', 103 'AffectedFile', 'DoPresubmitChecks', 'GclChange', 'InputApi',
110 'ListRelevantPresubmitFiles', 'Main', 'NotImplementedException', 104 'ListRelevantPresubmitFiles', 'Main', 'NotImplementedException',
111 'OutputApi', 'ParseFiles', 'PresubmitExecuter', 105 'OutputApi', 'ParseFiles', 'PresubmitExecuter',
112 'ScanSubDirs', 'SvnAffectedFile', 106 'ScanSubDirs', 'SvnAffectedFile',
113 'cPickle', 'cStringIO', 'deprecated', 'exceptions', 107 'cPickle', 'cStringIO', 'deprecated', 'exceptions',
114 'fnmatch', 'gcl', 'gclient', 'glob', 'marshal', 'normpath', 'optparse', 108 'fnmatch', 'gcl', 'gclient', 'glob', 'marshal', 'normpath', 'optparse',
115 'os', 'pickle', 'presubmit_canned_checks', 're', 'subprocess', 'sys', 109 'os', 'pickle', 'presubmit_canned_checks', 're', 'subprocess', 'sys',
116 'tempfile', 'types', 'urllib2', 'warnings', 110 'tempfile', 'types', 'unittest', 'urllib2', 'warnings',
117 ] 111 ]
118 # If this test fails, you should add the relevant test. 112 # If this test fails, you should add the relevant test.
119 self.compareMembers(presubmit, members) 113 self.compareMembers(presubmit, members)
120 114
121 def testListRelevantPresubmitFiles(self): 115 def testListRelevantPresubmitFiles(self):
122 join = presubmit.os.path.join 116 join = presubmit.os.path.join
123 files = [ 117 files = [
124 'blat.cc', 118 'blat.cc',
125 join('foo', 'haspresubmit', 'yodle', 'smart.h'), 119 join('foo', 'haspresubmit', 'yodle', 'smart.h'),
126 join('moo', 'mat', 'gat', 'yo.h'), 120 join('moo', 'mat', 'gat', 'yo.h'),
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 class InputApiUnittest(PresubmitTestsBase): 509 class InputApiUnittest(PresubmitTestsBase):
516 """Tests presubmit.InputApi.""" 510 """Tests presubmit.InputApi."""
517 def testMembersChanged(self): 511 def testMembersChanged(self):
518 self.mox.ReplayAll() 512 self.mox.ReplayAll()
519 members = [ 513 members = [
520 'AbsoluteLocalPaths', 'AffectedFiles', 'AffectedTextFiles', 514 'AbsoluteLocalPaths', 'AffectedFiles', 'AffectedTextFiles',
521 'DepotToLocalPath', 'LocalPaths', 'LocalToDepotPath', 515 'DepotToLocalPath', 'LocalPaths', 'LocalToDepotPath',
522 'PresubmitLocalPath', 'RightHandSideLines', 'ServerPaths', 516 'PresubmitLocalPath', 'RightHandSideLines', 'ServerPaths',
523 'basename', 'cPickle', 'cStringIO', 'canned_checks', 'change', 517 'basename', 'cPickle', 'cStringIO', 'canned_checks', 'change',
524 'marshal', 'os_path', 'pickle', 'platform', 518 'marshal', 'os_path', 'pickle', 'platform',
525 're', 'subprocess', 'tempfile', 'urllib2', 'version', 519 're', 'subprocess', 'tempfile', 'unittest', 'urllib2', 'version',
526 ] 520 ]
527 # If this test fails, you should add the relevant test. 521 # If this test fails, you should add the relevant test.
528 self.compareMembers(presubmit.InputApi(None, './.'), members) 522 self.compareMembers(presubmit.InputApi(None, './.'), members)
529 523
530 def testDepotToLocalPath(self): 524 def testDepotToLocalPath(self):
531 presubmit.gclient.CaptureSVNInfo('svn://foo/smurf').AndReturn( 525 presubmit.gclient.CaptureSVNInfo('svn://foo/smurf').AndReturn(
532 {'Path': 'prout'}) 526 {'Path': 'prout'})
533 presubmit.gclient.CaptureSVNInfo('svn:/foo/notfound/burp').AndReturn({}) 527 presubmit.gclient.CaptureSVNInfo('svn:/foo/notfound/burp').AndReturn({})
534 self.mox.ReplayAll() 528 self.mox.ReplayAll()
535 529
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
793 ).AndReturn('application/octet-stream') 787 ).AndReturn('application/octet-stream')
794 self.mox.ReplayAll() 788 self.mox.ReplayAll()
795 789
796 output = filter(lambda x: x.IsTextFile(), list) 790 output = filter(lambda x: x.IsTextFile(), list)
797 self.failUnless(len(output) == 1) 791 self.failUnless(len(output) == 1)
798 self.failUnless(list[0] == output[0]) 792 self.failUnless(list[0] == output[0])
799 793
800 794
801 class CannedChecksUnittest(PresubmitTestsBase): 795 class CannedChecksUnittest(PresubmitTestsBase):
802 """Tests presubmit_canned_checks.py.""" 796 """Tests presubmit_canned_checks.py."""
803 class MockInputApi(object):
804 class MockUrllib2(object):
805 class urlopen(object):
806 def __init__(self, url):
807 if url == 'url_to_open':
808 self.result = '1'
809 else:
810 self.result = '0'
811 def read(self):
812 return self.result
813 def close(self):
814 pass
815 def __init__(self, lines=None):
816 self.lines = lines
817 self.basename = lambda x: x
818 self.urllib2 = self.MockUrllib2()
819 self.re = presubmit.re
820 797
821 def RightHandSideLines(self): 798 def setUp(self):
822 for line in self.lines: 799 PresubmitTestsBase.setUp(self)
823 yield (presubmit.AffectedFile('bingo', 'M'), 1, line) 800 self.mox.StubOutWithMock(presubmit_canned_checks,
801 '_RunPythonUnitTests_LoadTests')
802
803 def MockInputApi(self):
804 input_api = self.mox.CreateMock(presubmit.InputApi)
805 input_api.re = presubmit.re
806 input_api.urllib2 = self.mox.CreateMock(presubmit.urllib2)
807 input_api.unittest = unittest
808 return input_api
809
810 def MakeBasicChange(self, name, description):
811 ci = presubmit.gcl.ChangeInfo(name=name, description=description)
812 return presubmit.GclChange(ci, self.fake_root_dir)
824 813
825 def testMembersChanged(self): 814 def testMembersChanged(self):
826 self.mox.ReplayAll() 815 self.mox.ReplayAll()
827 members = [ 816 members = [
828 'CheckChangeHasBugField', 'CheckChangeHasNoTabs', 817 'CheckChangeHasBugField', 'CheckChangeHasNoTabs',
829 'CheckChangeHasQaField', 'CheckChangeHasTestedField', 818 'CheckChangeHasQaField', 'CheckChangeHasTestedField',
830 'CheckChangeHasTestField', 'CheckDoNotSubmit', 819 'CheckChangeHasTestField', 'CheckDoNotSubmit',
831 'CheckDoNotSubmitInDescription', 'CheckDoNotSubmitInFiles', 820 'CheckDoNotSubmitInDescription', 'CheckDoNotSubmitInFiles',
832 'CheckLongLines', 'CheckTreeIsOpen', 'RunPythonUnitTests', 821 'CheckLongLines', 'CheckTreeIsOpen', 'RunPythonUnitTests',
833 ] 822 ]
834 # If this test fails, you should add the relevant test. 823 # If this test fails, you should add the relevant test.
835 self.compareMembers(presubmit_canned_checks, members) 824 self.compareMembers(presubmit_canned_checks, members)
836 825
826 def TestDescription(self, check, description1, description2, error_type):
827 input_api1 = self.MockInputApi()
828 input_api1.change = self.MakeBasicChange('foo', 'Foo\n' + description1)
829 input_api2 = self.MockInputApi()
830 input_api2.change = self.MakeBasicChange('foo', 'Foo\n' + description2)
831 self.mox.ReplayAll()
832
833 results1 = check(input_api1, presubmit.OutputApi)
834 self.assertEquals(results1, [])
835 results2 = check(input_api2, presubmit.OutputApi)
836 self.assertEquals(len(results2), 1)
837 self.assertEquals(results2[0].__class__, error_type)
838
839 def TestContent(self, check, content1, content2, error_type):
840 input_api1 = self.MockInputApi()
841 input_api1.change = self.MakeBasicChange('foo', 'Foo\n')
842 affected_file = self.mox.CreateMock(presubmit.SvnAffectedFile)
843 affected_file.LocalPath().AndReturn('foo.cc')
844 output1 = [
845 (affected_file, 42, 'yo, ' + content1),
846 (affected_file, 43, 'yer'),
847 (affected_file, 23, 'ya'),
848 ]
849 input_api1.RightHandSideLines().AndReturn(output1)
850 input_api2 = self.MockInputApi()
851 input_api2.change = self.MakeBasicChange('foo', 'Foo\n')
852 output2 = [
853 (affected_file, 42, 'yo, ' + content2),
854 (affected_file, 43, 'yer'),
855 (affected_file, 23, 'ya'),
856 ]
857 input_api2.RightHandSideLines().AndReturn(output2)
858 self.mox.ReplayAll()
859
860 results1 = check(input_api1, presubmit.OutputApi)
861 self.assertEquals(results1, [])
862 results2 = check(input_api2, presubmit.OutputApi)
863 self.assertEquals(len(results2), 1)
864 self.assertEquals(results2[0].__class__, error_type)
865
837 def testCannedCheckChangeHasBugField(self): 866 def testCannedCheckChangeHasBugField(self):
838 self.mox.ReplayAll() 867 self.TestDescription(presubmit_canned_checks.CheckChangeHasBugField,
839 change = self.MakeBasicChange('foo', 868 'BUG=1234', '',
840 'Foo\nBUG=1234') 869 presubmit.OutputApi.PresubmitNotifyResult)
841 api = presubmit.InputApi(change, './PRESUBMIT.py')
842 self.failIf(presubmit_canned_checks.CheckChangeHasBugField(
843 api, presubmit.OutputApi))
844
845 change = self.MakeBasicChange('foo',
846 'Foo\nNEVERTESTED=did some stuff')
847 api = presubmit.InputApi(change, './PRESUBMIT.py')
848 self.failUnless(presubmit_canned_checks.CheckChangeHasBugField(
849 api, presubmit.OutputApi))
850 870
851 def testCannedCheckChangeHasTestField(self): 871 def testCannedCheckChangeHasTestField(self):
852 self.mox.ReplayAll() 872 self.TestDescription(presubmit_canned_checks.CheckChangeHasTestField,
853 change = self.MakeBasicChange('foo', 873 'TEST=did some stuff', '',
854 'Foo\nTEST=did some stuff') 874 presubmit.OutputApi.PresubmitNotifyResult)
855 api = presubmit.InputApi(change, './PRESUBMIT.py')
856 self.failIf(presubmit_canned_checks.CheckChangeHasTestField(
857 api, presubmit.OutputApi))
858
859 change = self.MakeBasicChange('foo',
860 'Foo\nNOTEST=did some stuff')
861 api = presubmit.InputApi(change, './PRESUBMIT.py')
862 self.failUnless(presubmit_canned_checks.CheckChangeHasTestField(
863 api, presubmit.OutputApi))
864 875
865 def testCannedCheckChangeHasTestedField(self): 876 def testCannedCheckChangeHasTestedField(self):
866 self.mox.ReplayAll() 877 self.TestDescription(presubmit_canned_checks.CheckChangeHasTestedField,
867 change = self.MakeBasicChange('foo', 878 'TESTED=did some stuff', '',
868 'Foo\nTESTED=did some stuff') 879 presubmit.OutputApi.PresubmitError)
869 api = presubmit.InputApi(change, './PRESUBMIT.py')
870 self.failIf(presubmit_canned_checks.CheckChangeHasTestedField(
871 api, presubmit.OutputApi))
872
873 change = self.MakeBasicChange('foo',
874 'Foo\nNEVERTESTED=did some stuff')
875 api = presubmit.InputApi(change, './PRESUBMIT.py')
876 self.failUnless(presubmit_canned_checks.CheckChangeHasTestedField(
877 api, presubmit.OutputApi))
878 880
879 def testCannedCheckChangeHasQAField(self): 881 def testCannedCheckChangeHasQAField(self):
880 self.mox.ReplayAll() 882 self.TestDescription(presubmit_canned_checks.CheckChangeHasQaField,
881 change = self.MakeBasicChange('foo', 883 'QA=BSOD your machine', '',
882 'Foo\nQA=test floop feature very well') 884 presubmit.OutputApi.PresubmitError)
883 api = presubmit.InputApi(change, './PRESUBMIT.py')
884 self.failIf(presubmit_canned_checks.CheckChangeHasQaField(
885 api, presubmit.OutputApi))
886
887 change = self.MakeBasicChange('foo',
888 'Foo\nNOTFORQA=test floop feature very well')
889 api = presubmit.InputApi(change, './PRESUBMIT.py')
890 self.failUnless(presubmit_canned_checks.CheckChangeHasQaField(
891 api, presubmit.OutputApi))
892 885
893 def testCannedCheckDoNotSubmitInDescription(self): 886 def testCannedCheckDoNotSubmitInDescription(self):
894 self.mox.ReplayAll() 887 self.TestDescription(presubmit_canned_checks.CheckDoNotSubmitInDescription,
895 change = self.MakeBasicChange('foo', 'hello') 888 'DO NOTSUBMIT', 'DO NOT ' + 'SUBMIT',
896 api = presubmit.InputApi(change, './PRESUBMIT.py') 889 presubmit.OutputApi.PresubmitError)
897 self.failIf(presubmit_canned_checks.CheckDoNotSubmitInDescription(
898 api, presubmit.OutputApi))
899
900 change = self.MakeBasicChange('foo',
901 'DO NOT ' + 'SUBMIT')
902 api = presubmit.InputApi(change, './PRESUBMIT.py')
903 self.failUnless(presubmit_canned_checks.CheckDoNotSubmitInDescription(
904 api, presubmit.OutputApi))
905 890
906 def testCannedCheckDoNotSubmitInFiles(self): 891 def testCannedCheckDoNotSubmitInFiles(self):
907 self.mox.ReplayAll() 892 self.TestContent(presubmit_canned_checks.CheckDoNotSubmitInFiles,
908 self.failIf(presubmit_canned_checks.CheckDoNotSubmitInFiles( 893 'DO NOTSUBMIT', 'DO NOT ' + 'SUBMIT',
909 self.MockInputApi(['hello', 'there']), presubmit.OutputApi 894 presubmit.OutputApi.PresubmitError)
910 ))
911 self.failUnless(presubmit_canned_checks.CheckDoNotSubmitInFiles(
912 self.MockInputApi(['hello', 'yo, DO NOT ' + 'SUBMIT']),
913 presubmit.OutputApi))
914 895
915 def testCannedCheckChangeHasNoTabs(self): 896 def testCannedCheckChangeHasNoTabs(self):
916 self.mox.ReplayAll() 897 self.TestContent(presubmit_canned_checks.CheckChangeHasNoTabs,
917 self.failIf(presubmit_canned_checks.CheckChangeHasNoTabs( 898 'blah blah', 'blah\tblah',
918 self.MockInputApi(['hello', 'there']), presubmit.OutputApi 899 presubmit.OutputApi.PresubmitError)
919 ))
920 self.failUnless(presubmit_canned_checks.CheckChangeHasNoTabs(
921 self.MockInputApi(['hello', 'there\tit is']), presubmit.OutputApi
922 ))
923 900
924 def testCannedCheckLongLines(self): 901 def testCannedCheckLongLines(self):
902 check = lambda x,y: presubmit_canned_checks.CheckLongLines(x, y, 10)
903 self.TestContent(check, '', 'blah blah blah',
904 presubmit.OutputApi.PresubmitPromptWarning)
905
906 def testCannedCheckTreeIsOpenOpen(self):
907 input_api = self.MockInputApi()
908 connection = self.mox.CreateMockAnything()
909 input_api.urllib2.urlopen('url_to_open').AndReturn(connection)
910 connection.read().AndReturn('1')
911 connection.close()
925 self.mox.ReplayAll() 912 self.mox.ReplayAll()
926 self.failIf(presubmit_canned_checks.CheckLongLines( 913 results = presubmit_canned_checks.CheckTreeIsOpen(
927 self.MockInputApi(['hello', 'there']), presubmit.OutputApi, 5 914 input_api, presubmit.OutputApi, url='url_to_open', closed='0')
928 )) 915 self.assertEquals(results, [])
929 self.failUnless(presubmit_canned_checks.CheckLongLines(
930 self.MockInputApi(['hello', 'there!']), presubmit.OutputApi, 5
931 ))
932 916
933 def testCannedCheckTreeIsOpen(self): 917 def testCannedCheckTreeIsOpenClosed(self):
918 input_api = self.MockInputApi()
919 connection = self.mox.CreateMockAnything()
920 input_api.urllib2.urlopen('url_to_closed').AndReturn(connection)
921 connection.read().AndReturn('0')
922 connection.close()
934 self.mox.ReplayAll() 923 self.mox.ReplayAll()
935 self.failIf(presubmit_canned_checks.CheckTreeIsOpen( 924 results = presubmit_canned_checks.CheckTreeIsOpen(
936 self.MockInputApi(), presubmit.OutputApi, url='url_to_open', closed='0' 925 input_api, presubmit.OutputApi, url='url_to_closed', closed='0')
937 )) 926 self.assertEquals(len(results), 1)
938 self.failUnless(presubmit_canned_checks.CheckTreeIsOpen( 927 self.assertEquals(results[0].__class__,
939 self.MockInputApi(), presubmit.OutputApi, url='url_to_closed', closed='0' 928 presubmit.OutputApi.PresubmitError)
940 ))
941 929
942 def RunPythonUnitTests(self): 930 def testRunPythonUnitTests1(self):
931 input_api = self.MockInputApi()
943 self.mox.ReplayAll() 932 self.mox.ReplayAll()
944 # TODO(maruel): Add real tests. 933 results = presubmit_canned_checks.RunPythonUnitTests(
945 self.failIf(presubmit_canned_checks.RunPythonUnitTests( 934 input_api, presubmit.OutputApi, [])
946 self.MockInputApi(), 935 self.assertEquals(results, [])
947 presubmit.OutputApi, [])) 936
948 self.failUnless(presubmit_canned_checks.RunPythonUnitTests( 937 def testRunPythonUnitTests2(self):
949 self.MockInputApi(), 938 input_api = self.MockInputApi()
950 presubmit.OutputApi, ['non_existent_module'])) 939 presubmit_canned_checks._RunPythonUnitTests_LoadTests('_non_existent_module'
940 ).AndRaise(exceptions.ImportError('Blehh'))
941 self.mox.ReplayAll()
942 results = presubmit_canned_checks.RunPythonUnitTests(
943 input_api, presubmit.OutputApi, ['_non_existent_module'])
944 self.assertEquals(len(results), 1)
945 self.assertEquals(results[0].__class__, presubmit.OutputApi.PresubmitError)
946
947 def testRunPythonUnitTests3(self):
948 input_api = self.MockInputApi()
949 test_module = self.mox.CreateMockAnything()
950 presubmit_canned_checks._RunPythonUnitTests_LoadTests('test_module'
951 ).AndReturn([])
952 self.mox.ReplayAll()
953
954 results = presubmit_canned_checks.RunPythonUnitTests(
955 input_api, presubmit.OutputApi, ['test_module'])
956 self.assertEquals(results, [])
957
958 def testRunPythonUnitTests4(self):
959 input_api = self.MockInputApi()
960 input_api.unittest = self.mox.CreateMock(unittest)
961 test = self.mox.CreateMockAnything()
962 presubmit_canned_checks._RunPythonUnitTests_LoadTests('test_module'
963 ).AndReturn([test])
964 runner = self.mox.CreateMockAnything()
965 input_api.unittest.TextTestRunner(verbosity=0).AndReturn(runner)
966 suite = self.mox.CreateMockAnything()
967 input_api.unittest.TestSuite([test]).AndReturn(suite)
968 test_result = self.mox.CreateMockAnything()
969 runner.run(suite).AndReturn(test_result)
970 test_result.wasSuccessful().AndReturn(False)
971 test_result.failures = 2
972 test_result.errors = 3
973 self.mox.ReplayAll()
974
975 results = presubmit_canned_checks.RunPythonUnitTests(
976 input_api, presubmit.OutputApi, ['test_module'])
977 self.assertEquals(len(results), 1)
978 self.assertEquals(results[0].__class__, presubmit.OutputApi.PresubmitError)
979
980 def testRunPythonUnitTests5(self):
981 input_api = self.MockInputApi()
982 input_api.unittest = self.mox.CreateMock(unittest)
983 test = self.mox.CreateMockAnything()
984 presubmit_canned_checks._RunPythonUnitTests_LoadTests('test_module'
985 ).AndReturn([test])
986 runner = self.mox.CreateMockAnything()
987 input_api.unittest.TextTestRunner(verbosity=0).AndReturn(runner)
988 suite = self.mox.CreateMockAnything()
989 input_api.unittest.TestSuite([test]).AndReturn(suite)
990 test_result = self.mox.CreateMockAnything()
991 runner.run(suite).AndReturn(test_result)
992 test_result.wasSuccessful().AndReturn(True)
993 test_result.failures = 0
994 test_result.errors = 0
995 self.mox.ReplayAll()
996
997 results = presubmit_canned_checks.RunPythonUnitTests(
998 input_api, presubmit.OutputApi, ['test_module'])
999 self.assertEquals(len(results), 0)
1000
951 1001
952 if __name__ == '__main__': 1002 if __name__ == '__main__':
953 unittest.main() 1003 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