Home | History | Annotate | Download | only in Tools
      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
      3 # found in the LICENSE file.
      4 
      5 """Top-level presubmit script for bisect/perf trybot.
      6 
      7 See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for
      8 details on the presubmit API built into gcl.
      9 """
     10 
     11 import imp
     12 import os
     13 
     14 
     15 def _ExamineConfigFiles(input_api):
     16     for f in input_api.AffectedFiles():
     17         if (not f.LocalPath().endswith('run-perf-test.cfg')):
     18             continue
     19 
     20         try:
     21             cfg_file = imp.load_source('config', os.path.basename(f.LocalPath()))
     22 
     23             for k, v in cfg_file.config.iteritems():
     24                 if v:
     25                     return f.LocalPath()
     26         except (IOError, AttributeError, TypeError):
     27             return f.LocalPath()
     28 
     29     return None
     30 
     31 
     32 def _CheckNoChangesToBisectConfigFile(input_api, output_api):
     33     results = _ExamineConfigFiles(input_api)
     34     if results:
     35         return [output_api.PresubmitError(
     36             'The perf try config file should only contain a config dict with '
     37             'empty fields. Changes to this file should never be submitted.',
     38             items=[results])]
     39 
     40     return []
     41 
     42 
     43 def CommonChecks(input_api, output_api):
     44     results = []
     45     results.extend(_CheckNoChangesToBisectConfigFile(input_api, output_api))
     46     return results
     47 
     48 
     49 def CheckChangeOnUpload(input_api, output_api):
     50     return CommonChecks(input_api, output_api)
     51 
     52 
     53 def CheckChangeOnCommit(input_api, output_api):
     54     return CommonChecks(input_api, output_api)
     55