c8d/list: Add empty index test case

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
This commit is contained in:
Paweł Gronowski 2024-03-18 10:34:18 +01:00
parent f512dba037
commit 153de36b3f
No known key found for this signature in database
GPG key ID: B85EFCFE26DEF92A
2 changed files with 35 additions and 0 deletions

View file

@ -48,6 +48,9 @@ func TestImageList(t *testing.T) {
twoplatform, err := specialimage.TwoPlatform(blobsDir)
assert.NilError(t, err)
emptyIndex, err := specialimage.EmptyIndex(blobsDir)
assert.NilError(t, err)
cs := &blobsDirContentStore{blobs: filepath.Join(blobsDir, "blobs/sha256")}
snapshotter := &testSnapshotterService{}
@ -92,6 +95,13 @@ func TestImageList(t *testing.T) {
assert.Check(t, is.DeepEqual(all[1].RepoTags, []string{"twoplatform:latest"}))
},
},
{
name: "three images, one is an empty index",
images: imagesFromIndex(multilayer, emptyIndex, twoplatform),
check: func(t *testing.T, all []*imagetypes.Summary) {
assert.Check(t, is.Len(all, 2))
},
},
} {
tc := tc
t.Run(tc.name, func(t *testing.T) {

View file

@ -0,0 +1,25 @@
package specialimage
import (
"github.com/distribution/reference"
"github.com/opencontainers/image-spec/specs-go"
ocispec "github.com/opencontainers/image-spec/specs-go/v1"
)
// EmptyIndex creates an image index with no manifests.
// This is equivalent to `tianon/scratch:index`.
func EmptyIndex(dir string) (*ocispec.Index, error) {
const imageRef = "emptyindex:latest"
index := ocispec.Index{
Versioned: specs.Versioned{SchemaVersion: 2},
MediaType: ocispec.MediaTypeImageIndex,
Manifests: []ocispec.Descriptor{},
}
ref, err := reference.ParseNormalizedNamed(imageRef)
if err != nil {
return nil, err
}
return multiPlatformImage(dir, ref, index)
}