Mercurial > hgrepos > Python > libs > data-schema
diff tests/test_schema.py @ 29:68286d27f27d
FIX: Allow customization of the data stream loader (get_data_stream())
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Sat, 08 Jul 2023 16:10:36 +0200 |
| parents | db3491e1b590 |
| children | 2e7c08c356ee |
line wrap: on
line diff
--- a/tests/test_schema.py Sat Jul 08 13:51:20 2023 +0200 +++ b/tests/test_schema.py Sat Jul 08 16:10:36 2023 +0200 @@ -1,6 +1,7 @@ import copy import datetime +import functools import re import unittest @@ -141,6 +142,7 @@ schema = object() settings = data_schema.ValidationSettings( skip_keys=[], break_on_keynames_problems=True, + data_stream_loader=None, schema_loader=data_schema.default_schema_loader) ctx = data_schema.Context( None, root_object=obj, root_schema=schema, settings=settings) @@ -154,6 +156,7 @@ schema = object() settings = data_schema.ValidationSettings( skip_keys=[], break_on_keynames_problems=True, + data_stream_loader=None, schema_loader=data_schema.default_schema_loader) ctx = data_schema.Context( None, root_object=obj, root_schema=schema, settings=settings) @@ -170,6 +173,7 @@ def test_root_context_init_root_empty(self): settings = data_schema.ValidationSettings( skip_keys=[], break_on_keynames_problems=True, + data_stream_loader=None, schema_loader=data_schema.default_schema_loader) self.assertRaises( TypeError, @@ -181,6 +185,7 @@ def test_root_context_init_only_one_of_key_index(self): settings = data_schema.ValidationSettings( skip_keys=[], break_on_keynames_problems=True, + data_stream_loader=None, schema_loader=data_schema.default_schema_loader) root = data_schema.Context(None, settings=settings) self.assertRaises( @@ -190,6 +195,7 @@ def test_root_context_init_exactly_one(self): settings = data_schema.ValidationSettings( skip_keys=[], break_on_keynames_problems=True, + data_stream_loader=None, schema_loader=data_schema.default_schema_loader) root = data_schema.Context(None, settings=settings) self.assertRaises(TypeError, data_schema.Context, root) @@ -197,6 +203,7 @@ def test_nonroot_rootobj_schema(self): settings = data_schema.ValidationSettings( skip_keys=[], break_on_keynames_problems=True, + data_stream_loader=None, schema_loader=data_schema.default_schema_loader) obj = object() schema = object() @@ -214,6 +221,7 @@ def test_str(self): settings = data_schema.ValidationSettings( skip_keys=[], break_on_keynames_problems=True, + data_stream_loader=None, schema_loader=data_schema.default_schema_loader) root = data_schema.Context(None, settings=settings) ctx1 = data_schema.Context(root, key="key1") @@ -224,6 +232,7 @@ def test_repr(self): settings = data_schema.ValidationSettings( skip_keys=[], break_on_keynames_problems=True, + data_stream_loader=None, schema_loader=data_schema.default_schema_loader) root = data_schema.Context(None, settings=settings) ctx1 = data_schema.Context(root, key="key1") @@ -234,6 +243,7 @@ def test_root(self): settings = data_schema.ValidationSettings( skip_keys=[], break_on_keynames_problems=True, + data_stream_loader=None, schema_loader=data_schema.default_schema_loader) root = data_schema.Context(None, settings=settings) self.assertTrue(root.is_root) @@ -254,9 +264,11 @@ def test_extra_settings_in_between(self): settings = data_schema.ValidationSettings( skip_keys=[], break_on_keynames_problems=True, + data_stream_loader=None, schema_loader=data_schema.default_schema_loader) settings2 = data_schema.ValidationSettings( skip_keys=[], break_on_keynames_problems=True, + data_stream_loader=None, schema_loader=data_schema.default_schema_loader) root = data_schema.Context(None, settings=settings) self.assertTrue(root.is_root) @@ -277,6 +289,7 @@ def test_key_xor_index(self): settings = data_schema.ValidationSettings( skip_keys=[], break_on_keynames_problems=True, + data_stream_loader=None, schema_loader=data_schema.default_schema_loader) root = data_schema.Context(None, settings=settings) self.assertRaises( @@ -289,6 +302,7 @@ def test_keyindex_requires_key(self): settings = data_schema.ValidationSettings( skip_keys=[], break_on_keynames_problems=True, + data_stream_loader=None, schema_loader=data_schema.default_schema_loader) self.assertRaises( ValueError, @@ -1250,6 +1264,7 @@ def test_raise_no_schema_loader_available(self): settings = data_schema.ValidationSettings( skip_keys=[], break_on_keynames_problems=True, + data_stream_loader=None, schema_loader=None) schema = data_schema._Schema( None, True, {"$ref": "schema:file:/tmp/xxx#/"}) @@ -1264,9 +1279,12 @@ def test_raise_schema_loader_available_but_invalid_basedir(self): settings = data_schema.ValidationSettings( skip_keys=[], break_on_keynames_problems=True, + data_stream_loader=None, schema_loader=data_schema.default_schema_loader) schema = data_schema._Schema( - None, True, {"$ref": "schema:file:/tmp/xxx#/"}) + None, True, { + "$ref": "schema:" + _config.FILEURI_PREFIX + "test1.schema.yml#/" + }) ctx = data_schema.Context( None, root_schema=schema, settings=settings) self.assertRaises( @@ -1275,6 +1293,55 @@ schema, ctx) + def test_schema_loader_and_data_stream_available_file(self): + dsl = functools.partial( + data_schema.util.get_data_stream, + basedir=_config.PROJECTDIR) + settings = data_schema.ValidationSettings( + skip_keys=[], break_on_keynames_problems=True, + data_stream_loader=dsl, + schema_loader=data_schema.default_schema_loader) + schema = data_schema._Schema( + None, True, { + "$ref": "schema:" + _config.FILEURI_PREFIX + "test1.schema.yml#/" + }) + ctx = data_schema.Context( + None, root_schema=schema, settings=settings) + data_schema.process_schema_references(schema, ctx) + + def test_schema_loader_and_data_stream_available_package_explicit_subdir(self): + dsl = functools.partial( + data_schema.util.get_data_stream, + basedir=_config.PROJECTDIR, + packagesubdir=None) + settings = data_schema.ValidationSettings( + skip_keys=[], break_on_keynames_problems=True, + data_stream_loader=dsl, + schema_loader=data_schema.default_schema_loader) + schema = data_schema._Schema( + None, True, { + "$ref": "schema:data:testschematalib.packagedata:test2.schema.yml#/" + }) + ctx = data_schema.Context( + None, root_schema=schema, settings=settings) + data_schema.process_schema_references(schema, ctx) + + def test_schema_loader_and_data_stream_available_package_implicit_subdir(self): + dsl = functools.partial( + data_schema.util.get_data_stream, + basedir=_config.PROJECTDIR) + settings = data_schema.ValidationSettings( + skip_keys=[], break_on_keynames_problems=True, + data_stream_loader=dsl, + schema_loader=data_schema.default_schema_loader) + schema = data_schema._Schema( + None, True, { + "$ref": "schema:data:testschematalib:test2.schema.yml#/" + }) + ctx = data_schema.Context( + None, root_schema=schema, settings=settings) + data_schema.process_schema_references(schema, ctx) + def test_raise_if_scheme_ref_is_not_the_single_key(self): schema = data_schema._Schema( None, True, {"$ref": "schema:#/",
