diff options
Diffstat (limited to 'resources/libraries/python/model/validate.py')
-rw-r--r-- | resources/libraries/python/model/validate.py | 38 |
1 files changed, 13 insertions, 25 deletions
diff --git a/resources/libraries/python/model/validate.py b/resources/libraries/python/model/validate.py index c441936ac8..47948addeb 100644 --- a/resources/libraries/python/model/validate.py +++ b/resources/libraries/python/model/validate.py @@ -1,4 +1,4 @@ -# Copyright (c) 2021 Cisco and/or its affiliates. +# Copyright (c) 2023 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -19,27 +19,7 @@ Structure will probably change when we start validation mode file types. import json import jsonschema - - -def _get_validator(schema_path): - """Contruct validator with format checking enabled. - - Load json schema from disk. - Perform validation against meta-schema before returning. - - :param schema_path: Local filesystem path to .json file storing the schema. - :type schema_path: str - :returns: Instantiated validator class instance. - :rtype: jsonschema.validators.Validator - :raises RuntimeError: If the schema is not valid according its meta-schema. - """ - with open(schema_path, u"rt", encoding="utf-8") as file_in: - schema = json.load(file_in) - validator_class = jsonschema.validators.validator_for(schema) - validator_class.check_schema(schema) - fmt_checker = jsonschema.FormatChecker() - validator = validator_class(schema, format_checker=fmt_checker) - return validator +import yaml def get_validators(): @@ -51,9 +31,17 @@ def get_validators(): :rtype: Mapping[str, jsonschema.validators.Validator] :raises RuntimeError: If schemas are not readable or not valid. """ - relative_path = u"docs/model/current/schema/test_case.info.schema.json" + relative_path = "docs/model/current/schema/test_case.info.schema.yaml" # Robot is always started when CWD is CSIT_DIR. - validator = _get_validator(relative_path) + with open(relative_path, "rt", encoding="utf-8") as file_in: + schema = json.loads( + json.dumps(yaml.safe_load(file_in.read()), indent=2) + ) + validator_class = jsonschema.validators.validator_for(schema) + validator_class.check_schema(schema) + fmt_checker = jsonschema.FormatChecker() + validator = validator_class(schema, format_checker=fmt_checker) + return dict(tc_info=validator) @@ -66,7 +54,7 @@ def validate(file_path, validator): :type validator: jsonschema.validators.Validator :raises RuntimeError: If schema validation fails. """ - with open(file_path, u"rt", encoding="utf-8") as file_in: + with open(file_path, "rt", encoding="utf-8") as file_in: instance = json.load(file_in) error = jsonschema.exceptions.best_match(validator.iter_errors(instance)) if error is not None: |