From 0390f2d19b91aa84ea9521c1aca73858bea95df8 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Tue, 6 Oct 2026 06:31:10 +0200 Subject: [PATCH] fix: accept verified_members in pack manifests --- schemas/pack-manifest.schema.json | 2 +- tests/test_pack_member_identity.py | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/schemas/pack-manifest.schema.json b/schemas/pack-manifest.schema.json index f7210cb0..8438a4ad 100644 --- a/schemas/pack-manifest.schema.json +++ b/schemas/pack-manifest.schema.json @@ -21,7 +21,7 @@ "sha1": { "type": "string", "pattern": "^[a-f0-9]{40}$" }, "md5": { "type": "string", "pattern": "^[a-f0-9]{32}$" }, "size": { "type": "integer", "minimum": 0 }, - "status": { "enum": ["verified", "verified_md5", "verified_rebuild", "verified_data", "untracked"] }, + "status": { "enum": ["verified", "verified_md5", "verified_rebuild", "verified_data", "verified_members", "untracked"] }, "name": { "type": "string" } } } diff --git a/tests/test_pack_member_identity.py b/tests/test_pack_member_identity.py index e72a23b8..459d0f65 100644 --- a/tests/test_pack_member_identity.py +++ b/tests/test_pack_member_identity.py @@ -42,5 +42,24 @@ class MembersMustBeKnown(unittest.TestCase): self.assertTrue(any("garbled.bin" in e for e in manifest["errors"])) +class SchemaAcceptsEveryStatus(unittest.TestCase): + """verified_members reached every pack manifest and the schema refused it.""" + + def test_each_status_packverify_writes_is_in_the_schema(self): + import json + import re + + source = (REPO_ROOT / "scripts" / "packverify.py").read_text(encoding="utf-8") + written = set(re.findall(r'status = "([a-z_]+)"', source)) + schema = json.loads( + (REPO_ROOT / "schemas" / "pack-manifest.schema.json").read_text(encoding="utf-8") + ) + allowed = set( + schema["properties"]["files"]["items"]["properties"]["status"]["enum"] + ) + self.assertTrue(written) + self.assertEqual(sorted(written - allowed), []) + + if __name__ == "__main__": unittest.main()