client: rename ImageRemoveResult.Deleted to ImageRemoveResult.Items

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
Sebastiaan van Stijn
2025-10-24 11:41:50 +02:00
parent 8222a3f1d9
commit c246639baa
10 changed files with 19 additions and 17 deletions

View File

@@ -35,5 +35,5 @@ func (cli *Client) ImageRemove(ctx context.Context, imageID string, options Imag
var dels []image.DeleteResponse var dels []image.DeleteResponse
err = json.NewDecoder(resp.Body).Decode(&dels) err = json.NewDecoder(resp.Body).Decode(&dels)
return ImageRemoveResult{Deleted: dels}, err return ImageRemoveResult{Items: dels}, err
} }

View File

@@ -14,5 +14,5 @@ type ImageRemoveOptions struct {
// ImageRemoveResult holds the delete responses returned by the daemon. // ImageRemoveResult holds the delete responses returned by the daemon.
type ImageRemoveResult struct { type ImageRemoveResult struct {
Deleted []image.DeleteResponse Items []image.DeleteResponse
} }

View File

@@ -91,8 +91,8 @@ func TestImageRemove(t *testing.T) {
opts.Platforms = []ocispec.Platform{*removeCase.platform} opts.Platforms = []ocispec.Platform{*removeCase.platform}
} }
imageDeletes, err := client.ImageRemove(context.Background(), "image_id", opts) res, err := client.ImageRemove(context.Background(), "image_id", opts)
assert.NilError(t, err) assert.NilError(t, err)
assert.Check(t, is.Len(imageDeletes.Deleted, 2)) assert.Check(t, is.Len(res.Items, 2))
} }
} }

View File

@@ -802,7 +802,7 @@ func TestBuildHistoryDoesNotPreventRemoval(t *testing.T) {
res, err := apiClient.ImageRemove(ctx, "history-a", client.ImageRemoveOptions{}) res, err := apiClient.ImageRemove(ctx, "history-a", client.ImageRemoveOptions{})
assert.NilError(t, err) assert.NilError(t, err)
assert.Check(t, slices.ContainsFunc(res.Deleted, func(r image.DeleteResponse) bool { assert.Check(t, slices.ContainsFunc(res.Items, func(r image.DeleteResponse) bool {
return r.Deleted != "" return r.Deleted != ""
})) }))
} }

View File

@@ -78,7 +78,7 @@ func TestAPIImageHistoryCrossPlatform(t *testing.T) {
imgID := build.GetImageIDFromBody(t, resp.Body) imgID := build.GetImageIDFromBody(t, resp.Body)
t.Cleanup(func() { t.Cleanup(func() {
apiClient.ImageRemove(ctx, imgID, client.ImageRemoveOptions{Force: true}) _, _ = apiClient.ImageRemove(ctx, imgID, client.ImageRemoveOptions{Force: true})
}) })
testCases := []struct { testCases := []struct {

View File

@@ -147,20 +147,20 @@ func TestRemoveWithPlatform(t *testing.T) {
Force: true, Force: true,
}) })
assert.NilError(t, err) assert.NilError(t, err)
assert.Check(t, is.Len(res.Deleted, 1)) assert.Check(t, is.Len(res.Items, 1))
for _, r := range res.Deleted { for _, r := range res.Items {
assert.Check(t, is.Equal(r.Untagged, ""), "No image should be untagged") assert.Check(t, is.Equal(r.Untagged, ""), "No image should be untagged")
} }
checkPlatformDeleted(t, imageIdx, res.Deleted, tc.deleted) checkPlatformDeleted(t, imageIdx, res.Items, tc.deleted)
} }
// Delete the rest // Delete the rest
resp, err := apiClient.ImageRemove(ctx, imgName, client.ImageRemoveOptions{}) resp, err := apiClient.ImageRemove(ctx, imgName, client.ImageRemoveOptions{})
assert.NilError(t, err) assert.NilError(t, err)
assert.Check(t, is.Len(resp.Deleted, 2)) assert.Check(t, is.Len(resp.Items, 2))
assert.Check(t, is.Equal(resp.Deleted[0].Untagged, imgName)) assert.Check(t, is.Equal(resp.Items[0].Untagged, imgName))
assert.Check(t, is.Equal(resp.Deleted[1].Deleted, imageIdx.Manifests[0].Digest.String())) assert.Check(t, is.Equal(resp.Items[1].Deleted, imageIdx.Manifests[0].Digest.String()))
// TODO(vvoland): Should it also include platform-specific manifests? https://github.com/moby/moby/pull/49982 // TODO(vvoland): Should it also include platform-specific manifests? https://github.com/moby/moby/pull/49982
} }

View File

@@ -19,13 +19,13 @@ import (
// Do builds an image from the given context and returns the image ID. // Do builds an image from the given context and returns the image ID.
func Do(ctx context.Context, t *testing.T, apiClient client.APIClient, buildCtx *fakecontext.Fake) string { func Do(ctx context.Context, t *testing.T, apiClient client.APIClient, buildCtx *fakecontext.Fake) string {
resp, err := apiClient.ImageBuild(ctx, buildCtx.AsTarReader(t), client.ImageBuildOptions{}) resp, err := apiClient.ImageBuild(ctx, buildCtx.AsTarReader(t), client.ImageBuildOptions{})
assert.NilError(t, err)
if resp.Body != nil { if resp.Body != nil {
defer resp.Body.Close() defer resp.Body.Close()
} }
assert.NilError(t, err)
img := GetImageIDFromBody(t, resp.Body) img := GetImageIDFromBody(t, resp.Body)
t.Cleanup(func() { t.Cleanup(func() {
apiClient.ImageRemove(ctx, img, client.ImageRemoveOptions{Force: true}) _, _ = apiClient.ImageRemove(ctx, img, client.ImageRemoveOptions{Force: true})
}) })
return img return img
} }

View File

@@ -151,7 +151,9 @@ func TestRunMountImage(t *testing.T) {
t.Run(tc.name, func(t *testing.T) { t.Run(tc.name, func(t *testing.T) {
testImage := setupTestImage(t, ctx, apiClient, tc.name) testImage := setupTestImage(t, ctx, apiClient, tc.name)
if testImage != "" { if testImage != "" {
defer apiClient.ImageRemove(ctx, testImage, client.ImageRemoveOptions{Force: true}) defer func() {
_, _ = apiClient.ImageRemove(ctx, testImage, client.ImageRemoveOptions{Force: true})
}()
} }
cfg := containertypes.Config{ cfg := containertypes.Config{

View File

@@ -35,5 +35,5 @@ func (cli *Client) ImageRemove(ctx context.Context, imageID string, options Imag
var dels []image.DeleteResponse var dels []image.DeleteResponse
err = json.NewDecoder(resp.Body).Decode(&dels) err = json.NewDecoder(resp.Body).Decode(&dels)
return ImageRemoveResult{Deleted: dels}, err return ImageRemoveResult{Items: dels}, err
} }

View File

@@ -14,5 +14,5 @@ type ImageRemoveOptions struct {
// ImageRemoveResult holds the delete responses returned by the daemon. // ImageRemoveResult holds the delete responses returned by the daemon.
type ImageRemoveResult struct { type ImageRemoveResult struct {
Deleted []image.DeleteResponse Items []image.DeleteResponse
} }