diff options
author | Anthony Sottile <asottile@umich.edu> | 2017-11-22 13:31:26 -0800 |
---|---|---|
committer | Anthony Sottile <asottile@umich.edu> | 2017-12-20 11:03:38 -0800 |
commit | 0785836c4b440a8d4a5dfdb8df82e50f9f4d23a1 (patch) | |
tree | 762178fd3cc8a4c56479a2f8f83df6df77b068d4 /integration/image/commit_test.go | |
parent | 267847712e720d624f78ef5364f474ff6635b725 (diff) | |
download | docker-0785836c4b440a8d4a5dfdb8df82e50f9f4d23a1.tar.gz |
Fix environ substitutions in `docker commit --change ...`
The building machinery was being handed an uninitialized container
Config. This changes it to use the target container's Config.
Resolves #30538
Signed-off-by: Anthony Sottile <asottile@umich.edu>
Diffstat (limited to 'integration/image/commit_test.go')
-rw-r--r-- | integration/image/commit_test.go | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/integration/image/commit_test.go b/integration/image/commit_test.go new file mode 100644 index 0000000000..13edbe1175 --- /dev/null +++ b/integration/image/commit_test.go @@ -0,0 +1,47 @@ +package image + +import ( + "context" + "testing" + + "github.com/docker/docker/api/types" + "github.com/docker/docker/api/types/container" + "github.com/docker/docker/integration/util/request" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestCommitInheritsEnv(t *testing.T) { + defer setupTest(t)() + client := request.NewAPIClient(t) + ctx := context.Background() + + createResp1, err := client.ContainerCreate(ctx, &container.Config{Image: "busybox"}, nil, nil, "") + require.NoError(t, err) + + commitResp1, err := client.ContainerCommit(ctx, createResp1.ID, types.ContainerCommitOptions{ + Changes: []string{"ENV PATH=/bin"}, + Reference: "test-commit-image", + }) + require.NoError(t, err) + + image1, _, err := client.ImageInspectWithRaw(ctx, commitResp1.ID) + require.NoError(t, err) + + expectedEnv1 := []string{"PATH=/bin"} + assert.Equal(t, expectedEnv1, image1.Config.Env) + + createResp2, err := client.ContainerCreate(ctx, &container.Config{Image: image1.ID}, nil, nil, "") + require.NoError(t, err) + + commitResp2, err := client.ContainerCommit(ctx, createResp2.ID, types.ContainerCommitOptions{ + Changes: []string{"ENV PATH=/usr/bin:$PATH"}, + Reference: "test-commit-image", + }) + require.NoError(t, err) + + image2, _, err := client.ImageInspectWithRaw(ctx, commitResp2.ID) + require.NoError(t, err) + expectedEnv2 := []string{"PATH=/usr/bin:/bin"} + assert.Equal(t, expectedEnv2, image2.Config.Env) +} |