@@ -389,6 +389,68 @@ func (s *TaskSuite) TestImageArgs() {
389389 }
390390}
391391
392+ func (s * TaskSuite ) TestImageArgsWithOCIImages () {
393+ imagesDir , err := os .MkdirTemp ("" , "preload-images" )
394+ s .NoError (err )
395+
396+ defer os .RemoveAll (imagesDir )
397+
398+ firstImage := s .randomImageIndex (1024 , 2 , "linux" , "amd64" )
399+ firstPath := filepath .Join (imagesDir , "first" )
400+ _ , err = layout .Write (firstPath , firstImage )
401+ s .NoError (err )
402+
403+ secondImage := s .randomImageIndex (1024 , 2 , "linux" , "amd64" )
404+ secondPath := filepath .Join (imagesDir , "second" )
405+ _ , err = layout .Write (secondPath , secondImage )
406+ s .NoError (err )
407+
408+ s .req .Config .ContextDir = "testdata/image-args"
409+ s .req .Config .AdditionalTargets = []string {"first" }
410+ s .req .Config .ImageArgs = []string {
411+ "first_image=" + firstPath ,
412+ "second_image=" + secondPath ,
413+ }
414+
415+ err = os .Mkdir (s .outputPath ("first" ), 0755 )
416+ s .NoError (err )
417+
418+ _ , err = s .build ()
419+ s .NoError (err )
420+
421+ firstBuiltImage , err := layout .FromPath (s .outputPath ("first" , "image" ))
422+ s .NoError (err )
423+ _ , err = firstBuiltImage .ImageIndex ()
424+ s .NoError (err )
425+
426+ secondBuiltImage , err := layout .FromPath (s .outputPath ("image" , "image" ))
427+ s .NoError (err )
428+ _ , err = secondBuiltImage .ImageIndex ()
429+ s .NoError (err )
430+
431+ // for image, builtImage := range map[v1.ImageIndex]v1.ImageIndex{
432+ // firstImage: firstBuiltIndex,
433+ // secondImage: secondBuiltIndex,
434+ // } {
435+ // layers, err := image.Layers()
436+ // s.NoError(err)
437+
438+ // builtLayers, err := builtImage.Layers()
439+ // s.NoError(err)
440+ // s.Len(builtLayers, len(layers)+1)
441+
442+ // for i := 0; i < len(layers); i++ {
443+ // digest, err := layers[i].Digest()
444+ // s.NoError(err)
445+
446+ // builtDigest, err := builtLayers[i].Digest()
447+ // s.NoError(err)
448+
449+ // s.Equal(digest, builtDigest)
450+ // }
451+ // }
452+ }
453+
392454func (s * TaskSuite ) TestImageArgsWithUppercaseName () {
393455 imagesDir , err := os .MkdirTemp ("" , "preload-images" )
394456 s .NoError (err )
@@ -673,6 +735,36 @@ func (s *TaskSuite) randomImage(byteSize, layers int64, os, arch string) v1.Imag
673735 return image
674736}
675737
738+ func (s * TaskSuite ) randomImageIndex (byteSize , layers int64 , os , arch string ) v1.ImageIndex {
739+ index , err := random .Index (byteSize , layers , 1 )
740+ s .NoError (err )
741+ manifest , err := index .IndexManifest ()
742+ s .NoError (err )
743+
744+ var image v1.Image
745+ for _ , m := range manifest .Manifests {
746+ if m .MediaType .IsImage () {
747+ image , err = index .Image (m .Digest )
748+ s .NoError (err )
749+ break
750+ }
751+ }
752+
753+ cf , err := image .ConfigFile ()
754+ s .NoError (err )
755+
756+ cf = cf .DeepCopy ()
757+ cf .OS = os
758+ cf .Architecture = arch
759+
760+ image , err = mutate .ConfigFile (image , cf )
761+ s .NoError (err )
762+
763+ //TODO I don't think the ImageIndex has the updated Image...
764+
765+ return index
766+ }
767+
676768func TestSuite (t * testing.T ) {
677769 suite .Run (t , & TaskSuite {
678770 Assertions : require .New (t ),
0 commit comments