diff --git a/osbuild/meta.py b/osbuild/meta.py index 44cbe3cd..44637b8d 100644 --- a/osbuild/meta.py +++ b/osbuild/meta.py @@ -284,16 +284,32 @@ META_JSON_SCHEMA = { }, }, "required": ["summary", "description"], - "oneOf": [ + "anyOf": [ { "required": [ "schema" - ] + ], + "not": { + "required": [ + "schema_2", + ], + }, }, { "required": [ "schema_2" - ] + ], + "not": { + "required": [ + "schema", + ], + }, + }, + { + "required": [ + "schema", + "schema_2", + ], }, ], "properties": { diff --git a/test/mod/test_meta.py b/test/mod/test_meta.py index 0294c501..8a26e58a 100644 --- a/test/mod/test_meta.py +++ b/test/mod/test_meta.py @@ -317,7 +317,8 @@ def test_load_from_json_prefered(tmp_path): {"summary": "some", "description": ["many", "strings"], "schema": {}}, ""), ( {"summary": "some", "description": ["many", "strings"], "schema_2": {}}, ""), ( {"summary": "some", "description": ["many", "strings"], "schema_2": {}, "capabilities": []}, ""), ( - {"summary": "some", "description": ["many", "strings"], "schema_2": {}, "capabilities": ["cap1", "cap2"]}, ""), + {"summary": "some", "description": ["many", "strings"], "schema_2": {}, "capabilities": ["cap1", "cap2"]}, ""), ( + {"summary": "some", "description": ["many", "strings"], "schema": {}, "schema_2": {}, "capabilities": ["cap1", "cap2"]}, ""), # unhappy ( # no description @@ -331,12 +332,6 @@ def test_load_from_json_prefered(tmp_path): # schema{,_2} missing {"summary": "some", "description": ["many", "strings"]}, " is not valid", - ), - ( - # both schema{,_2} - {"summary": "some", "description": ["many", "strings"], - "schema": {}, "schema_2": {}}, - " is valid under each ", ), ( # capabilities of wrong type {"summary": "some", "description": ["many", "strings"], "schema": {},