@@ -3,6 +3,8 @@ package validate
33import (
44 "context"
55 "fmt"
6+ "github.com/containers/image/v5/types"
7+ "os"
68 "testing"
79
810 . "github.com/onsi/ginkgo/v2"
@@ -23,6 +25,27 @@ var _ = Describe("Check Catalog Consistency", func() {
2325 images , err := utils .ParseImageRefsFromCatalog (catalogsPath )
2426 Expect (err ).ToNot (HaveOccurred ())
2527 Expect (images ).ToNot (BeEmpty (), "no images found" )
28+ authPath := os .Getenv ("REGISTRY_AUTH_FILE" )
29+
30+ // Force image resolution to Linux to avoid OS mismatch errors on macOS,
31+ // like: "no image found for architecture 'arm64', OS 'darwin'".
32+ //
33+ // Setting OSChoice = "linux" ensures we always get a Linux image,
34+ // even when running on macOS.
35+ //
36+ // This skips the full multi-arch index and gives us just one manifest.
37+ // To check all supported architectures (e.g., amd64, arm64, ppc64le, s390x),
38+ // we’d need to avoid setting OSChoice and inspect the full index manually.
39+ //
40+ // TODO: Update this to support checking all architectures.
41+ // See: https://issues.redhat.com/browse/OPRUN-3793
42+ sysCtx := & types.SystemContext {
43+ OSChoice : "linux" ,
44+ }
45+ if authPath != "" {
46+ fmt .Println ("Using registry auth file:" , authPath )
47+ sysCtx .AuthFilePath = authPath
48+ }
2649
2750 for _ , url := range images {
2851 name := utils .ImageNameFromRef (url )
@@ -31,7 +54,7 @@ var _ = Describe("Check Catalog Consistency", func() {
3154 ctx := context .Background ()
3255 By (fmt .Sprintf ("Validating image: %s" , url ))
3356
34- extractedImage , err := extract .UnpackImage (ctx , url , name )
57+ extractedImage , err := extract .UnpackImage (ctx , url , name , sysCtx )
3558 Expect (err ).ToNot (HaveOccurred ())
3659 Expect (check .Check (ctx , extractedImage , check .AllChecks ())).To (Succeed ())
3760 extractedImage .Cleanup ()
0 commit comments