• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
7See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for
8details on the presubmit API built into gcl.
9"""
10
11import imp
12import os
13
14def _ExamineConfigFiles(input_api):
15  for f in input_api.AffectedFiles():
16    if (not f.LocalPath().endswith('run-bisect-perf-regression.cfg') and
17        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
31def _CheckNoChangesToBisectConfigFile(input_api, output_api):
32  results = _ExamineConfigFiles(input_api)
33  if results:
34    return [output_api.PresubmitError(
35        'The bisection config file should only contain a config dict with '
36        'empty fields. Changes to this file should never be submitted.',
37        items=[results])]
38
39  return []
40
41def CommonChecks(input_api, output_api):
42  results = []
43  results.extend(_CheckNoChangesToBisectConfigFile(input_api, output_api))
44  return results
45
46def CheckChangeOnUpload(input_api, output_api):
47  return CommonChecks(input_api, output_api)
48
49def CheckChangeOnCommit(input_api, output_api):
50  return CommonChecks(input_api, output_api)
51