PRESUBMIT: Add check for JSON parse errors + fix JSON

The PRESUBMIT code is basically a stripped-down copy of the code in
Chromium's src/PRESUBMIT.py.

BUG=chromium:498746
TESTED=I verified with 'git cl presubmit' that the existing
error was found. Then I ran it again after fixing it, with
presubmit passing.
NOTRY=True

Review URL: https://codereview.webrtc.org/1682393002

Cr-Commit-Position: refs/heads/master@{#11572}
This commit is contained in:
kjellander
2016-02-11 05:02:59 -08:00
committed by Commit bot
parent 8c66a00a37
commit 569cf942c0
3 changed files with 29 additions and 2 deletions

View File

@ -339,6 +339,31 @@ def _CheckUnwantedDependencies(input_api, output_api):
return results
def _CheckJSONParseErrors(input_api, output_api):
"""Check that JSON files do not contain syntax errors."""
def FilterFile(affected_file):
return input_api.os_path.splitext(affected_file.LocalPath())[1] == '.json'
def GetJSONParseError(input_api, filename):
try:
contents = input_api.ReadFile(filename)
input_api.json.loads(contents)
except ValueError as e:
return e
return None
results = []
for affected_file in input_api.AffectedFiles(
file_filter=FilterFile, include_deletes=False):
parse_error = GetJSONParseError(input_api,
affected_file.AbsoluteLocalPath())
if parse_error:
results.append(output_api.PresubmitError('%s could not be parsed: %s' %
(affected_file.LocalPath(), parse_error)))
return results
def _RunPythonTests(input_api, output_api):
def join(*args):
return input_api.os_path.join(input_api.PresubmitLocalPath(), *args)
@ -403,6 +428,7 @@ def _CommonChecks(input_api, output_api):
'W0232', # Class has no __init__ method
],
pylintrc='pylintrc'))
# WebRTC can't use the presubmit_canned_checks.PanProjectChecks function since
# we need to have different license checks in talk/ and webrtc/ directories.
# Instead, hand-picked checks are included below.
@ -423,6 +449,7 @@ def _CommonChecks(input_api, output_api):
results.extend(_CheckNoFRIEND_TEST(input_api, output_api))
results.extend(_CheckGypChanges(input_api, output_api))
results.extend(_CheckUnwantedDependencies(input_api, output_api))
results.extend(_CheckJSONParseErrors(input_api, output_api))
results.extend(_RunPythonTests(input_api, output_api))
return results

View File

@ -20,6 +20,6 @@
"include": "common_tests.json",
"device type": "iPhone 5s",
"os": "9.0"
},
}
]
}

View File

@ -20,6 +20,6 @@
"include": "common_tests.json",
"device type": "iPhone 5s",
"os": "9.0"
},
}
]
}