Add presubmit warning to update references to (re)moved OWNERS files

file:// references in OWNERS files can become invalid when the file
is moved or deleted.

Bug: 1385205
Change-Id: Icf1a65b3d96d6ad298eac6645d8f692cb09dc75a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/4029143
Auto-Submit: Victor Vianna <victorvianna@google.com>
Reviewed-by: Josip Sokcevic <sokcevic@google.com>
Commit-Queue: Victor Vianna <victorvianna@google.com>
changes/43/4029143/2
Victor Hugo Vianna Silva 3 years ago committed by LUCI CQ
parent fadcbfdb27
commit fe46d759b5

@ -2081,3 +2081,21 @@ def CheckInclusiveLanguage(input_api, output_api,
output_api.PresubmitError('Banned non-inclusive language was used.\n' +
'\n'.join(errors)))
return result
def CheckUpdateOwnersFileReferences(input_api, output_api):
"""Checks whether an OWNERS file is being (re)moved and if so asks the
contributor to update any file:// references to it."""
files = []
# AffectedFiles() includes owner files, not AffectedSourceFiles().
for f in input_api.AffectedFiles():
# Moved files appear here as one deletion and one addition.
if f.LocalPath().endswith('OWNERS') and f.Action() == 'D':
files.append(f.LocalPath())
if not files:
return []
return [
output_api.PresubmitPromptWarning(
'OWNERS files being moved/removed, please update any file:// ' +
'references to them in other OWNERS files', files)
]

@ -241,5 +241,39 @@ class DescriptionChecksTest(unittest.TestCase):
self.assertEqual(0, len(errors))
class CheckUpdateOwnersFileReferences(unittest.TestCase):
def testShowsWarningIfDeleting(self):
input_api = MockInputApi()
input_api.files = [
MockFile('foo/OWNERS', [], [], action='D'),
]
results = presubmit_canned_checks.CheckUpdateOwnersFileReferences(
input_api, MockOutputApi())
self.assertEqual(1, len(results))
self.assertEqual('warning', results[0].type)
self.assertEqual(1, len(results[0].items))
def testShowsWarningIfMoving(self):
input_api = MockInputApi()
input_api.files = [
MockFile('new_directory/OWNERS', [], [], action='A'),
MockFile('old_directory/OWNERS', [], [], action='D'),
]
results = presubmit_canned_checks.CheckUpdateOwnersFileReferences(
input_api, MockOutputApi())
self.assertEqual(1, len(results))
self.assertEqual('warning', results[0].type)
self.assertEqual(1, len(results[0].items))
def testNoWarningIfAdding(self):
input_api = MockInputApi()
input_api.files = [
MockFile('foo/OWNERS', [], [], action='A'),
]
results = presubmit_canned_checks.CheckUpdateOwnersFileReferences(
input_api, MockOutputApi())
self.assertEqual(0, len(results))
if __name__ == '__main__':
unittest.main()

@ -79,7 +79,7 @@ class MockInputApi(object):
def CreateMockFileInPath(self, f_list):
self.os_path.exists = lambda x: x in f_list
def AffectedFiles(self, file_filter=None, include_deletes=False):
def AffectedFiles(self, file_filter=None, include_deletes=True):
for file in self.files: # pylint: disable=redefined-builtin
if file_filter and not file_filter(file):
continue

Loading…
Cancel
Save