OLD | NEW |
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 907 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
918 class CannedChecksUnittest(PresubmitTestsBase): | 918 class CannedChecksUnittest(PresubmitTestsBase): |
919 """Tests presubmit_canned_checks.py.""" | 919 """Tests presubmit_canned_checks.py.""" |
920 | 920 |
921 def setUp(self): | 921 def setUp(self): |
922 PresubmitTestsBase.setUp(self) | 922 PresubmitTestsBase.setUp(self) |
923 self.mox.StubOutWithMock(presubmit_canned_checks, | 923 self.mox.StubOutWithMock(presubmit_canned_checks, |
924 '_RunPythonUnitTests_LoadTests') | 924 '_RunPythonUnitTests_LoadTests') |
925 | 925 |
926 def MockInputApi(self): | 926 def MockInputApi(self): |
927 input_api = self.mox.CreateMock(presubmit.InputApi) | 927 input_api = self.mox.CreateMock(presubmit.InputApi) |
| 928 input_api.cStringIO = presubmit.cStringIO |
928 input_api.re = presubmit.re | 929 input_api.re = presubmit.re |
929 input_api.traceback = presubmit.traceback | 930 input_api.traceback = presubmit.traceback |
930 input_api.urllib2 = self.mox.CreateMock(presubmit.urllib2) | 931 input_api.urllib2 = self.mox.CreateMock(presubmit.urllib2) |
931 input_api.unittest = unittest | 932 input_api.unittest = unittest |
932 return input_api | 933 return input_api |
933 | 934 |
934 def testMembersChanged(self): | 935 def testMembersChanged(self): |
935 self.mox.ReplayAll() | 936 self.mox.ReplayAll() |
936 members = [ | 937 members = [ |
937 'CheckChangeHasBugField', 'CheckChangeHasNoCR', 'CheckChangeHasNoTabs', | 938 'CheckChangeHasBugField', 'CheckChangeHasNoCR', 'CheckChangeHasNoTabs', |
938 'CheckChangeHasQaField', 'CheckChangeHasTestedField', | 939 'CheckChangeHasQaField', 'CheckChangeHasTestedField', |
939 'CheckChangeHasTestField', 'CheckDoNotSubmit', | 940 'CheckChangeHasTestField', 'CheckDoNotSubmit', |
940 'CheckDoNotSubmitInDescription', 'CheckDoNotSubmitInFiles', | 941 'CheckDoNotSubmitInDescription', 'CheckDoNotSubmitInFiles', |
941 'CheckLongLines', 'CheckTreeIsOpen', 'RunPythonUnitTests', | 942 'CheckLongLines', 'CheckTreeIsOpen', 'RunPythonUnitTests', |
942 ] | 943 ] |
943 # If this test fails, you should add the relevant test. | 944 # If this test fails, you should add the relevant test. |
944 self.compareMembers(presubmit_canned_checks, members) | 945 self.compareMembers(presubmit_canned_checks, members) |
945 | 946 |
946 def TestDescription(self, check, description1, description2, error_type): | 947 def DescriptionTest(self, check, description1, description2, error_type): |
947 input_api1 = self.MockInputApi() | 948 input_api1 = self.MockInputApi() |
948 input_api1.change = self.MakeBasicChange('foo', 'Foo\n' + description1) | 949 input_api1.change = self.MakeBasicChange('foo', 'Foo\n' + description1) |
949 input_api2 = self.MockInputApi() | 950 input_api2 = self.MockInputApi() |
950 input_api2.change = self.MakeBasicChange('foo', 'Foo\n' + description2) | 951 input_api2.change = self.MakeBasicChange('foo', 'Foo\n' + description2) |
951 self.mox.ReplayAll() | 952 self.mox.ReplayAll() |
952 | 953 |
953 results1 = check(input_api1, presubmit.OutputApi) | 954 results1 = check(input_api1, presubmit.OutputApi) |
954 self.assertEquals(results1, []) | 955 self.assertEquals(results1, []) |
955 results2 = check(input_api2, presubmit.OutputApi) | 956 results2 = check(input_api2, presubmit.OutputApi) |
956 self.assertEquals(len(results2), 1) | 957 self.assertEquals(len(results2), 1) |
957 self.assertEquals(results2[0].__class__, error_type) | 958 self.assertEquals(results2[0].__class__, error_type) |
958 | 959 |
959 def TestContent(self, check, content1, content2, error_type): | 960 def ContentTest(self, check, content1, content2, error_type): |
960 input_api1 = self.MockInputApi() | 961 input_api1 = self.MockInputApi() |
961 input_api1.change = self.MakeBasicChange('foo', 'Foo\n') | 962 input_api1.change = self.MakeBasicChange('foo', 'Foo\n') |
962 affected_file = self.mox.CreateMock(presubmit.SvnAffectedFile) | 963 affected_file = self.mox.CreateMock(presubmit.SvnAffectedFile) |
963 affected_file.LocalPath().AndReturn('foo.cc') | 964 affected_file.LocalPath().AndReturn('foo.cc') |
964 output1 = [ | 965 output1 = [ |
965 (affected_file, 42, 'yo, ' + content1), | 966 (affected_file, 42, 'yo, ' + content1), |
966 (affected_file, 43, 'yer'), | 967 (affected_file, 43, 'yer'), |
967 (affected_file, 23, 'ya'), | 968 (affected_file, 23, 'ya'), |
968 ] | 969 ] |
969 input_api1.RightHandSideLines(mox.IgnoreArg()).AndReturn(output1) | 970 input_api1.RightHandSideLines(mox.IgnoreArg()).AndReturn(output1) |
970 input_api2 = self.MockInputApi() | 971 input_api2 = self.MockInputApi() |
971 input_api2.change = self.MakeBasicChange('foo', 'Foo\n') | 972 input_api2.change = self.MakeBasicChange('foo', 'Foo\n') |
972 output2 = [ | 973 output2 = [ |
973 (affected_file, 42, 'yo, ' + content2), | 974 (affected_file, 42, 'yo, ' + content2), |
974 (affected_file, 43, 'yer'), | 975 (affected_file, 43, 'yer'), |
975 (affected_file, 23, 'ya'), | 976 (affected_file, 23, 'ya'), |
976 ] | 977 ] |
977 input_api2.RightHandSideLines(mox.IgnoreArg()).AndReturn(output2) | 978 input_api2.RightHandSideLines(mox.IgnoreArg()).AndReturn(output2) |
978 self.mox.ReplayAll() | 979 self.mox.ReplayAll() |
979 | 980 |
980 results1 = check(input_api1, presubmit.OutputApi, None) | 981 results1 = check(input_api1, presubmit.OutputApi, None) |
981 self.assertEquals(results1, []) | 982 self.assertEquals(results1, []) |
982 results2 = check(input_api2, presubmit.OutputApi, None) | 983 results2 = check(input_api2, presubmit.OutputApi, None) |
983 self.assertEquals(len(results2), 1) | 984 self.assertEquals(len(results2), 1) |
984 self.assertEquals(results2[0].__class__, error_type) | 985 self.assertEquals(results2[0].__class__, error_type) |
985 | 986 |
986 def testCannedCheckChangeHasBugField(self): | 987 def testCannedCheckChangeHasBugField(self): |
987 self.TestDescription(presubmit_canned_checks.CheckChangeHasBugField, | 988 self.DescriptionTest(presubmit_canned_checks.CheckChangeHasBugField, |
988 'BUG=1234', '', | 989 'BUG=1234', '', |
989 presubmit.OutputApi.PresubmitNotifyResult) | 990 presubmit.OutputApi.PresubmitNotifyResult) |
990 | 991 |
991 def testCannedCheckChangeHasTestField(self): | 992 def testCannedCheckChangeHasTestField(self): |
992 self.TestDescription(presubmit_canned_checks.CheckChangeHasTestField, | 993 self.DescriptionTest(presubmit_canned_checks.CheckChangeHasTestField, |
993 'TEST=did some stuff', '', | 994 'TEST=did some stuff', '', |
994 presubmit.OutputApi.PresubmitNotifyResult) | 995 presubmit.OutputApi.PresubmitNotifyResult) |
995 | 996 |
996 def testCannedCheckChangeHasTestedField(self): | 997 def testCannedCheckChangeHasTestedField(self): |
997 self.TestDescription(presubmit_canned_checks.CheckChangeHasTestedField, | 998 self.DescriptionTest(presubmit_canned_checks.CheckChangeHasTestedField, |
998 'TESTED=did some stuff', '', | 999 'TESTED=did some stuff', '', |
999 presubmit.OutputApi.PresubmitError) | 1000 presubmit.OutputApi.PresubmitError) |
1000 | 1001 |
1001 def testCannedCheckChangeHasQAField(self): | 1002 def testCannedCheckChangeHasQAField(self): |
1002 self.TestDescription(presubmit_canned_checks.CheckChangeHasQaField, | 1003 self.DescriptionTest(presubmit_canned_checks.CheckChangeHasQaField, |
1003 'QA=BSOD your machine', '', | 1004 'QA=BSOD your machine', '', |
1004 presubmit.OutputApi.PresubmitError) | 1005 presubmit.OutputApi.PresubmitError) |
1005 | 1006 |
1006 def testCannedCheckDoNotSubmitInDescription(self): | 1007 def testCannedCheckDoNotSubmitInDescription(self): |
1007 self.TestDescription(presubmit_canned_checks.CheckDoNotSubmitInDescription, | 1008 self.DescriptionTest(presubmit_canned_checks.CheckDoNotSubmitInDescription, |
1008 'DO NOTSUBMIT', 'DO NOT ' + 'SUBMIT', | 1009 'DO NOTSUBMIT', 'DO NOT ' + 'SUBMIT', |
1009 presubmit.OutputApi.PresubmitError) | 1010 presubmit.OutputApi.PresubmitError) |
1010 | 1011 |
1011 def testCannedCheckDoNotSubmitInFiles(self): | 1012 def testCannedCheckDoNotSubmitInFiles(self): |
1012 self.TestContent( | 1013 self.ContentTest( |
1013 lambda x,y,z: presubmit_canned_checks.CheckDoNotSubmitInFiles(x, y), | 1014 lambda x,y,z: presubmit_canned_checks.CheckDoNotSubmitInFiles(x, y), |
1014 'DO NOTSUBMIT', 'DO NOT ' + 'SUBMIT', | 1015 'DO NOTSUBMIT', 'DO NOT ' + 'SUBMIT', |
1015 presubmit.OutputApi.PresubmitError) | 1016 presubmit.OutputApi.PresubmitError) |
1016 | 1017 |
1017 def testCheckChangeHasNoCR(self): | 1018 def testCheckChangeHasNoCR(self): |
1018 input_api1 = self.MockInputApi() | 1019 input_api1 = self.MockInputApi() |
1019 self.mox.StubOutWithMock(input_api1, 'ReadFile') | 1020 self.mox.StubOutWithMock(input_api1, 'ReadFile') |
1020 input_api1.change = self.MakeBasicChange('foo', 'Foo\n') | 1021 input_api1.change = self.MakeBasicChange('foo', 'Foo\n') |
1021 affected_file1 = self.mox.CreateMock(presubmit.SvnAffectedFile) | 1022 affected_file1 = self.mox.CreateMock(presubmit.SvnAffectedFile) |
1022 input_api1.AffectedSourceFiles(None).AndReturn([affected_file1]) | 1023 input_api1.AffectedSourceFiles(None).AndReturn([affected_file1]) |
(...skipping 10 matching lines...) Expand all Loading... |
1033 results = presubmit_canned_checks.CheckChangeHasNoCR( | 1034 results = presubmit_canned_checks.CheckChangeHasNoCR( |
1034 input_api1, presubmit.OutputApi, None) | 1035 input_api1, presubmit.OutputApi, None) |
1035 self.assertEquals(results, []) | 1036 self.assertEquals(results, []) |
1036 results2 = presubmit_canned_checks.CheckChangeHasNoCR( | 1037 results2 = presubmit_canned_checks.CheckChangeHasNoCR( |
1037 input_api2, presubmit.OutputApi, None) | 1038 input_api2, presubmit.OutputApi, None) |
1038 self.assertEquals(len(results2), 1) | 1039 self.assertEquals(len(results2), 1) |
1039 self.assertEquals(results2[0].__class__, | 1040 self.assertEquals(results2[0].__class__, |
1040 presubmit.OutputApi.PresubmitPromptWarning) | 1041 presubmit.OutputApi.PresubmitPromptWarning) |
1041 | 1042 |
1042 def testCannedCheckChangeHasNoTabs(self): | 1043 def testCannedCheckChangeHasNoTabs(self): |
1043 self.TestContent(presubmit_canned_checks.CheckChangeHasNoTabs, | 1044 self.ContentTest(presubmit_canned_checks.CheckChangeHasNoTabs, |
1044 'blah blah', 'blah\tblah', | 1045 'blah blah', 'blah\tblah', |
1045 presubmit.OutputApi.PresubmitPromptWarning) | 1046 presubmit.OutputApi.PresubmitPromptWarning) |
1046 | 1047 |
1047 def testCannedCheckLongLines(self): | 1048 def testCannedCheckLongLines(self): |
1048 check = lambda x,y,z: presubmit_canned_checks.CheckLongLines(x, y, 10, z) | 1049 check = lambda x,y,z: presubmit_canned_checks.CheckLongLines(x, y, 10, z) |
1049 self.TestContent(check, '', 'blah blah blah', | 1050 self.ContentTest(check, '', 'blah blah blah', |
1050 presubmit.OutputApi.PresubmitPromptWarning) | 1051 presubmit.OutputApi.PresubmitPromptWarning) |
1051 | 1052 |
1052 def testCannedCheckTreeIsOpenOpen(self): | 1053 def testCannedCheckTreeIsOpenOpen(self): |
1053 input_api = self.MockInputApi() | 1054 input_api = self.MockInputApi() |
1054 input_api.is_committing = True | 1055 input_api.is_committing = True |
1055 connection = self.mox.CreateMockAnything() | 1056 connection = self.mox.CreateMockAnything() |
1056 input_api.urllib2.urlopen('url_to_open').AndReturn(connection) | 1057 input_api.urllib2.urlopen('url_to_open').AndReturn(connection) |
1057 connection.read().AndReturn('1') | 1058 connection.read().AndReturn('1') |
1058 connection.close() | 1059 connection.close() |
1059 self.mox.ReplayAll() | 1060 self.mox.ReplayAll() |
(...skipping 16 matching lines...) Expand all Loading... |
1076 presubmit.OutputApi.PresubmitPromptWarning) | 1077 presubmit.OutputApi.PresubmitPromptWarning) |
1077 | 1078 |
1078 def testRunPythonUnitTestsNoTest(self): | 1079 def testRunPythonUnitTestsNoTest(self): |
1079 input_api = self.MockInputApi() | 1080 input_api = self.MockInputApi() |
1080 input_api.is_committing = False | 1081 input_api.is_committing = False |
1081 self.mox.ReplayAll() | 1082 self.mox.ReplayAll() |
1082 results = presubmit_canned_checks.RunPythonUnitTests( | 1083 results = presubmit_canned_checks.RunPythonUnitTests( |
1083 input_api, presubmit.OutputApi, []) | 1084 input_api, presubmit.OutputApi, []) |
1084 self.assertEquals(results, []) | 1085 self.assertEquals(results, []) |
1085 | 1086 |
1086 def testRunPythonUnitTestsNonExistent1(self): | 1087 def testRunPythonUnitTestsNonExistentUpload(self): |
1087 input_api = self.MockInputApi() | 1088 input_api = self.MockInputApi() |
1088 input_api.is_committing = False | 1089 input_api.is_committing = False |
1089 presubmit_canned_checks._RunPythonUnitTests_LoadTests( | 1090 presubmit_canned_checks._RunPythonUnitTests_LoadTests( |
1090 input_api, '_non_existent_module').AndRaise( | 1091 input_api, '_non_existent_module').AndRaise( |
1091 exceptions.ImportError('Blehh')) | 1092 exceptions.ImportError('Blehh')) |
1092 self.mox.ReplayAll() | 1093 self.mox.ReplayAll() |
1093 results = presubmit_canned_checks.RunPythonUnitTests( | 1094 results = presubmit_canned_checks.RunPythonUnitTests( |
1094 input_api, presubmit.OutputApi, ['_non_existent_module']) | 1095 input_api, presubmit.OutputApi, ['_non_existent_module']) |
1095 self.assertEquals(len(results), 1) | 1096 self.assertEquals(len(results), 1) |
1096 self.assertEquals(results[0].__class__, | 1097 self.assertEquals(results[0].__class__, |
1097 presubmit.OutputApi.PresubmitNotifyResult) | 1098 presubmit.OutputApi.PresubmitNotifyResult) |
1098 | 1099 |
1099 def testRunPythonUnitTestsNonExistent2(self): | 1100 def testRunPythonUnitTestsNonExistentCommitting(self): |
1100 input_api = self.MockInputApi() | 1101 input_api = self.MockInputApi() |
1101 input_api.is_committing = True | 1102 input_api.is_committing = True |
1102 presubmit_canned_checks._RunPythonUnitTests_LoadTests( | 1103 presubmit_canned_checks._RunPythonUnitTests_LoadTests( |
1103 input_api, '_non_existent_module').AndRaise( | 1104 input_api, '_non_existent_module').AndRaise( |
1104 exceptions.ImportError('Blehh')) | 1105 exceptions.ImportError('Blehh')) |
1105 self.mox.ReplayAll() | 1106 self.mox.ReplayAll() |
1106 results = presubmit_canned_checks.RunPythonUnitTests( | 1107 results = presubmit_canned_checks.RunPythonUnitTests( |
1107 input_api, presubmit.OutputApi, ['_non_existent_module']) | 1108 input_api, presubmit.OutputApi, ['_non_existent_module']) |
1108 self.assertEquals(len(results), 1) | 1109 self.assertEquals(len(results), 1) |
1109 self.assertEquals(results[0].__class__, presubmit.OutputApi.PresubmitError) | 1110 self.assertEquals(results[0].__class__, presubmit.OutputApi.PresubmitError) |
1110 | 1111 |
1111 def testRunPythonUnitTestsEmpty1(self): | 1112 def testRunPythonUnitTestsEmptyUpload(self): |
1112 input_api = self.MockInputApi() | 1113 input_api = self.MockInputApi() |
1113 input_api.is_committing = False | 1114 input_api.is_committing = False |
1114 test_module = self.mox.CreateMockAnything() | 1115 test_module = self.mox.CreateMockAnything() |
1115 presubmit_canned_checks._RunPythonUnitTests_LoadTests( | 1116 presubmit_canned_checks._RunPythonUnitTests_LoadTests( |
1116 input_api, 'test_module').AndReturn([]) | 1117 input_api, 'test_module').AndReturn([]) |
1117 self.mox.ReplayAll() | 1118 self.mox.ReplayAll() |
1118 | 1119 |
1119 results = presubmit_canned_checks.RunPythonUnitTests( | 1120 results = presubmit_canned_checks.RunPythonUnitTests( |
1120 input_api, presubmit.OutputApi, ['test_module']) | 1121 input_api, presubmit.OutputApi, ['test_module']) |
1121 self.assertEquals(results, []) | 1122 self.assertEquals(results, []) |
1122 | 1123 |
1123 def testRunPythonUnitTestsEmpty2(self): | 1124 def testRunPythonUnitTestsEmptyCommitting(self): |
1124 input_api = self.MockInputApi() | 1125 input_api = self.MockInputApi() |
1125 input_api.is_committing = True | 1126 input_api.is_committing = True |
1126 test_module = self.mox.CreateMockAnything() | 1127 test_module = self.mox.CreateMockAnything() |
1127 presubmit_canned_checks._RunPythonUnitTests_LoadTests( | 1128 presubmit_canned_checks._RunPythonUnitTests_LoadTests( |
1128 input_api, 'test_module').AndReturn([]) | 1129 input_api, 'test_module').AndReturn([]) |
1129 self.mox.ReplayAll() | 1130 self.mox.ReplayAll() |
1130 | 1131 |
1131 results = presubmit_canned_checks.RunPythonUnitTests( | 1132 results = presubmit_canned_checks.RunPythonUnitTests( |
1132 input_api, presubmit.OutputApi, ['test_module']) | 1133 input_api, presubmit.OutputApi, ['test_module']) |
1133 self.assertEquals(results, []) | 1134 self.assertEquals(results, []) |
1134 | 1135 |
1135 def testRunPythonUnitTestsFailure1(self): | 1136 def testRunPythonUnitTestsFailureUpload(self): |
1136 input_api = self.MockInputApi() | 1137 input_api = self.MockInputApi() |
1137 input_api.is_committing = False | 1138 input_api.is_committing = False |
1138 input_api.unittest = self.mox.CreateMock(unittest) | 1139 input_api.unittest = self.mox.CreateMock(unittest) |
| 1140 input_api.cStringIO = self.mox.CreateMock(presubmit.cStringIO) |
1139 test = self.mox.CreateMockAnything() | 1141 test = self.mox.CreateMockAnything() |
1140 presubmit_canned_checks._RunPythonUnitTests_LoadTests( | 1142 presubmit_canned_checks._RunPythonUnitTests_LoadTests( |
1141 input_api, 'test_module').AndReturn([test]) | 1143 input_api, 'test_module').AndReturn([test]) |
1142 runner = self.mox.CreateMockAnything() | 1144 runner = self.mox.CreateMockAnything() |
1143 input_api.unittest.TextTestRunner(verbosity=0).AndReturn(runner) | 1145 buffer = self.mox.CreateMockAnything() |
| 1146 input_api.cStringIO.StringIO().AndReturn(buffer) |
| 1147 buffer.getvalue().AndReturn('BOO HOO!') |
| 1148 input_api.unittest.TextTestRunner(stream=buffer, verbosity=0 |
| 1149 ).AndReturn(runner) |
1144 suite = self.mox.CreateMockAnything() | 1150 suite = self.mox.CreateMockAnything() |
1145 input_api.unittest.TestSuite([test]).AndReturn(suite) | 1151 input_api.unittest.TestSuite([test]).AndReturn(suite) |
1146 test_result = self.mox.CreateMockAnything() | 1152 test_result = self.mox.CreateMockAnything() |
1147 runner.run(suite).AndReturn(test_result) | 1153 runner.run(suite).AndReturn(test_result) |
1148 test_result.wasSuccessful().AndReturn(False) | 1154 test_result.wasSuccessful().AndReturn(False) |
1149 test_result.failures = [None, None] | 1155 test_result.failures = [None, None] |
1150 test_result.errors = [None, None, None] | 1156 test_result.errors = [None, None, None] |
1151 self.mox.ReplayAll() | 1157 self.mox.ReplayAll() |
1152 | 1158 |
1153 results = presubmit_canned_checks.RunPythonUnitTests( | 1159 results = presubmit_canned_checks.RunPythonUnitTests( |
1154 input_api, presubmit.OutputApi, ['test_module']) | 1160 input_api, presubmit.OutputApi, ['test_module']) |
1155 self.assertEquals(len(results), 1) | 1161 self.assertEquals(len(results), 1) |
1156 self.assertEquals(results[0].__class__, | 1162 self.assertEquals(results[0].__class__, |
1157 presubmit.OutputApi.PresubmitNotifyResult) | 1163 presubmit.OutputApi.PresubmitNotifyResult) |
| 1164 self.assertEquals(results[0]._long_text, 'BOO HOO!') |
1158 | 1165 |
1159 def testRunPythonUnitTestsFailure2(self): | 1166 def testRunPythonUnitTestsFailureCommitting(self): |
1160 input_api = self.MockInputApi() | 1167 input_api = self.MockInputApi() |
1161 input_api.is_committing = True | 1168 input_api.is_committing = True |
1162 input_api.unittest = self.mox.CreateMock(unittest) | 1169 input_api.unittest = self.mox.CreateMock(unittest) |
| 1170 input_api.cStringIO = self.mox.CreateMock(presubmit.cStringIO) |
1163 test = self.mox.CreateMockAnything() | 1171 test = self.mox.CreateMockAnything() |
1164 presubmit_canned_checks._RunPythonUnitTests_LoadTests( | 1172 presubmit_canned_checks._RunPythonUnitTests_LoadTests( |
1165 input_api, 'test_module').AndReturn([test]) | 1173 input_api, 'test_module').AndReturn([test]) |
1166 runner = self.mox.CreateMockAnything() | 1174 runner = self.mox.CreateMockAnything() |
1167 input_api.unittest.TextTestRunner(verbosity=0).AndReturn(runner) | 1175 buffer = self.mox.CreateMockAnything() |
| 1176 input_api.cStringIO.StringIO().AndReturn(buffer) |
| 1177 buffer.getvalue().AndReturn('BOO HOO!') |
| 1178 input_api.unittest.TextTestRunner(stream=buffer, verbosity=0 |
| 1179 ).AndReturn(runner) |
1168 suite = self.mox.CreateMockAnything() | 1180 suite = self.mox.CreateMockAnything() |
1169 input_api.unittest.TestSuite([test]).AndReturn(suite) | 1181 input_api.unittest.TestSuite([test]).AndReturn(suite) |
1170 test_result = self.mox.CreateMockAnything() | 1182 test_result = self.mox.CreateMockAnything() |
1171 runner.run(suite).AndReturn(test_result) | 1183 runner.run(suite).AndReturn(test_result) |
1172 test_result.wasSuccessful().AndReturn(False) | 1184 test_result.wasSuccessful().AndReturn(False) |
1173 test_result.failures = [None, None] | 1185 test_result.failures = [None, None] |
1174 test_result.errors = [None, None, None] | 1186 test_result.errors = [None, None, None] |
1175 self.mox.ReplayAll() | 1187 self.mox.ReplayAll() |
1176 | 1188 |
1177 results = presubmit_canned_checks.RunPythonUnitTests( | 1189 results = presubmit_canned_checks.RunPythonUnitTests( |
1178 input_api, presubmit.OutputApi, ['test_module']) | 1190 input_api, presubmit.OutputApi, ['test_module']) |
1179 self.assertEquals(len(results), 1) | 1191 self.assertEquals(len(results), 1) |
1180 self.assertEquals(results[0].__class__, presubmit.OutputApi.PresubmitError) | 1192 self.assertEquals(results[0].__class__, presubmit.OutputApi.PresubmitError) |
| 1193 self.assertEquals(results[0]._long_text, 'BOO HOO!') |
1181 | 1194 |
1182 def testRunPythonUnitTestsSuccess(self): | 1195 def testRunPythonUnitTestsSuccess(self): |
1183 input_api = self.MockInputApi() | 1196 input_api = self.MockInputApi() |
1184 input_api.is_committing = False | 1197 input_api.is_committing = False |
1185 input_api.unittest = self.mox.CreateMock(unittest) | 1198 input_api.unittest = self.mox.CreateMock(unittest) |
| 1199 input_api.cStringIO = self.mox.CreateMock(presubmit.cStringIO) |
1186 test = self.mox.CreateMockAnything() | 1200 test = self.mox.CreateMockAnything() |
1187 presubmit_canned_checks._RunPythonUnitTests_LoadTests( | 1201 presubmit_canned_checks._RunPythonUnitTests_LoadTests( |
1188 input_api, 'test_module').AndReturn([test]) | 1202 input_api, 'test_module').AndReturn([test]) |
1189 runner = self.mox.CreateMockAnything() | 1203 runner = self.mox.CreateMockAnything() |
1190 input_api.unittest.TextTestRunner(verbosity=0).AndReturn(runner) | 1204 buffer = self.mox.CreateMockAnything() |
| 1205 input_api.cStringIO.StringIO().AndReturn(buffer) |
| 1206 input_api.unittest.TextTestRunner(stream=buffer, verbosity=0 |
| 1207 ).AndReturn(runner) |
1191 suite = self.mox.CreateMockAnything() | 1208 suite = self.mox.CreateMockAnything() |
1192 input_api.unittest.TestSuite([test]).AndReturn(suite) | 1209 input_api.unittest.TestSuite([test]).AndReturn(suite) |
1193 test_result = self.mox.CreateMockAnything() | 1210 test_result = self.mox.CreateMockAnything() |
1194 runner.run(suite).AndReturn(test_result) | 1211 runner.run(suite).AndReturn(test_result) |
1195 test_result.wasSuccessful().AndReturn(True) | 1212 test_result.wasSuccessful().AndReturn(True) |
1196 test_result.failures = 0 | 1213 test_result.failures = 0 |
1197 test_result.errors = 0 | 1214 test_result.errors = 0 |
1198 self.mox.ReplayAll() | 1215 self.mox.ReplayAll() |
1199 | 1216 |
1200 results = presubmit_canned_checks.RunPythonUnitTests( | 1217 results = presubmit_canned_checks.RunPythonUnitTests( |
1201 input_api, presubmit.OutputApi, ['test_module']) | 1218 input_api, presubmit.OutputApi, ['test_module']) |
1202 self.assertEquals(len(results), 0) | 1219 self.assertEquals(len(results), 0) |
1203 | 1220 |
1204 | 1221 |
1205 if __name__ == '__main__': | 1222 if __name__ == '__main__': |
1206 unittest.main() | 1223 unittest.main() |
OLD | NEW |