#!/usr/bin/python -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()