| Index: PRESUBMIT.py
|
| diff --git a/PRESUBMIT.py b/PRESUBMIT.py
|
| index 04cea10dffee5aed22c9e0372b8bae7fb6e03974..1615cf1e6bc6154da985b2a28c480362887fac5c 100644
|
| --- a/PRESUBMIT.py
|
| +++ b/PRESUBMIT.py
|
| @@ -783,9 +783,14 @@ def _CheckNoAbbreviationInPngFileName(input_api, output_api):
|
| return results
|
|
|
|
|
| -def _DepsFilesToCheck(re, changed_lines):
|
| +def _FilesToCheckForIncomingDeps(re, changed_lines):
|
| """Helper method for _CheckAddedDepsHaveTargetApprovals. Returns
|
| - a set of DEPS entries that we should look up."""
|
| + a set of DEPS entries that we should look up.
|
| +
|
| + For a directory (rather than a specific filename) we fake a path to
|
| + a specific filename by adding /DEPS. This is chosen as a file that
|
| + will seldom or never be subject to per-file include_rules.
|
| + """
|
| # We ignore deps entries on auto-generated directories.
|
| AUTO_GENERATED_DIRS = ['grit', 'jni']
|
|
|
| @@ -801,7 +806,10 @@ def _DepsFilesToCheck(re, changed_lines):
|
| if m:
|
| path = m.group(1)
|
| if path.split('/')[0] not in AUTO_GENERATED_DIRS:
|
| - results.add('%s/DEPS' % m.group(1))
|
| + if m.group(2):
|
| + results.add('%s%s' % (path, m.group(2)))
|
| + else:
|
| + results.add('%s/DEPS' % path)
|
| return results
|
|
|
|
|
| @@ -821,7 +829,8 @@ def _CheckAddedDepsHaveTargetApprovals(input_api, output_api):
|
| if not changed_lines:
|
| return []
|
|
|
| - virtual_depended_on_files = _DepsFilesToCheck(input_api.re, changed_lines)
|
| + virtual_depended_on_files = _FilesToCheckForIncomingDeps(input_api.re,
|
| + changed_lines)
|
| if not virtual_depended_on_files:
|
| return []
|
|
|
| @@ -850,12 +859,22 @@ def _CheckAddedDepsHaveTargetApprovals(input_api, output_api):
|
| reviewers_plus_owner.add(owner_email)
|
| missing_files = owners_db.files_not_covered_by(virtual_depended_on_files,
|
| reviewers_plus_owner)
|
| - unapproved_dependencies = ["'+%s'," % path[:-len('/DEPS')]
|
| +
|
| + # We strip the /DEPS part that was added by
|
| + # _FilesToCheckForIncomingDeps to fake a path to a file in a
|
| + # directory.
|
| + def StripDeps(path):
|
| + start_deps = path.rfind('/DEPS')
|
| + if start_deps != -1:
|
| + return path[:start_deps]
|
| + else:
|
| + return path
|
| + unapproved_dependencies = ["'+%s'," % StripDeps(path)
|
| for path in missing_files]
|
|
|
| if unapproved_dependencies:
|
| output_list = [
|
| - output('Missing LGTM from OWNERS of directories added to DEPS:\n %s' %
|
| + output('Missing LGTM from OWNERS of dependencies added to DEPS:\n %s' %
|
| '\n '.join(sorted(unapproved_dependencies)))]
|
| if not input_api.is_committing:
|
| suggested_owners = owners_db.reviewers_for(missing_files, owner_email)
|
|
|