OLD | NEW |
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 """Top-level presubmit script for Chromium. | 5 """Top-level presubmit script for Chromium. |
6 | 6 |
7 See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts | 7 See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts |
8 for more details about the presubmit API built into gcl. | 8 for more details about the presubmit API built into gcl. |
9 """ | 9 """ |
10 | 10 |
(...skipping 985 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
996 'Possibly invalid OS macro[s] found. Please fix your code\n' | 996 'Possibly invalid OS macro[s] found. Please fix your code\n' |
997 'or add your macro to src/PRESUBMIT.py.', bad_macros)] | 997 'or add your macro to src/PRESUBMIT.py.', bad_macros)] |
998 | 998 |
999 | 999 |
1000 def CheckChangeOnUpload(input_api, output_api): | 1000 def CheckChangeOnUpload(input_api, output_api): |
1001 results = [] | 1001 results = [] |
1002 results.extend(_CommonChecks(input_api, output_api)) | 1002 results.extend(_CommonChecks(input_api, output_api)) |
1003 return results | 1003 return results |
1004 | 1004 |
1005 | 1005 |
| 1006 def GetDefaultTryConfigs(bots=None): |
| 1007 """Returns a list of ('bot', set(['tests']), optionally filtered by [bots]. |
| 1008 |
| 1009 To add tests to this list, they MUST be in the the corresponding master's |
| 1010 gatekeeper config. For example, anything on master.chromium would be closed by |
| 1011 /chrome/trunk/tools/build/masters/master.chromium/master_gatekeeper_cfg.py. |
| 1012 |
| 1013 If 'bots' is specified, will only return configurations for bots in that list. |
| 1014 """ |
| 1015 |
| 1016 standard_tests = [ |
| 1017 'base_unittests', |
| 1018 'browser_tests', |
| 1019 'cacheinvalidation_unittests', |
| 1020 'check_deps', |
| 1021 'content_browsertests', |
| 1022 'content_unittests', |
| 1023 'crypto_unittests', |
| 1024 #'gfx_unittests', |
| 1025 'gpu_unittests', |
| 1026 'ipc_tests', |
| 1027 'interactive_ui_tests', |
| 1028 'jingle_unittests', |
| 1029 'media_unittests', |
| 1030 'net_unittests', |
| 1031 'ppapi_unittests', |
| 1032 'printing_unittests', |
| 1033 'sql_unittests', |
| 1034 'sync_unit_tests', |
| 1035 'unit_tests', |
| 1036 # Broken in release. |
| 1037 #'url_unittests', |
| 1038 #'webkit_unit_tests', |
| 1039 ] |
| 1040 |
| 1041 # Use a smaller set of tests for *_aura, since there's a lot of overlap with |
| 1042 # the corresponding *_rel builders. |
| 1043 # Note: *_aura are Release builders even if their names convey otherwise. |
| 1044 aura_tests = [ |
| 1045 'app_list_unittests', |
| 1046 'aura_unittests', |
| 1047 'browser_tests', |
| 1048 'compositor_unittests', |
| 1049 'content_browsertests', |
| 1050 'content_unittests', |
| 1051 'interactive_ui_tests', |
| 1052 'unit_tests', |
| 1053 'views_unittests', |
| 1054 ] |
| 1055 linux_aura_tests = aura_tests[:] |
| 1056 linux_aura_tests.remove('views_unittests') |
| 1057 win7_aura_tests = aura_tests[:] |
| 1058 win7_aura_tests.remove('app_list_unittests') |
| 1059 builders_and_tests = { |
| 1060 # TODO(maruel): Figure out a way to run 'sizes' where people can |
| 1061 # effectively update the perf expectation correctly. This requires a |
| 1062 # clobber=True build running 'sizes'. 'sizes' is not accurate with |
| 1063 # incremental build. Reference: |
| 1064 # http://chromium.org/developers/tree-sheriffs/perf-sheriffs. |
| 1065 # TODO(maruel): An option would be to run 'sizes' but not count a failure |
| 1066 # of this step as a try job failure. |
| 1067 'android_dbg': ['slave_steps'], |
| 1068 'android_clang_dbg': ['slave_steps'], |
| 1069 'android_aosp': ['compile'], |
| 1070 'ios_dbg_simulator': [ |
| 1071 'compile', |
| 1072 'base_unittests', |
| 1073 'content_unittests', |
| 1074 'crypto_unittests', |
| 1075 'url_unittests', |
| 1076 'net_unittests', |
| 1077 'sql_unittests', |
| 1078 'ui_unittests', |
| 1079 ], |
| 1080 'ios_rel_device': ['compile'], |
| 1081 'linux_aura': linux_aura_tests, |
| 1082 'linux_asan': ['defaulttests'], |
| 1083 'linux_clang': ['compile'], |
| 1084 'linux_chromeos_clang': ['compile'], |
| 1085 # Note: It is a Release builder even if its name convey otherwise. |
| 1086 'linux_chromeos': standard_tests + [ |
| 1087 'app_list_unittests', |
| 1088 'aura_unittests', |
| 1089 'ash_unittests', |
| 1090 'chromeos_unittests', |
| 1091 'components_unittests', |
| 1092 'dbus_unittests', |
| 1093 'device_unittests', |
| 1094 'sandbox_linux_unittests', |
| 1095 ], |
| 1096 'linux_rel': standard_tests + [ |
| 1097 'cc_unittests', |
| 1098 'chromedriver2_unittests', |
| 1099 'components_unittests', |
| 1100 'nacl_integration', |
| 1101 'remoting_unittests', |
| 1102 'sandbox_linux_unittests', |
| 1103 'sync_integration_tests', |
| 1104 ], |
| 1105 'mac': ['compile'], |
| 1106 'mac_rel': standard_tests + [ |
| 1107 'app_list_unittests', |
| 1108 'cc_unittests', |
| 1109 'chromedriver2_unittests', |
| 1110 'components_unittests', |
| 1111 'google_apis_unittests', |
| 1112 'message_center_unittests', |
| 1113 'nacl_integration', |
| 1114 'remoting_unittests', |
| 1115 'sync_integration_tests', |
| 1116 'telemetry_unittests', |
| 1117 ], |
| 1118 'win': ['compile'], |
| 1119 'win7_aura': win7_aura_tests + [ |
| 1120 'ash_unittests', |
| 1121 ], |
| 1122 'win_rel': standard_tests + [ |
| 1123 'app_list_unittests', |
| 1124 'cc_unittests', |
| 1125 'chrome_frame_net_tests', |
| 1126 'chrome_frame_tests', |
| 1127 'chrome_frame_unittests', |
| 1128 'chromedriver2_unittests', |
| 1129 'components_unittests', |
| 1130 'installer_util_unittests', |
| 1131 'mini_installer_test', |
| 1132 'nacl_integration', |
| 1133 'remoting_unittests', |
| 1134 'sync_integration_tests', |
| 1135 'telemetry_unittests', |
| 1136 ], |
| 1137 'win_x64_rel': [ |
| 1138 'base_unittests', |
| 1139 ], |
| 1140 } |
| 1141 |
| 1142 swarm_enabled_builders = ( |
| 1143 'linux_rel', |
| 1144 'mac_rel', |
| 1145 ) |
| 1146 |
| 1147 swarm_enabled_tests = ( |
| 1148 'base_unittests', |
| 1149 'browser_tests', |
| 1150 'interactive_ui_tests', |
| 1151 'net_unittests', |
| 1152 'unit_tests', |
| 1153 ) |
| 1154 |
| 1155 for bot in builders_and_tests: |
| 1156 if bot in swarm_enabled_builders: |
| 1157 builders_and_tests[bot] = [x + '_swarm' if x in swarm_enabled_tests else x |
| 1158 for x in builders_and_tests[bot]] |
| 1159 |
| 1160 if bots: |
| 1161 return [(bot, set(builders_and_tests[bot])) for bot in bots] |
| 1162 else: |
| 1163 return [(bot, set(tests)) for bot, tests in builders_and_tests.iteritems()] |
| 1164 |
| 1165 |
1006 def CheckChangeOnCommit(input_api, output_api): | 1166 def CheckChangeOnCommit(input_api, output_api): |
1007 results = [] | 1167 results = [] |
1008 results.extend(_CommonChecks(input_api, output_api)) | 1168 results.extend(_CommonChecks(input_api, output_api)) |
1009 # TODO(thestig) temporarily disabled, doesn't work in third_party/ | 1169 # TODO(thestig) temporarily disabled, doesn't work in third_party/ |
1010 #results.extend(input_api.canned_checks.CheckSvnModifiedDirectories( | 1170 #results.extend(input_api.canned_checks.CheckSvnModifiedDirectories( |
1011 # input_api, output_api, sources)) | 1171 # input_api, output_api, sources)) |
1012 # Make sure the tree is 'open'. | 1172 # Make sure the tree is 'open'. |
1013 results.extend(input_api.canned_checks.CheckTreeIsOpen( | 1173 results.extend(input_api.canned_checks.CheckTreeIsOpen( |
1014 input_api, | 1174 input_api, |
1015 output_api, | 1175 output_api, |
(...skipping 11 matching lines...) Expand all Loading... |
1027 return results | 1187 return results |
1028 | 1188 |
1029 | 1189 |
1030 def GetPreferredTrySlaves(project, change): | 1190 def GetPreferredTrySlaves(project, change): |
1031 files = change.LocalPaths() | 1191 files = change.LocalPaths() |
1032 | 1192 |
1033 if not files or all(re.search(r'[\\/]OWNERS$', f) for f in files): | 1193 if not files or all(re.search(r'[\\/]OWNERS$', f) for f in files): |
1034 return [] | 1194 return [] |
1035 | 1195 |
1036 if all(re.search('\.(m|mm)$|(^|[/_])mac[/_.]', f) for f in files): | 1196 if all(re.search('\.(m|mm)$|(^|[/_])mac[/_.]', f) for f in files): |
1037 return ['mac_rel', 'mac:compile'] | 1197 return GetDefaultTryConfigs(['mac_rel']) + [ |
| 1198 ('mac', set(['compile']))] |
1038 if all(re.search('(^|[/_])win[/_.]', f) for f in files): | 1199 if all(re.search('(^|[/_])win[/_.]', f) for f in files): |
1039 return ['win_rel', 'win7_aura', 'win:compile'] | 1200 return GetDefaultTryConfigs(['win_rel', 'win7_aura']) + [ |
| 1201 ('win', set(['compile']))] |
1040 if all(re.search('(^|[/_])android[/_.]', f) for f in files): | 1202 if all(re.search('(^|[/_])android[/_.]', f) for f in files): |
1041 return ['android_aosp', 'android_dbg', 'android_clang_dbg'] | 1203 return GetDefaultTryConfigs([ |
| 1204 'android_aosp', |
| 1205 'android_clang_dbg', |
| 1206 'android_dbg', |
| 1207 ]) |
1042 if all(re.search('^native_client_sdk', f) for f in files): | 1208 if all(re.search('^native_client_sdk', f) for f in files): |
1043 return ['linux_nacl_sdk', 'win_nacl_sdk', 'mac_nacl_sdk'] | 1209 return GetDefaultTryConfigs([ |
| 1210 'linux_nacl_sdk', |
| 1211 'mac_nacl_sdk', |
| 1212 'win_nacl_sdk', |
| 1213 ]) |
1044 if all(re.search('[/_]ios[/_.]', f) for f in files): | 1214 if all(re.search('[/_]ios[/_.]', f) for f in files): |
1045 return ['ios_rel_device', 'ios_dbg_simulator'] | 1215 return GetDefaultTryConfigs(['ios_rel_device', 'ios_dbg_simulator']) |
1046 | 1216 |
1047 trybots = [ | 1217 trybots = GetDefaultTryConfigs([ |
1048 'android_clang_dbg', | 1218 'android_clang_dbg', |
1049 'android_dbg', | 1219 'android_dbg', |
1050 'ios_dbg_simulator', | 1220 'ios_dbg_simulator', |
1051 'ios_rel_device', | 1221 'ios_rel_device', |
1052 'linux_asan', | 1222 'linux_asan', |
1053 'linux_aura', | 1223 'linux_aura', |
1054 'linux_chromeos', | 1224 'linux_chromeos', |
1055 'linux_clang:compile', | 1225 'linux_clang', |
1056 'linux_rel', | 1226 'linux_rel', |
| 1227 'mac', |
1057 'mac_rel', | 1228 'mac_rel', |
1058 'mac:compile', | 1229 'win', |
1059 'win7_aura', | 1230 'win7_aura', |
1060 'win_rel', | 1231 'win_rel', |
1061 'win:compile', | 1232 'win_x64_rel', |
1062 'win_x64_rel:base_unittests', | 1233 ]) |
1063 ] | |
1064 | 1234 |
1065 # Match things like path/aura/file.cc and path/file_aura.cc. | 1235 # Match things like path/aura/file.cc and path/file_aura.cc. |
1066 # Same for chromeos. | 1236 # Same for chromeos. |
1067 if any(re.search('[/_](aura|chromeos)', f) for f in files): | 1237 if any(re.search('[/_](aura|chromeos)', f) for f in files): |
1068 trybots += ['linux_chromeos_clang:compile', 'linux_chromeos_asan'] | 1238 trybots.extend(GetDefaultTryConfigs(['linux_chromeos_clang'])) |
| 1239 trybots.append(('linux_chromeos_asan', set(['defaulttests']))) |
1069 | 1240 |
1070 # If there are gyp changes to base, build, or chromeos, run a full cros build | 1241 # If there are gyp changes to base, build, or chromeos, run a full cros build |
1071 # in addition to the shorter linux_chromeos build. Changes to high level gyp | 1242 # in addition to the shorter linux_chromeos build. Changes to high level gyp |
1072 # files have a much higher chance of breaking the cros build, which is | 1243 # files have a much higher chance of breaking the cros build, which is |
1073 # differnt from the linux_chromeos build that most chrome developers test | 1244 # differnt from the linux_chromeos build that most chrome developers test |
1074 # with. | 1245 # with. |
1075 if any(re.search('^(base|build|chromeos).*\.gypi?$', f) for f in files): | 1246 if any(re.search('^(base|build|chromeos).*\.gypi?$', f) for f in files): |
1076 trybots += ['cros_x86'] | 1247 trybots.append(('cros_x86', set(['defaulttests']))) |
1077 | 1248 |
1078 # The AOSP bot doesn't build the chrome/ layer, so ignore any changes to it | 1249 # The AOSP bot doesn't build the chrome/ layer, so ignore any changes to it |
1079 # unless they're .gyp(i) files as changes to those files can break the gyp | 1250 # unless they're .gyp(i) files as changes to those files can break the gyp |
1080 # step on that bot. | 1251 # step on that bot. |
1081 if (not all(re.search('^chrome', f) for f in files) or | 1252 if (not all(re.search('^chrome', f) for f in files) or |
1082 any(re.search('\.gypi?$', f) for f in files)): | 1253 any(re.search('\.gypi?$', f) for f in files)): |
1083 trybots += ['android_aosp'] | 1254 trybots.extend(GetDefaultTryConfigs(['android_aosp'])) |
1084 | 1255 |
1085 return trybots | 1256 return trybots |
OLD | NEW |