test(infra): cover malformed release manifests

This commit is contained in:
2026-07-27 15:30:04 +00:00
committed by didericis
parent 49b407437c
commit fd529a98b5
+28
View File
@@ -48,6 +48,34 @@ class TestParseManifest(unittest.TestCase):
with self.assertRaisesRegex(ReleaseManifestError, "64 lowercase hex"): with self.assertRaisesRegex(ReleaseManifestError, "64 lowercase hex"):
parse_manifest(data) parse_manifest(data)
def test_rejects_missing_manifest_sections(self) -> None:
cases = (
(None, "schema 1"),
({"schema": 1}, "source_commit"),
(
{"schema": 1, "source_commit": "1" * 40},
"oci must be an object",
),
)
for data, message in cases:
with self.subTest(message=message):
with self.assertRaisesRegex(ReleaseManifestError, message):
parse_manifest(data)
def test_rejects_malformed_firecracker_artifact(self) -> None:
data = manifest()
assert isinstance(data["firecracker"], dict)
data["firecracker"]["orchestrator"] = None
with self.assertRaisesRegex(ReleaseManifestError, "must be an object"):
parse_manifest(data)
data["firecracker"]["orchestrator"] = {
"version": " ",
"sha256": "c" * 64,
}
with self.assertRaisesRegex(ReleaseManifestError, "version must be non-empty"):
parse_manifest(data)
class TestImageSelection(unittest.TestCase): class TestImageSelection(unittest.TestCase):
def test_development_marker_selects_local_builds(self) -> None: def test_development_marker_selects_local_builds(self) -> None: