OLD | NEW |
1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2013 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 | 5 |
6 """Top-level presubmit script for Skia. | 6 """Top-level presubmit script for Skia. |
7 | 7 |
8 See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts | 8 See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts |
9 for more details about the presubmit API built into gcl. | 9 for more details about the presubmit API built into gcl. |
10 """ | 10 """ |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
160 """Make sure `{dm,nanobench}_flags.py test` passes if modified.""" | 160 """Make sure `{dm,nanobench}_flags.py test` passes if modified.""" |
161 results = [] | 161 results = [] |
162 sources = lambda x: ('dm_flags.py' in x.LocalPath() or | 162 sources = lambda x: ('dm_flags.py' in x.LocalPath() or |
163 'nanobench_flags.py' in x.LocalPath()) | 163 'nanobench_flags.py' in x.LocalPath()) |
164 for f in input_api.AffectedSourceFiles(sources): | 164 for f in input_api.AffectedSourceFiles(sources): |
165 if 0 != subprocess.call(['python', f.LocalPath(), 'test']): | 165 if 0 != subprocess.call(['python', f.LocalPath(), 'test']): |
166 results.append(output_api.PresubmitError('`python %s test` failed' % f)) | 166 results.append(output_api.PresubmitError('`python %s test` failed' % f)) |
167 return results | 167 return results |
168 | 168 |
169 | 169 |
170 def _RecipeSimulationTest(input_api, output_api): | 170 def _InfraTests(input_api, output_api): |
171 """Run the recipe simulation test.""" | 171 """Run the infra tests.""" |
172 results = [] | 172 results = [] |
173 if not any(f.LocalPath().startswith('infra') | 173 if not any(f.LocalPath().startswith('infra') |
174 for f in input_api.AffectedFiles()): | 174 for f in input_api.AffectedFiles()): |
175 return results | 175 return results |
176 | 176 |
177 recipes_py = os.path.join('infra', 'bots', 'recipes.py') | 177 cmd = ['python', os.path.join('infra', 'bots', 'infra_tests.py')] |
178 cmd = ['python', recipes_py, 'simulation_test'] | |
179 try: | 178 try: |
180 subprocess.check_output(cmd) | 179 subprocess.check_output(cmd) |
181 except subprocess.CalledProcessError as e: | 180 except subprocess.CalledProcessError as e: |
182 results.append(output_api.PresubmitError( | |
183 '`%s` failed:\n%s' % (' '.join(cmd), e.output))) | |
184 return results | |
185 | |
186 | |
187 def _GenTasksTest(input_api, output_api): | |
188 """Run gen_tasks.go test.""" | |
189 results = [] | |
190 if not any(f.LocalPath().startswith('infra') | |
191 for f in input_api.AffectedFiles()): | |
192 return results | |
193 | |
194 gen_tasks = os.path.join('infra', 'bots', 'gen_tasks.go') | |
195 cmd = ['go', 'run', gen_tasks, '--test'] | |
196 try: | |
197 subprocess.check_output(cmd) | |
198 except subprocess.CalledProcessError as e: | |
199 results.append(output_api.PresubmitError( | 181 results.append(output_api.PresubmitError( |
200 '`%s` failed:\n%s' % (' '.join(cmd), e.output))) | 182 '`%s` failed:\n%s' % (' '.join(cmd), e.output))) |
201 return results | 183 return results |
202 | 184 |
203 | 185 |
204 def _CheckGNFormatted(input_api, output_api): | 186 def _CheckGNFormatted(input_api, output_api): |
205 """Make sure any .gn files we're changing have been formatted.""" | 187 """Make sure any .gn files we're changing have been formatted.""" |
206 results = [] | 188 results = [] |
207 for f in input_api.AffectedFiles(): | 189 for f in input_api.AffectedFiles(): |
208 if not f.LocalPath().endswith('.gn'): | 190 if not f.LocalPath().endswith('.gn'): |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
247 def CheckChangeOnUpload(input_api, output_api): | 229 def CheckChangeOnUpload(input_api, output_api): |
248 """Presubmit checks for the change on upload. | 230 """Presubmit checks for the change on upload. |
249 | 231 |
250 The following are the presubmit checks: | 232 The following are the presubmit checks: |
251 * Check change has one and only one EOL. | 233 * Check change has one and only one EOL. |
252 """ | 234 """ |
253 results = [] | 235 results = [] |
254 results.extend(_CommonChecks(input_api, output_api)) | 236 results.extend(_CommonChecks(input_api, output_api)) |
255 # Run on upload, not commit, since the presubmit bot apparently doesn't have | 237 # Run on upload, not commit, since the presubmit bot apparently doesn't have |
256 # coverage or Go installed. | 238 # coverage or Go installed. |
257 results.extend(_RecipeSimulationTest(input_api, output_api)) | 239 results.extend(_InfraTests(input_api, output_api)) |
258 results.extend(_GenTasksTest(input_api, output_api)) | |
259 | 240 |
260 results.extend(_CheckGNFormatted(input_api, output_api)) | 241 results.extend(_CheckGNFormatted(input_api, output_api)) |
261 return results | 242 return results |
262 | 243 |
263 | 244 |
264 def _CheckTreeStatus(input_api, output_api, json_url): | 245 def _CheckTreeStatus(input_api, output_api, json_url): |
265 """Check whether to allow commit. | 246 """Check whether to allow commit. |
266 | 247 |
267 Args: | 248 Args: |
268 input_api: input related apis. | 249 input_api: input related apis. |
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
643 state and an error if it is in 'Closed' state. | 624 state and an error if it is in 'Closed' state. |
644 """ | 625 """ |
645 results = [] | 626 results = [] |
646 results.extend(_CommonChecks(input_api, output_api)) | 627 results.extend(_CommonChecks(input_api, output_api)) |
647 results.extend( | 628 results.extend( |
648 _CheckTreeStatus(input_api, output_api, json_url=( | 629 _CheckTreeStatus(input_api, output_api, json_url=( |
649 SKIA_TREE_STATUS_URL + '/banner-status?format=json'))) | 630 SKIA_TREE_STATUS_URL + '/banner-status?format=json'))) |
650 results.extend(_CheckLGTMsForPublicAPI(input_api, output_api)) | 631 results.extend(_CheckLGTMsForPublicAPI(input_api, output_api)) |
651 results.extend(_CheckOwnerIsInAuthorsFile(input_api, output_api)) | 632 results.extend(_CheckOwnerIsInAuthorsFile(input_api, output_api)) |
652 return results | 633 return results |
OLD | NEW |