Browse Source

metadata: run json schema validation for actuators + parameter metadata

master
Beat Küng 3 years ago committed by Daniel Agar
parent
commit
312d84ca23
  1. 6
      Tools/validate_json.py
  2. 5
      src/lib/metadata/CMakeLists.txt
  3. 5
      src/lib/parameters/CMakeLists.txt

6
Tools/validate_json.py

@ -5,6 +5,7 @@ https://json-schema.org/"""
import argparse import argparse
import sys import sys
import json import json
import os
try: try:
from jsonschema import validate from jsonschema import validate
@ -21,6 +22,8 @@ parser = argparse.ArgumentParser(description='Validate JSON file(s) against a sc
parser.add_argument('json_file', nargs='+', help='JSON config file(s)') parser.add_argument('json_file', nargs='+', help='JSON config file(s)')
parser.add_argument('--schema-file', type=str, action='store', parser.add_argument('--schema-file', type=str, action='store',
help='JSON schema file', required=True) help='JSON schema file', required=True)
parser.add_argument('--skip-if-no-schema', dest='skip_if_no_schema', action='store_true',
help='Skip test if schema file does not exist')
parser.add_argument('-v', '--verbose', dest='verbose', action='store_true', parser.add_argument('-v', '--verbose', dest='verbose', action='store_true',
help='Verbose Output') help='Verbose Output')
@ -29,6 +32,9 @@ schema_file = args.schema_file
json_files = args.json_file json_files = args.json_file
verbose = args.verbose verbose = args.verbose
if args.skip_if_no_schema and not os.path.isfile(schema_file):
sys.exit(0)
# load the schema # load the schema
with open(schema_file, 'r') as stream: with open(schema_file, 'r') as stream:
schema = json.load(stream) schema = json.load(stream)

5
src/lib/metadata/CMakeLists.txt

@ -46,6 +46,11 @@ add_custom_command(OUTPUT ${generated_actuators_metadata_file}
--compress --compress
--board ${PX4_BOARD} --board ${PX4_BOARD}
--output-file ${generated_actuators_metadata_file} --output-file ${generated_actuators_metadata_file}
COMMAND ${PYTHON_EXECUTABLE} ${PX4_SOURCE_DIR}/Tools/validate_json.py
--schema-file ${PX4_SOURCE_DIR}/src/modules/mavlink/mavlink/component_information/actuators.schema.json
${generated_actuators_metadata_file}
--skip-if-no-schema # mavlink submodule might not exist for current target if built in CI
#--verbose
DEPENDS DEPENDS
${module_config_files} ${module_config_files}
${PX4_SOURCE_DIR}/Tools/module_config/generate_actuators_metadata.py ${PX4_SOURCE_DIR}/Tools/module_config/generate_actuators_metadata.py

5
src/lib/parameters/CMakeLists.txt

@ -117,6 +117,11 @@ add_custom_command(OUTPUT ${parameters_xml} ${parameters_json} ${parameters_json
--overrides ${PARAM_DEFAULT_OVERRIDES} --overrides ${PARAM_DEFAULT_OVERRIDES}
--board ${PX4_BOARD} --board ${PX4_BOARD}
#--verbose #--verbose
COMMAND ${PYTHON_EXECUTABLE} ${PX4_SOURCE_DIR}/Tools/validate_json.py
--schema-file ${PX4_SOURCE_DIR}/src/modules/mavlink/mavlink/component_information/parameter.schema.json
${parameters_json}
--skip-if-no-schema # mavlink submodule might not exist for current target if built in CI
#--verbose
DEPENDS DEPENDS
${param_src_files} ${param_src_files}
${generated_serial_params_file} ${generated_serial_params_file}

Loading…
Cancel
Save