From e3c642d1eacb43ef0b3e2abe4a210dbbbac3b654 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Sun, 12 Mar 2023 14:50:55 +0100 Subject: [PATCH] integration/volumes: TestVolumesRemove: add coverage for force/no-force Add additional test-cases for deleting non-existing volumes (with/without force). With this patch: make TEST_FILTER=TestVolumesRemove DOCKER_GRAPHDRIVER=vfs test-integration Running /go/src/github.com/docker/docker/integration/volume (arm64.integration.volume) flags=-test.v -test.timeout=10m -test.run TestVolumesRemove ... === RUN TestVolumesRemove === RUN TestVolumesRemove/volume_in_use === RUN TestVolumesRemove/volume_not_in_use === RUN TestVolumesRemove/non-existing_volume === RUN TestVolumesRemove/non-existing_volume_force --- PASS: TestVolumesRemove (0.04s) --- PASS: TestVolumesRemove/volume_in_use (0.00s) --- PASS: TestVolumesRemove/volume_not_in_use (0.01s) --- PASS: TestVolumesRemove/non-existing_volume (0.00s) --- PASS: TestVolumesRemove/non-existing_volume_force (0.00s) PASS Signed-off-by: Sebastiaan van Stijn (cherry picked from commit 7531f05c7c32c7971df05a5fb9144d529358d0bb) Signed-off-by: Sebastiaan van Stijn --- integration/volume/volume_test.go | 32 +++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/integration/volume/volume_test.go b/integration/volume/volume_test.go index bf0cee7904..365bbe2990 100644 --- a/integration/volume/volume_test.go +++ b/integration/volume/volume_test.go @@ -13,6 +13,7 @@ import ( "github.com/docker/docker/api/types/filters" "github.com/docker/docker/api/types/volume" clientpkg "github.com/docker/docker/client" + "github.com/docker/docker/errdefs" "github.com/docker/docker/integration/internal/container" "github.com/docker/docker/testutil/request" "github.com/google/go-cmp/cmp/cmpopts" @@ -75,16 +76,31 @@ func TestVolumesRemove(t *testing.T) { assert.NilError(t, err) vname := c.Mounts[0].Name - err = client.VolumeRemove(ctx, vname, false) - assert.Check(t, is.ErrorContains(err, "volume is in use")) - - err = client.ContainerRemove(ctx, id, types.ContainerRemoveOptions{ - Force: true, + t.Run("volume in use", func(t *testing.T) { + err = client.VolumeRemove(ctx, vname, false) + assert.Check(t, is.ErrorType(err, errdefs.IsConflict)) + assert.Check(t, is.ErrorContains(err, "volume is in use")) }) - assert.NilError(t, err) - err = client.VolumeRemove(ctx, vname, false) - assert.NilError(t, err) + t.Run("volume not in use", func(t *testing.T) { + err = client.ContainerRemove(ctx, id, types.ContainerRemoveOptions{ + Force: true, + }) + assert.NilError(t, err) + + err = client.VolumeRemove(ctx, vname, false) + assert.NilError(t, err) + }) + + t.Run("non-existing volume", func(t *testing.T) { + err = client.VolumeRemove(ctx, "no_such_volume", false) + assert.Check(t, is.ErrorType(err, errdefs.IsNotFound)) + }) + + t.Run("non-existing volume force", func(t *testing.T) { + err = client.VolumeRemove(ctx, "no_such_volume", true) + assert.NilError(t, err) + }) } func TestVolumesInspect(t *testing.T) {