Skip to content

Commit fa3e1f1

Browse files
committed
WIP tests
Signed-off-by: Taylor Silva <[email protected]>
1 parent 5ad6255 commit fa3e1f1

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed

task_test.go

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@ import (
1515
"github.com/google/go-containerregistry/pkg/registry"
1616
v1 "github.com/google/go-containerregistry/pkg/v1"
1717
"github.com/google/go-containerregistry/pkg/v1/layout"
18+
"github.com/google/go-containerregistry/pkg/v1/match"
1819
"github.com/google/go-containerregistry/pkg/v1/mutate"
1920
"github.com/google/go-containerregistry/pkg/v1/random"
2021
"github.com/google/go-containerregistry/pkg/v1/remote"
2122
"github.com/google/go-containerregistry/pkg/v1/tarball"
23+
"github.com/google/go-containerregistry/pkg/v1/types"
2224
"github.com/stretchr/testify/require"
2325
"github.com/stretchr/testify/suite"
2426
)
@@ -389,6 +391,42 @@ func (s *TaskSuite) TestImageArgs() {
389391
}
390392
}
391393

394+
func (s *TaskSuite) TestImageArgsWithOCIImages() {
395+
imagesDir, err := os.MkdirTemp("", "preload-images")
396+
s.NoError(err)
397+
398+
defer os.RemoveAll(imagesDir)
399+
400+
firstImage := s.randomImageIndex(1024, 2, "linux", "amd64")
401+
firstPath := filepath.Join(imagesDir, "first")
402+
_, err = layout.Write(firstPath, firstImage)
403+
s.NoError(err)
404+
405+
secondImage := s.randomImageIndex(1024, 2, "linux", "arm64")
406+
secondPath := filepath.Join(imagesDir, "second")
407+
_, err = layout.Write(secondPath, secondImage)
408+
s.NoError(err)
409+
410+
s.req.Config.ContextDir = "testdata/image-args"
411+
s.req.Config.AdditionalTargets = []string{"first"}
412+
s.req.Config.ImageArgs = []string{
413+
"first_image=" + firstPath,
414+
"second_image=" + secondPath,
415+
}
416+
417+
err = os.Mkdir(s.outputPath("first"), 0755)
418+
s.NoError(err)
419+
420+
_, err = s.build()
421+
s.NoError(err)
422+
423+
_, err = tarball.ImageFromPath(s.outputPath("first", "image.tar"), nil)
424+
s.NoError(err)
425+
426+
_, err = tarball.ImageFromPath(s.outputPath("image", "image.tar"), nil)
427+
s.NoError(err)
428+
}
429+
392430
func (s *TaskSuite) TestImageArgsWithUppercaseName() {
393431
imagesDir, err := os.MkdirTemp("", "preload-images")
394432
s.NoError(err)
@@ -673,6 +711,38 @@ func (s *TaskSuite) randomImage(byteSize, layers int64, os, arch string) v1.Imag
673711
return image
674712
}
675713

714+
func (s *TaskSuite) randomImageIndex(byteSize, layers int64, os, arch string) v1.ImageIndex {
715+
index, err := random.Index(byteSize, layers, 1)
716+
s.NoError(err)
717+
manifest, err := index.IndexManifest()
718+
s.NoError(err)
719+
720+
var image v1.Image
721+
for _, m := range manifest.Manifests {
722+
if m.MediaType.IsImage() {
723+
image, err = index.Image(m.Digest)
724+
s.NoError(err)
725+
break
726+
}
727+
}
728+
729+
index = mutate.RemoveManifests(index, match.MediaTypes(string(types.OCIManifestSchema1), string(types.DockerManifestSchema2)))
730+
731+
cf, err := image.ConfigFile()
732+
s.NoError(err)
733+
734+
cf = cf.DeepCopy()
735+
cf.OS = os
736+
cf.Architecture = arch
737+
738+
image, err = mutate.ConfigFile(image, cf)
739+
s.NoError(err)
740+
741+
index = mutate.AppendManifests(index, mutate.IndexAddendum{Add: image})
742+
743+
return index
744+
}
745+
676746
func TestSuite(t *testing.T) {
677747
suite.Run(t, &TaskSuite{
678748
Assertions: require.New(t),

0 commit comments

Comments
 (0)