[fiddle] Add PRESUBMIT rule to run tools/fiddle/make_all_examples_cpp.py

It will run this only if it detected a change to docs/examples
and runs fairly quickly.

Hopefully it avoids future bitrot like:
https://skia-review.googlesource.com/c/skia/+/423956

Change-Id: I8c6a54faa3a14dfb53260e03d4e6cc61e84b76cc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/423976
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
This commit is contained in:
Kevin Lubick 2021-07-01 11:03:36 -04:00
parent 2d1b7165a4
commit 2cd8067113

View File

@ -249,6 +249,29 @@ def _CheckDEPSValid(input_api, output_api):
return results
def _RegenerateAllExamplesCPP(input_api, output_api):
"""Regenerates all_examples.cpp if an example was added or deleted."""
if not any(f.LocalPath().startswith('docs/examples/')
for f in input_api.AffectedFiles()):
return []
command_str = 'tools/fiddle/make_all_examples_cpp.py'
cmd = ['python', command_str]
if 0 != subprocess.call(cmd):
return [output_api.PresubmitError('`%s` failed' % ' '.join(cmd))]
results = []
git_diff_output = input_api.subprocess.check_output(
['git', 'diff', '--no-ext-diff'])
if git_diff_output:
results += [output_api.PresubmitError(
'Diffs found after running "%s":\n\n%s\n'
'Please commit or discard the above changes.' % (
command_str,
git_diff_output,
)
)]
return results
def _CommonChecks(input_api, output_api):
"""Presubmit checks common to upload and commit."""
results = []
@ -276,6 +299,7 @@ def _CommonChecks(input_api, output_api):
results.extend(_CheckIncludesFormatted(input_api, output_api))
results.extend(_CheckGNFormatted(input_api, output_api))
results.extend(_CheckGitConflictMarkers(input_api, output_api))
results.extend(_RegenerateAllExamplesCPP(input_api, output_api))
return results