commit_test.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package image // import "github.com/docker/docker/integration/image"
  2. import (
  3. "context"
  4. "strings"
  5. "testing"
  6. "github.com/docker/docker/api/types"
  7. "github.com/docker/docker/api/types/versions"
  8. "github.com/docker/docker/integration/internal/container"
  9. "gotest.tools/v3/assert"
  10. is "gotest.tools/v3/assert/cmp"
  11. "gotest.tools/v3/skip"
  12. )
  13. func TestCommitInheritsEnv(t *testing.T) {
  14. skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.36"), "broken in earlier versions")
  15. skip.If(t, testEnv.DaemonInfo.OSType == "windows", "FIXME")
  16. defer setupTest(t)()
  17. client := testEnv.APIClient()
  18. ctx := context.Background()
  19. cID1 := container.Create(ctx, t, client)
  20. imgName := strings.ToLower(t.Name())
  21. commitResp1, err := client.ContainerCommit(ctx, cID1, types.ContainerCommitOptions{
  22. Changes: []string{"ENV PATH=/bin"},
  23. Reference: imgName,
  24. })
  25. assert.NilError(t, err)
  26. image1, _, err := client.ImageInspectWithRaw(ctx, commitResp1.ID)
  27. assert.NilError(t, err)
  28. expectedEnv1 := []string{"PATH=/bin"}
  29. assert.Check(t, is.DeepEqual(expectedEnv1, image1.Config.Env))
  30. cID2 := container.Create(ctx, t, client, container.WithImage(image1.ID))
  31. commitResp2, err := client.ContainerCommit(ctx, cID2, types.ContainerCommitOptions{
  32. Changes: []string{"ENV PATH=/usr/bin:$PATH"},
  33. Reference: imgName,
  34. })
  35. assert.NilError(t, err)
  36. image2, _, err := client.ImageInspectWithRaw(ctx, commitResp2.ID)
  37. assert.NilError(t, err)
  38. expectedEnv2 := []string{"PATH=/usr/bin:/bin"}
  39. assert.Check(t, is.DeepEqual(expectedEnv2, image2.Config.Env))
  40. }