Index: tools/PRESUBMIT.py |
diff --git a/tools/PRESUBMIT.py b/tools/PRESUBMIT.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..01572314c06b789f75696cab12e3b91a9cb309fe |
--- /dev/null |
+++ b/tools/PRESUBMIT.py |
@@ -0,0 +1,48 @@ |
+# Copyright (c) 2013 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+"""Top-level presubmit script for bisect trybot. |
+ |
+See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for |
+details on the presubmit API built into gcl. |
+""" |
+ |
+import imp |
+ |
+def _ExamineBisectConfigFile(input_api, output_api): |
+ for f in input_api.AffectedFiles(): |
+ if not f.LocalPath().endswith('run-bisect-perf-regression.cfg'): |
+ continue |
+ |
+ try: |
+ cfg_file = imp.load_source('config', 'run-bisect-perf-regression.cfg') |
+ |
+ for k, v in cfg_file.config.iteritems(): |
+ if v: |
+ return f.LocalPath() |
+ except (IOError, AttributeError, TypeError): |
+ return f.LocalPath() |
+ |
+ return None |
+ |
+def _CheckNoChangesToBisectConfigFile(input_api, output_api): |
+ results = _ExamineBisectConfigFile(input_api, output_api) |
+ if results: |
+ return [output_api.PresubmitError( |
+ 'The bisection config file should only contain a config dict with ' |
+ 'empty fields. Changes to this file should never be submitted.', |
+ items=[results])] |
+ |
+ return [] |
+ |
+def CommonChecks(input_api, output_api): |
+ results = [] |
+ results.extend(_CheckNoChangesToBisectConfigFile(input_api, output_api)) |
+ return results |
+ |
+def CheckChangeOnUpload(input_api, output_api): |
+ return CommonChecks(input_api, output_api) |
+ |
+def CheckChangeOnCommit(input_api, output_api): |
+ return CommonChecks(input_api, output_api) |