diff --git a/import_test.go b/import_test.go index c6cea6d54..2b9894d29 100644 --- a/import_test.go +++ b/import_test.go @@ -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 {