# Copyright 2012 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. """Presubmit script for changes affecting tools/perf/. See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for more details about the presubmit API built into gcl (and git-cl). """ import os import sys PYLINT_BLACKLIST = [] PYLINT_DISABLED_WARNINGS = [ 'R0923', # Interface not implemented 'R0201', # Method could be a function 'E1101', # Non-existent member is accessed. ] def _CommonChecks(input_api, output_api): """Performs common checks, which includes running pylint.""" results = [] old_sys_path = sys.path try: # Modules in tools/perf depend on telemetry. sys.path = [os.path.join(os.pardir, 'telemetry')] + sys.path results.extend(input_api.canned_checks.RunPylint( input_api, output_api, black_list=PYLINT_BLACKLIST, disabled_warnings=PYLINT_DISABLED_WARNINGS)) results.extend(_CheckJson(input_api, output_api)) finally: sys.path = old_sys_path return results def _CheckJson(input_api, output_api): """Checks whether JSON files in this change can be parsed.""" for affected_file in input_api.AffectedFiles(include_deletes=False): filename = affected_file.AbsoluteLocalPath() if os.path.splitext(filename)[1] != '.json': continue try: input_api.json.load(open(filename)) except ValueError: return [output_api.PresubmitError('Error parsing JSON in %s!' % filename)] return [] def CheckChangeOnUpload(input_api, output_api): report = [] report.extend(_CommonChecks(input_api, output_api)) return report def CheckChangeOnCommit(input_api, output_api): report = [] report.extend(_CommonChecks(input_api, output_api)) return report