diff options
Diffstat (limited to 'tests/unittests/test_handler/test_schema.py')
| -rw-r--r-- | tests/unittests/test_handler/test_schema.py | 33 | 
1 files changed, 26 insertions, 7 deletions
diff --git a/tests/unittests/test_handler/test_schema.py b/tests/unittests/test_handler/test_schema.py index ae3838d8..071b98bc 100644 --- a/tests/unittests/test_handler/test_schema.py +++ b/tests/unittests/test_handler/test_schema.py @@ -1,5 +1,5 @@  # This file is part of cloud-init. See LICENSE file for license information. - +import cloudinit  from cloudinit.config.schema import (      CLOUD_CONFIG_HEADER, SchemaValidationError, annotated_cloudconfig_file,      get_schema_doc, get_schema, validate_cloudconfig_file, @@ -12,6 +12,7 @@ from copy import copy  import os  import pytest  from io import StringIO +from pathlib import Path  from textwrap import dedent  from yaml import safe_load @@ -114,13 +115,12 @@ class ValidateCloudConfigSchemaTest(CiTestCase):  class TestCloudConfigExamples: - -    SCHEMA = get_schema() -    PARAMS = [ +    schema = get_schema() +    params = [          (schema["id"], example) -        for schema in SCHEMA["allOf"] for example in schema["examples"]] +        for schema in schema["allOf"] for example in schema["examples"]] -    @pytest.mark.parametrize("schema_id,example", PARAMS) +    @pytest.mark.parametrize("schema_id,example", params)      @skipUnlessJsonSchema()      def test_validateconfig_schema_of_example(self, schema_id, example):          """ For a given example in a config module we test if it is valid @@ -128,7 +128,7 @@ class TestCloudConfigExamples:          """          config_load = safe_load(example)          validate_cloudconfig_schema( -            config_load, TestCloudConfigExamples.SCHEMA, strict=True) +            config_load, self.schema, strict=True)  class ValidateCloudConfigFileTest(CiTestCase): @@ -447,4 +447,23 @@ class CloudTestsIntegrationTest(CiTestCase):          if errors:              raise AssertionError(', '.join(errors)) + +def _get_schema_doc_examples(): +    examples_dir = Path( +        cloudinit.__file__).parent.parent / 'doc' / 'examples' +    assert examples_dir.is_dir() + +    all_text_files = (f for f in examples_dir.glob('cloud-config*.txt') +                      if not f.name.startswith('cloud-config-archive')) +    return all_text_files + + +class TestSchemaDocExamples: +    schema = get_schema() + +    @pytest.mark.parametrize("example_path", _get_schema_doc_examples()) +    @skipUnlessJsonSchema() +    def test_schema_doc_examples(self, example_path): +        validate_cloudconfig_file(str(example_path), self.schema) +  # vi: ts=4 expandtab syntax=python  | 
