blob: 86f75f0fe93129d34b5076df49bae16c35e8cc53 [file] [log] [blame]
# Copyright 2017 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.
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 to make sure that:
1) tools/perf/contrib/ contains only directories, except __init__.py,
README.md, and PRESUBMIT.py file
2) Every subdirectory in tools/perf/contrib/ must have an OWNERS file with
at least two OWNERS.
"""
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):
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 top level of contrib directory. '
'Please moves 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