X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2Fmodel%2Fvalidate.py;h=47948addebb6d62b63b2166afb38b08853a0b36a;hb=8609df3a0e9f5510a5485d100ed03a40b051c199;hp=c441936ac88bcd6688b6142d87ccec47bac35331;hpb=01d8f262afc567c3d49a23c3cb2cdeaced8a6887;p=csit.git 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: