- add sources.
[platform/framework/web/crosswalk.git] / src / tools / PRESUBMIT.py
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 def _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
31 def _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
41 def CommonChecks(input_api, output_api):
42   results = []
43   results.extend(_CheckNoChangesToBisectConfigFile(input_api, output_api))
44   return results
45
46 def CheckChangeOnUpload(input_api, output_api):
47   return CommonChecks(input_api, output_api)
48
49 def CheckChangeOnCommit(input_api, output_api):
50   return CommonChecks(input_api, output_api)