1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
from pathlib import Path
import asdf
import pytest
import yaml
from asdf_standard._versioning import get_unstable_supported
def get_resources():
resources_root = Path(__file__).parent.parent / "resources"
if not get_unstable_supported():
resources_root /= "stable"
return {str(path.relative_to(resources_root)): path for path in resources_root.glob("**/*.yaml")}
RESOURCES = get_resources()
@pytest.mark.parametrize("resource", RESOURCES)
def test_resource(resource):
resource_path = RESOURCES[resource]
resource_manager = asdf.get_config().resource_manager
with resource_path.open("rb") as f:
resource_content = f.read()
resource = yaml.safe_load(resource_content)
if "version_map" not in str(resource_path.stem):
resource_uri = resource["id"]
assert resource_manager[resource_uri] == resource_content
def get_manifests():
manifests_root = Path(__file__).parent.parent / "resources" / "stable" / "manifests" / "asdf-format.org"
stable_manifests = {str(path.relative_to(manifests_root)): path for path in manifests_root.glob("**/*.yaml")}
if not get_unstable_supported():
return stable_manifests
unstable_manifests_root = Path(__file__).parent.parent / "resources" / "unstable" / "manifests" / "asdf-format.org"
return stable_manifests | {
str(path.relative_to(unstable_manifests_root)): path for path in unstable_manifests_root.glob("**/*.yaml")
}
MANIFESTS = get_manifests()
@pytest.mark.parametrize("manifest", MANIFESTS)
def test_manifest(manifest):
manifest_path = MANIFESTS[manifest]
resource_manager = asdf.get_config().resource_manager
with manifest_path.open("rb") as f:
manifest_content = f.read()
manifest = yaml.safe_load(manifest_content)
manifest_schema = asdf.schema.load_schema("asdf://asdf-format.org/core/schemas/extension_manifest-1.0.0")
# The manifest must be valid against its own schema:
asdf.schema.validate(manifest, schema=manifest_schema)
for tag_definition in manifest["tags"]:
# The tag's schema must be available:
assert tag_definition["schema_uri"] in resource_manager
|