| package container // import "github.com/docker/docker/integration/container" | |
| import ( | |
| "context" | |
| "testing" | |
| "github.com/docker/docker/api/types" | |
| "github.com/docker/docker/api/types/container" | |
| "github.com/docker/docker/api/types/network" | |
| "gotest.tools/v3/assert" | |
| ) | |
| func TestAttachWithTTY(t *testing.T) { | |
| testAttach(t, true, types.MediaTypeRawStream) | |
| } | |
| func TestAttachWithoutTTy(t *testing.T) { | |
| testAttach(t, false, types.MediaTypeMultiplexedStream) | |
| } | |
| func testAttach(t *testing.T, tty bool, expected string) { | |
| defer setupTest(t)() | |
| client := testEnv.APIClient() | |
| resp, err := client.ContainerCreate(context.Background(), | |
| &container.Config{ | |
| Image: "busybox", | |
| Cmd: []string{"echo", "hello"}, | |
| Tty: tty, | |
| }, | |
| &container.HostConfig{}, | |
| &network.NetworkingConfig{}, | |
| nil, | |
| "", | |
| ) | |
| assert.NilError(t, err) | |
| container := resp.ID | |
| defer client.ContainerRemove(context.Background(), container, types.ContainerRemoveOptions{ | |
| Force: true, | |
| }) | |
| attach, err := client.ContainerAttach(context.Background(), container, types.ContainerAttachOptions{ | |
| Stdout: true, | |
| Stderr: true, | |
| }) | |
| assert.NilError(t, err) | |
| mediaType, ok := attach.MediaType() | |
| assert.Check(t, ok) | |
| assert.Check(t, mediaType == expected) | |
| } |