fix: verify GHCR release manifests when tag listing is huge
This commit is contained in:
@@ -33,6 +33,23 @@ class TestResolverCoverage(unittest.TestCase):
|
||||
row = resolver.resolve("example:1.2.3")
|
||||
self.assertTrue(row["status"].startswith("unverifiable:"))
|
||||
|
||||
def test_huge_ghcr_listing_uses_only_published_release_manifests(self):
|
||||
ref = "ghcr.io/immich-app/immich-machine-learning:v3.3.5"
|
||||
with mock.patch.object(resolver, "list_tags", return_value=([], "RuntimeError: tag listing truncated")), \
|
||||
mock.patch.object(resolver, "github_release_tags",
|
||||
return_value=["v3.3.6", "v3.3.5"]), \
|
||||
mock.patch.object(resolver, "_oci_tag_exists", side_effect=lambda h, r, t: t == "v3.3.5"):
|
||||
row = resolver.resolve(ref)
|
||||
self.assertEqual(row["status"], "ok")
|
||||
self.assertFalse(row["upgrade_available"]) # release exists; image does not yet
|
||||
self.assertIn("registry-manifest", row["source"])
|
||||
with mock.patch.object(resolver, "list_tags", return_value=([], "RuntimeError: tag listing truncated")), \
|
||||
mock.patch.object(resolver, "github_release_tags",
|
||||
return_value=["v3.3.6", "v3.3.5"]), \
|
||||
mock.patch.object(resolver, "_oci_tag_exists", return_value=True):
|
||||
upgraded = resolver.resolve(ref)
|
||||
self.assertTrue(upgraded["upgrade_available"])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user