44 lines
1.4 KiB
Python
Executable File
44 lines
1.4 KiB
Python
Executable File
#!/usr/bin/python2 -u
|
|
# Copyright 2016 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
"""
|
|
Check if a json file is valid.
|
|
|
|
This wrapper is invoked through autotest's PRESUBMIT.cfg for every commit
|
|
that edits a json file.
|
|
"""
|
|
|
|
import json
|
|
import os
|
|
|
|
|
|
class InvalidJsonFile(Exception):
|
|
"""Exception to raise when a json file can't be parsed."""
|
|
|
|
|
|
def main():
|
|
"""Check if all json files that are a part of this commit are valid."""
|
|
file_list = os.environ.get('PRESUBMIT_FILES')
|
|
if file_list is None:
|
|
raise InvalidJsonFile('Expected a list of presubmit files in '
|
|
'the PRESUBMIT_FILES environment variable.')
|
|
|
|
for f in file_list.split():
|
|
if f.lower().endswith('.json'):
|
|
try:
|
|
with open(f) as json_file:
|
|
json.load(json_file)
|
|
except ValueError:
|
|
# Re-raise the error to include the file path.
|
|
print ('Presubmit check `check_json_file` failed. If the file '
|
|
'is meant to be malformated, please do not name it as a '
|
|
'json file, or you will have to upload the CL using '
|
|
'--no-verify')
|
|
raise InvalidJsonFile('Invalid json file: %s' % f)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|