# Copyright 2017 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
def _CommonChecks(input_api, output_api):
"""Performs common checks, which includes running pylint."""
results = []
results.extend(_CheckContribDir(input_api, output_api))
return results
def _CheckOwnershipForContribSubDir(sub_dir, input_api, output_api):
results = []
owner_file = input_api.os_path.join(sub_dir, 'OWNERS')
if not input_api.os_path.isfile(owner_file):
results.append(output_api.PresubmitError(
'%s must have an OWNERS file' % sub_dir))
return results
def _CheckContribDir(input_api, output_api):
"""Check that:
- tools/perf/contrib/ contains only directories (except for
__init__.py, README.md, and PRESUBMIT.py)
- Each directory under tools/perf/contrib has an OWNERS file.
"""
results = []
contrib_dir = input_api.PresubmitLocalPath()
init = input_api.os_path.join(contrib_dir, '__init__.py')
readme = input_api.os_path.join(contrib_dir, 'README.md')
presubmit = input_api.os_path.join(contrib_dir, 'PRESUBMIT.py')
invalid_contrib_files = []
for f in input_api.AffectedFiles(include_deletes=False):
file_path = f.AbsoluteLocalPath()
if (input_api.os_path.dirname(file_path) == contrib_dir and
not file_path in (init, readme, presubmit)):
invalid_contrib_files.append(file_path)
for f in input_api.os_listdir(contrib_dir):
if f == '__pycache__':
continue
path = input_api.os_path.join(contrib_dir, f)
if input_api.os_path.isdir(path):
results.extend(
_CheckOwnershipForContribSubDir(path, input_api, output_api))
if invalid_contrib_files:
results.append(
output_api.PresubmitError(
'You cannot add files to the top level of a contrib directory. '
'Please move these files to a sub directory:\n %s' %
'\n'.join(invalid_contrib_files)))
return results
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