"""Validate every rpms/*/metadata.yaml against schema/metadata.json.""" import json from pathlib import Path import jsonschema import pytest import yaml REPO_ROOT = Path(__file__).parent.parent SCHEMA_FILE = REPO_ROOT / "schema" / "metadata.json" RPMS_DIR = REPO_ROOT / "rpms" @pytest.fixture(scope="session") def schema(): with open(SCHEMA_FILE) as f: return json.load(f) def metadata_files(): return sorted(RPMS_DIR.glob("*/metadata.yaml")) @pytest.mark.parametrize("metadata_file", metadata_files(), ids=lambda p: p.parent.name) def test_metadata_valid(metadata_file, schema): with open(metadata_file) as f: data = yaml.safe_load(f) validator = jsonschema.Draft7Validator(schema) errors = sorted(validator.iter_errors(data), key=str) assert not errors, "\n".join( f" {'.'.join(str(p) for p in e.absolute_path) or '(root)'}: {e.message}" for e in errors )