12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)# Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)# found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)"""Top-level presubmit script for bisect trybot. 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)details on the presubmit API built into gcl. 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)""" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import imp 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)def _ExamineBisectConfigFile(input_api, output_api): 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for f in input_api.AffectedFiles(): 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if not f.LocalPath().endswith('run-bisect-perf-regression.cfg'): 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) continue 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) try: 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cfg_file = imp.load_source('config', 'run-bisect-perf-regression.cfg') 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for k, v in cfg_file.config.iteritems(): 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if v: 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return f.LocalPath() 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) except (IOError, AttributeError, TypeError): 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return f.LocalPath() 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return None 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)def _CheckNoChangesToBisectConfigFile(input_api, output_api): 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) results = _ExamineBisectConfigFile(input_api, output_api) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if results: 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return [output_api.PresubmitError( 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 'The bisection config file should only contain a config dict with ' 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 'empty fields. Changes to this file should never be submitted.', 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) items=[results])] 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return [] 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)def CommonChecks(input_api, output_api): 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) results = [] 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) results.extend(_CheckNoChangesToBisectConfigFile(input_api, output_api)) 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return results 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)def CheckChangeOnUpload(input_api, output_api): 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return CommonChecks(input_api, output_api) 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)def CheckChangeOnCommit(input_api, output_api): 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return CommonChecks(input_api, output_api) 49