github.com/rita33cool1/iot-system-gateway@v0.0.0-20200911033302-e65bde238cc5/docker-engine/integration/container/exec_test.go (about)

     1  package container // import "github.com/docker/docker/integration/container"
     2  
     3  import (
     4  	"context"
     5  	"io/ioutil"
     6  	"testing"
     7  
     8  	"github.com/docker/docker/api/types"
     9  	"github.com/docker/docker/api/types/strslice"
    10  	"github.com/docker/docker/integration/internal/container"
    11  	"github.com/docker/docker/integration/internal/request"
    12  	"github.com/gotestyourself/gotestyourself/assert"
    13  	is "github.com/gotestyourself/gotestyourself/assert/cmp"
    14  )
    15  
    16  func TestExec(t *testing.T) {
    17  	defer setupTest(t)()
    18  	ctx := context.Background()
    19  	client := request.NewAPIClient(t)
    20  
    21  	cID := container.Run(t, ctx, client, container.WithTty(true), container.WithWorkingDir("/root"))
    22  
    23  	id, err := client.ContainerExecCreate(ctx, cID,
    24  		types.ExecConfig{
    25  			WorkingDir:   "/tmp",
    26  			Env:          strslice.StrSlice([]string{"FOO=BAR"}),
    27  			AttachStdout: true,
    28  			Cmd:          strslice.StrSlice([]string{"sh", "-c", "env"}),
    29  		},
    30  	)
    31  	assert.NilError(t, err)
    32  
    33  	resp, err := client.ContainerExecAttach(ctx, id.ID,
    34  		types.ExecStartCheck{
    35  			Detach: false,
    36  			Tty:    false,
    37  		},
    38  	)
    39  	assert.NilError(t, err)
    40  	defer resp.Close()
    41  	r, err := ioutil.ReadAll(resp.Reader)
    42  	assert.NilError(t, err)
    43  	out := string(r)
    44  	assert.NilError(t, err)
    45  	assert.Assert(t, is.Contains(out, "PWD=/tmp"), "exec command not running in expected /tmp working directory")
    46  	assert.Assert(t, is.Contains(out, "FOO=BAR"), "exec command not running with expected environment variable FOO")
    47  }