aboutsummaryrefslogtreecommitdiffhomepage
path: root/PRESUBMIT.py
diff options
context:
space:
mode:
authorGravatar Ben Wagner <bungeman@google.com>2018-02-09 17:41:20 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-02-12 16:32:12 +0000
commitcf42e9829768ba711e084e0d86f06ea32ff30d8b (patch)
tree5b02cc837f07514f9bb18810c55a2203a76fdb0f /PRESUBMIT.py
parent8bb40837da773570ac80037405b8499e9f43e01d (diff)
Presubmit that modified json files are valid json.
This prevents adding invalid site METADATA files which skia.org will silently ignore. Change-Id: I8dfc3a74ddb52b0e0ca5146717e6132d7ee867b0 Reviewed-on: https://skia-review.googlesource.com/106204 Commit-Queue: Ben Wagner <bungeman@google.com> Reviewed-by: Cary Clark <caryclark@google.com> Reviewed-by: Ravi Mistry <rmistry@google.com>
Diffstat (limited to 'PRESUBMIT.py')
-rw-r--r--PRESUBMIT.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index 487da42ac3..0a2aa8e267 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -109,6 +109,29 @@ def _PythonChecks(input_api, output_api):
white_list=affected_python_files)
+def _JsonChecks(input_api, output_api):
+ """Run checks on any modified json files."""
+ failing_files = []
+ for affected_file in input_api.AffectedFiles(None):
+ affected_file_path = affected_file.LocalPath()
+ is_json = affected_file_path.endswith('.json')
+ is_metadata = (affected_file_path.startswith('site/') and
+ affected_file_path.endswith('/METADATA'))
+ if is_json or is_metadata:
+ try:
+ input_api.json.load(open(affected_file_path, 'r'))
+ except ValueError:
+ failing_files.append(affected_file_path)
+
+ results = []
+ if failing_files:
+ results.append(
+ output_api.PresubmitError(
+ 'The following files contain invalid json:\n%s\n\n' %
+ '\n'.join(failing_files)))
+ return results
+
+
def _IfDefChecks(input_api, output_api):
"""Ensures if/ifdef are not before includes. See skbug/3362 for details."""
comment_block_start_pattern = re.compile('^\s*\/\*.*$')
@@ -236,6 +259,7 @@ def _CommonChecks(input_api, output_api):
input_api.canned_checks.CheckChangeHasNoStrayWhitespace(
input_api, output_api, source_file_filter=sources))
results.extend(_PythonChecks(input_api, output_api))
+ results.extend(_JsonChecks(input_api, output_api))
results.extend(_IfDefChecks(input_api, output_api))
results.extend(_CopyrightChecks(input_api, output_api,
source_file_filter=sources))