config: output warnings for validation error/warnings in non-affected files

R=iannucci, sokcevic, yuanjunh

Bug: 1449933
Change-Id: I863c55f5a12da103b4167c8cf9a1aac02962838f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/4602126
Reviewed-by: Yuanjun Huang <yuanjunh@google.com>
Reviewed-by: Robbie Iannucci <iannucci@chromium.org>
Commit-Queue: Yiwei Zhang <yiwzhang@google.com>
Reviewed-by: Josip Sokcevic <sokcevic@chromium.org>
changes/26/4602126/3
Yiwei Zhang 2 years ago committed by LUCI CQ
parent 422f4d59a4
commit fbb06cdb23

@ -1918,6 +1918,7 @@ def CheckChangedLUCIConfigs(input_api, output_api):
outputs = [] outputs = []
lucicfg = 'lucicfg' if not input_api.is_windows else 'lucicfg.bat' lucicfg = 'lucicfg' if not input_api.is_windows else 'lucicfg.bat'
log_level = 'debug' if input_api.verbose else 'warning' log_level = 'debug' if input_api.verbose else 'warning'
repo_root = input_api.change.RepositoryRoot()
for d, fileSet in dir_to_fileSet.items(): for d, fileSet in dir_to_fileSet.items():
config_set = dir_to_config_set[d] config_set = dir_to_config_set[d]
with input_api.CreateTemporaryFile() as f: with input_api.CreateTemporaryFile() as f:
@ -1931,7 +1932,7 @@ def CheckChangedLUCIConfigs(input_api, output_api):
cmd, cmd,
stderr=input_api.subprocess.PIPE, stderr=input_api.subprocess.PIPE,
shell=input_api.is_windows, # to resolve *.bat shell=input_api.is_windows, # to resolve *.bat
cwd=input_api.change.RepositoryRoot(), cwd=repo_root,
) )
logging.debug('running %s\nSTDOUT:\n%s\nSTDERR:\n%s', cmd, out[0], out[1]) logging.debug('running %s\nSTDOUT:\n%s\nSTDERR:\n%s', cmd, out[0], out[1])
try: try:
@ -1943,12 +1944,11 @@ def CheckChangedLUCIConfigs(input_api, output_api):
else: else:
result = result.get('result', None) result = result.get('result', None)
if result: if result:
non_affected_file_msg_count = 0
for validation_result in (result.get('validation', None) or []): for validation_result in (result.get('validation', None) or []):
for msg in (validation_result.get('messages', None) or []): for msg in (validation_result.get('messages', None) or []):
if d != '.' and msg['path'] not in fileSet: if d != '.' and msg['path'] not in fileSet:
# TODO(yiwzhang): This is the message from non-affected file. non_affected_file_msg_count += 1
# Output presubmit warning for those files if needed in the
# future.
continue continue
sev = msg['severity'] sev = msg['severity']
if sev == 'WARNING': if sev == 'WARNING':
@ -1960,6 +1960,17 @@ def CheckChangedLUCIConfigs(input_api, output_api):
outputs.append( outputs.append(
out_f('Config validation for file(%s): %s' % out_f('Config validation for file(%s): %s' %
(msg['path'], msg['text']))) (msg['path'], msg['text'])))
if non_affected_file_msg_count:
reproduce_cmd = [
lucicfg, 'validate',
repo_root if d == '.' else input_api.os_path.join(repo_root, d),
'-config-set', config_set
]
outputs.append(
output_api.PresubmitPromptWarning(
'Found %d additional errors/warnings in files that are not '
'modified, run `%s` to reveal them' %
(non_affected_file_msg_count, ' '.join(reproduce_cmd))))
return outputs return outputs

@ -2219,9 +2219,14 @@ class CannedChecksUnittest(PresubmitTestsBase):
results = presubmit_canned_checks.CheckChangedLUCIConfigs( results = presubmit_canned_checks.CheckChangedLUCIConfigs(
input_api, presubmit.OutputApi) input_api, presubmit.OutputApi)
self.assertEqual(len(results), 1) self.assertEqual(len(results), 2)
self.assertEqual(results[0].json_format()['message'], self.assertEqual(results[0].json_format()['message'],
"Config validation for file(bar.cfg): deadbeef") "Config validation for file(bar.cfg): deadbeef")
self.assertEqual(
results[1].json_format()['message'],
"Found 1 additional errors/warnings in files that are not modified,"
" run `lucicfg validate %s%sgenerated -config-set "
"project/deadbeef` to reveal them" % (self.fake_root_dir, self._OS_SEP))
subprocess.Popen.assert_called_once_with([ subprocess.Popen.assert_called_once_with([
'lucicfg' + ('.bat' if input_api.is_windows else ''), 'lucicfg' + ('.bat' if input_api.is_windows else ''),
'validate', 'validate',

Loading…
Cancel
Save