Skip to content

Commit 3c46dcd

Browse files
chhsia0tekton-robot
chhsia0
authored andcommitted
Added a unit test.
1 parent e71322b commit 3c46dcd

File tree

10 files changed

+443
-13
lines changed

10 files changed

+443
-13
lines changed

Diff for: Gopkg.lock

+5-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: cmd/imagedigestexporter/digest.go

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package main
2+
3+
import (
4+
"github.com/google/go-containerregistry/pkg/v1"
5+
)
6+
7+
// GetDigest returns the digest of an OCI image index. If there is only one image in the index, the
8+
// digest of the image is returned; otherwise, the digest of the whole index is returned.
9+
func GetDigest(ii v1.ImageIndex) (v1.Hash, error) {
10+
im, err := ii.IndexManifest()
11+
if err != nil {
12+
return v1.Hash{}, err
13+
}
14+
if len(im.Manifests) == 1 {
15+
return im.Manifests[0].Digest, nil
16+
}
17+
return ii.Digest()
18+
}

Diff for: cmd/imagedigestexporter/digest_test.go

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package main
2+
3+
import (
4+
"testing"
5+
6+
"github.com/google/go-cmp/cmp"
7+
"github.com/google/go-containerregistry/pkg/v1"
8+
"github.com/google/go-containerregistry/pkg/v1/empty"
9+
"github.com/google/go-containerregistry/pkg/v1/random"
10+
)
11+
12+
func TestGetDigest(t *testing.T) {
13+
mustGetIndex := func(ii v1.ImageIndex, err error) v1.ImageIndex {
14+
if err != nil {
15+
t.Fatalf("must get image: %s", err)
16+
}
17+
return ii
18+
}
19+
mustGetManifest := func(im *v1.IndexManifest, err error) *v1.IndexManifest {
20+
if err != nil {
21+
t.Fatalf("must get manifest: %s", err)
22+
}
23+
return im
24+
}
25+
mustGetDigest := func(h v1.Hash, err error) v1.Hash {
26+
if err != nil {
27+
t.Fatalf("must get digest: %s", err)
28+
}
29+
return h
30+
}
31+
indexSingleImage := mustGetIndex(random.Index(1024, 4, 1))
32+
indexMultipleImages := mustGetIndex(random.Index(1024, 4, 4))
33+
tests := []struct {
34+
name string
35+
index v1.ImageIndex
36+
expected v1.Hash
37+
}{
38+
{
39+
name: "empty index",
40+
index: empty.Index,
41+
expected: mustGetDigest(empty.Index.Digest()),
42+
},
43+
{
44+
name: "index with single image",
45+
index: indexSingleImage,
46+
expected: mustGetManifest(indexSingleImage.IndexManifest()).Manifests[0].Digest,
47+
},
48+
{
49+
name: "index with multiple images",
50+
index: indexMultipleImages,
51+
expected: mustGetDigest(indexMultipleImages.Digest()),
52+
},
53+
}
54+
for _, test := range tests {
55+
t.Run(test.name, func(t *testing.T) {
56+
digest, err := GetDigest(test.index)
57+
if err != nil {
58+
t.Fatalf("cannot get digest: %s", err)
59+
}
60+
if diff := cmp.Diff(digest, test.expected); diff != "" {
61+
t.Errorf("get digest: -want +got: %s", diff)
62+
}
63+
})
64+
}
65+
}

Diff for: cmd/imagedigestexporter/main.go

+1-12
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import (
2222
"log"
2323
"os"
2424

25-
"github.com/google/go-containerregistry/pkg/v1"
2625
"github.com/google/go-containerregistry/pkg/v1/layout"
2726
v1alpha1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1alpha1"
2827
)
@@ -56,17 +55,7 @@ func main() {
5655
log.Printf("ImageResource %s doesn't have an index.json file: %s", imageResource.Name, err)
5756
continue
5857
}
59-
// If there is only one image in the index, report the digest of the image; otherwise, report the digest of the whole index.
60-
digest, err := func() (v1.Hash, error) {
61-
im, err := ii.IndexManifest()
62-
if err != nil {
63-
return v1.Hash{}, err
64-
}
65-
if len(im.Manifests) == 1 {
66-
return im.Manifests[0].Digest, nil
67-
}
68-
return ii.Digest()
69-
}()
58+
digest, err := GetDigest(ii)
7059
if err != nil {
7160
log.Fatalf("Unexpected error getting image digest for %s: %v", imageResource.Name, err)
7261
}

Diff for: vendor/github.com/google/go-containerregistry/pkg/v1/empty/doc.go

+16
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: vendor/github.com/google/go-containerregistry/pkg/v1/empty/image.go

+22
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: vendor/github.com/google/go-containerregistry/pkg/v1/empty/index.go

+59
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: vendor/github.com/google/go-containerregistry/pkg/v1/random/doc.go

+16
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: vendor/github.com/google/go-containerregistry/pkg/v1/random/image.go

+135
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)