Add test for ocispec.Descriptor Annotations
Make sure that Annotations we write into ocispec.Descriptors are written into the store and can be read back. Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
This commit is contained in:
parent
0b711d616a
commit
79248fea2b
@ -23,6 +23,7 @@ import (
|
||||
|
||||
"io/ioutil"
|
||||
"math/rand"
|
||||
"reflect"
|
||||
"runtime"
|
||||
"testing"
|
||||
|
||||
@ -94,11 +95,11 @@ func TestImport(t *testing.T) {
|
||||
|
||||
c1, d2 := createConfig()
|
||||
|
||||
m1, d3 := createManifest(c1, [][]byte{b1})
|
||||
m1, d3, expManifest := createManifest(c1, [][]byte{b1})
|
||||
|
||||
provider := client.ContentStore()
|
||||
|
||||
checkManifest := func(ctx context.Context, t *testing.T, d ocispec.Descriptor) {
|
||||
checkManifest := func(ctx context.Context, t *testing.T, d ocispec.Descriptor, expManifest *ocispec.Manifest) {
|
||||
m, err := images.Manifest(ctx, provider, d, nil)
|
||||
if err != nil {
|
||||
t.Fatalf("unable to read target blob: %+v", err)
|
||||
@ -115,6 +116,15 @@ func TestImport(t *testing.T) {
|
||||
if m.Layers[0].Digest != d1 {
|
||||
t.Fatalf("unexpected layer hash %s, expected %s", m.Layers[0].Digest, d1)
|
||||
}
|
||||
|
||||
if expManifest != nil {
|
||||
if !reflect.DeepEqual(m.Layers, expManifest.Layers) {
|
||||
t.Fatalf("DeepEqual on Layers failed: %v vs. %v", m.Layers, expManifest.Layers)
|
||||
}
|
||||
if !reflect.DeepEqual(m.Config, expManifest.Config) {
|
||||
t.Fatalf("DeepEqual on Config failed: %v vs. %v", m.Config, expManifest.Config)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for _, tc := range []struct {
|
||||
@ -154,7 +164,7 @@ func TestImport(t *testing.T) {
|
||||
}
|
||||
|
||||
checkImages(t, imgs[0].Target.Digest, imgs, names...)
|
||||
checkManifest(ctx, t, imgs[0].Target)
|
||||
checkManifest(ctx, t, imgs[0].Target, nil)
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -181,7 +191,7 @@ func TestImport(t *testing.T) {
|
||||
}
|
||||
|
||||
checkImages(t, d3, imgs, names...)
|
||||
checkManifest(ctx, t, imgs[0].Target)
|
||||
checkManifest(ctx, t, imgs[0].Target, expManifest)
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -202,7 +212,7 @@ func TestImport(t *testing.T) {
|
||||
}
|
||||
|
||||
checkImages(t, d3, imgs, names...)
|
||||
checkManifest(ctx, t, imgs[0].Target)
|
||||
checkManifest(ctx, t, imgs[0].Target, expManifest)
|
||||
},
|
||||
Opts: []ImportOpt{
|
||||
WithImageRefTranslator(archive.AddRefPrefix("localhost:5000/myimage")),
|
||||
@ -226,7 +236,7 @@ func TestImport(t *testing.T) {
|
||||
}
|
||||
|
||||
checkImages(t, d3, imgs, names...)
|
||||
checkManifest(ctx, t, imgs[0].Target)
|
||||
checkManifest(ctx, t, imgs[0].Target, expManifest)
|
||||
},
|
||||
Opts: []ImportOpt{
|
||||
WithImageRefTranslator(archive.FilterRefPrefix("localhost:5000/myimage")),
|
||||
@ -288,7 +298,7 @@ func createConfig() ([]byte, digest.Digest) {
|
||||
return b, digest.FromBytes(b)
|
||||
}
|
||||
|
||||
func createManifest(config []byte, layers [][]byte) ([]byte, digest.Digest) {
|
||||
func createManifest(config []byte, layers [][]byte) ([]byte, digest.Digest, *ocispec.Manifest) {
|
||||
manifest := ocispec.Manifest{
|
||||
Versioned: specs.Versioned{
|
||||
SchemaVersion: 2,
|
||||
@ -297,6 +307,9 @@ func createManifest(config []byte, layers [][]byte) ([]byte, digest.Digest) {
|
||||
MediaType: ocispec.MediaTypeImageConfig,
|
||||
Digest: digest.FromBytes(config),
|
||||
Size: int64(len(config)),
|
||||
Annotations: map[string]string{
|
||||
"ocispec": "manifest.config.descriptor",
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, l := range layers {
|
||||
@ -304,12 +317,15 @@ func createManifest(config []byte, layers [][]byte) ([]byte, digest.Digest) {
|
||||
MediaType: ocispec.MediaTypeImageLayer,
|
||||
Digest: digest.FromBytes(l),
|
||||
Size: int64(len(l)),
|
||||
Annotations: map[string]string{
|
||||
"ocispec": "manifest.layers.descriptor",
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
b, _ := json.Marshal(manifest)
|
||||
|
||||
return b, digest.FromBytes(b)
|
||||
return b, digest.FromBytes(b), &manifest
|
||||
}
|
||||
|
||||
func createIndex(manifest []byte, tags ...string) []byte {
|
||||
|
Loading…
Reference in New Issue
Block a user