123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package container
- import (
- "context"
- "io/ioutil"
- "testing"
- "github.com/docker/docker/api/types"
- "github.com/docker/docker/api/types/container"
- "github.com/docker/docker/api/types/network"
- "github.com/docker/docker/api/types/strslice"
- "github.com/docker/docker/integration/util/request"
- "github.com/stretchr/testify/require"
- )
- func TestExec(t *testing.T) {
- defer setupTest(t)()
- ctx := context.Background()
- client := request.NewAPIClient(t)
- container, err := client.ContainerCreate(ctx,
- &container.Config{
- Image: "busybox",
- Tty: true,
- WorkingDir: "/root",
- Cmd: strslice.StrSlice([]string{"top"}),
- },
- &container.HostConfig{},
- &network.NetworkingConfig{},
- "foo",
- )
- require.NoError(t, err)
- err = client.ContainerStart(ctx, container.ID, types.ContainerStartOptions{})
- require.NoError(t, err)
- id, err := client.ContainerExecCreate(ctx, container.ID,
- types.ExecConfig{
- WorkingDir: "/tmp",
- Env: strslice.StrSlice([]string{"FOO=BAR"}),
- AttachStdout: true,
- Cmd: strslice.StrSlice([]string{"sh", "-c", "env"}),
- },
- )
- require.NoError(t, err)
- resp, err := client.ContainerExecAttach(ctx, id.ID,
- types.ExecStartCheck{
- Detach: false,
- Tty: false,
- },
- )
- require.NoError(t, err)
- defer resp.Close()
- r, err := ioutil.ReadAll(resp.Reader)
- require.NoError(t, err)
- out := string(r)
- require.NoError(t, err)
- require.Contains(t, out, "PWD=/tmp", "exec command not running in expected /tmp working directory")
- require.Contains(t, out, "FOO=BAR", "exec command not running with expected environment variable FOO")
- }
|