mirror of
https://github.com/containers/podman.git
synced 2025-06-17 06:57:43 +08:00
libpod/image: Use ParseNormalizedNamed in RepoDigests
Avoid generating quay.io/openshift-release-dev/ocp-release@sha256@sha256:239... and similar when the image name is already digest-based [1]. It's not clear exactly how we get into this state, but as shown by the unit tests, the new code handles this case correctly (while the previous code does not). [1]: https://github.com/containers/libpod/issues/2086 Signed-off-by: W. Trevor King <wking@tremily.us> Closes: #2106 Approved by: rhatdan
This commit is contained in:

committed by
Atomic Bot

parent
a60090cfba
commit
0f6535cf6b
@ -9,6 +9,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/containers/storage"
|
||||
"github.com/opencontainers/go-digest"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
@ -192,6 +193,51 @@ func TestImage_MatchRepoTag(t *testing.T) {
|
||||
cleanup(workdir, ir)
|
||||
}
|
||||
|
||||
// TestImage_RepoDigests tests RepoDigest generation.
|
||||
func TestImage_RepoDigests(t *testing.T) {
|
||||
dgst, err := digest.Parse("sha256:7173b809ca12ec5dee4506cd86be934c4596dd234ee82c0662eac04a8c2c71dc")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
for _, test := range []struct {
|
||||
name string
|
||||
names []string
|
||||
expected []string
|
||||
}{
|
||||
{
|
||||
name: "empty",
|
||||
names: []string{},
|
||||
expected: nil,
|
||||
},
|
||||
{
|
||||
name: "tagged",
|
||||
names: []string{"docker.io/library/busybox:latest"},
|
||||
expected: []string{"docker.io/library/busybox@sha256:7173b809ca12ec5dee4506cd86be934c4596dd234ee82c0662eac04a8c2c71dc"},
|
||||
},
|
||||
{
|
||||
name: "digest",
|
||||
names: []string{"docker.io/library/busybox@sha256:7173b809ca12ec5dee4506cd86be934c4596dd234ee82c0662eac04a8c2c71dc"},
|
||||
expected: []string{"docker.io/library/busybox@sha256:7173b809ca12ec5dee4506cd86be934c4596dd234ee82c0662eac04a8c2c71dc"},
|
||||
},
|
||||
} {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
image := &Image{
|
||||
image: &storage.Image{
|
||||
Names: test.names,
|
||||
Digest: dgst,
|
||||
},
|
||||
}
|
||||
actual, err := image.RepoDigests()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
assert.Equal(t, test.expected, actual)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// Test_splitString tests the splitString function in image that
|
||||
// takes input and splits on / and returns the last array item
|
||||
func Test_splitString(t *testing.T) {
|
||||
|
Reference in New Issue
Block a user