summaryrefslogtreecommitdiff
path: root/integration/image
diff options
context:
space:
mode:
authorYong Tang <yong.tang.github@outlook.com>2018-03-02 22:54:29 +0000
committerYong Tang <yong.tang.github@outlook.com>2018-03-05 20:35:14 +0000
commited58ba99fb28ceac56063b7f003f38b597ddef80 (patch)
tree1aeca9e59e8ac9ebd2fb5ab4667a08f1c859d6b5 /integration/image
parent4b2fb7e394e8ee631394d6c12f8267065f39766b (diff)
downloaddocker-ed58ba99fb28ceac56063b7f003f38b597ddef80.tar.gz
Migrate docker rm tests to api tests
This fix migrates docker rm test in integration-cli to api tests. Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
Diffstat (limited to 'integration/image')
-rw-r--r--integration/image/remove_test.go60
1 files changed, 60 insertions, 0 deletions
diff --git a/integration/image/remove_test.go b/integration/image/remove_test.go
new file mode 100644
index 0000000000..825724bd03
--- /dev/null
+++ b/integration/image/remove_test.go
@@ -0,0 +1,60 @@
+package image // import "github.com/docker/docker/integration/image"
+
+import (
+ "context"
+ "testing"
+
+ "github.com/docker/docker/api/types"
+ "github.com/docker/docker/integration/internal/container"
+ "github.com/docker/docker/integration/internal/request"
+ "github.com/docker/docker/internal/testutil"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+)
+
+func TestRemoveImageOrphaning(t *testing.T) {
+ defer setupTest(t)()
+ ctx := context.Background()
+ client := request.NewAPIClient(t)
+
+ img := "test-container-orphaning"
+
+ // Create a container from busybox, and commit a small change so we have a new image
+ cID1 := container.Create(t, ctx, client, container.WithCmd(""))
+ commitResp1, err := client.ContainerCommit(ctx, cID1, types.ContainerCommitOptions{
+ Changes: []string{`ENTRYPOINT ["true"]`},
+ Reference: img,
+ })
+ require.NoError(t, err)
+
+ // verifies that reference now points to first image
+ resp, _, err := client.ImageInspectWithRaw(ctx, img)
+ require.NoError(t, err)
+ assert.Equal(t, resp.ID, commitResp1.ID)
+
+ // Create a container from created image, and commit a small change with same reference name
+ cID2 := container.Create(t, ctx, client, container.WithImage(img), container.WithCmd(""))
+ commitResp2, err := client.ContainerCommit(ctx, cID2, types.ContainerCommitOptions{
+ Changes: []string{`LABEL Maintainer="Integration Tests"`},
+ Reference: img,
+ })
+ require.NoError(t, err)
+
+ // verifies that reference now points to second image
+ resp, _, err = client.ImageInspectWithRaw(ctx, img)
+ require.NoError(t, err)
+ assert.Equal(t, resp.ID, commitResp2.ID)
+
+ // try to remove the image, should not error out.
+ _, err = client.ImageRemove(ctx, img, types.ImageRemoveOptions{})
+ require.NoError(t, err)
+
+ // check if the first image is still there
+ resp, _, err = client.ImageInspectWithRaw(ctx, commitResp1.ID)
+ require.NoError(t, err)
+ assert.Equal(t, resp.ID, commitResp1.ID)
+
+ // check if the second image has been deleted
+ _, _, err = client.ImageInspectWithRaw(ctx, commitResp2.ID)
+ testutil.ErrorContains(t, err, "No such image:")
+}