diff --git a/schemas/emulator.schema.json b/schemas/emulator.schema.json index cada7d28d..bd8cdf9a4 100644 --- a/schemas/emulator.schema.json +++ b/schemas/emulator.schema.json @@ -487,7 +487,8 @@ "required": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}-[0-9a-f]{12}$"}}, "hle_fallback": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}-[0-9a-f]{12}$"}}, "path": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}-[0-9a-f]{12}$"}}, - "aliases": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}-[0-9a-f]{12}$"}} + "aliases": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}-[0-9a-f]{12}$"}}, + "validation": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}-[0-9a-f]{12}$"}} } }, "adler32_byteswap": { diff --git a/tests/test_campaign.py b/tests/test_campaign.py index e32d5f422..5a5d21343 100644 --- a/tests/test_campaign.py +++ b/tests/test_campaign.py @@ -240,6 +240,11 @@ class RuleTable(unittest.TestCase): verdict = rules.rule_variants([run(rules.BOOTS, "b"), run(rules.HANG, "a")], self.ENTRY) self.assertEqual((verdict.value, verdict.apply), (["a", "b"], False)) + def test_every_settled_field_can_carry_evidence(self) -> None: + schema = json.loads((REPO_ROOT / "schemas" / "emulator.schema.json").read_text()) + evidence = schema["properties"]["files"]["items"]["properties"]["evidence"]["properties"] + self.assertEqual(set(rules.SETTLED_FIELDS), set(evidence)) + def test_agreement_and_evidence(self) -> None: self.assertTrue(rules.agrees({"name": "a"}, rules.Verdict("r", "hle_fallback", False, "", ()))) self.assertFalse(rules.agrees({"name": "a"}, rules.Verdict("r", "hle_fallback", True, "", ())))