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)
}
