diff --git a/integration/container/attach_test.go b/integration/container/attach_test.go index bc7a659c72..fa8b0ca209 100644 --- a/integration/container/attach_test.go +++ b/integration/container/attach_test.go @@ -8,43 +8,52 @@ import ( "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/network" "gotest.tools/v3/assert" + is "gotest.tools/v3/assert/cmp" ) -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)() +func TestAttach(t *testing.T) { + t.Cleanup(setupTest(t)) client := testEnv.APIClient() - resp, err := client.ContainerCreate(context.Background(), - &container.Config{ - Image: "busybox", - Cmd: []string{"echo", "hello"}, - Tty: tty, + tests := []struct { + doc string + tty bool + expectedMediaType string + }{ + { + doc: "without TTY", + expectedMediaType: types.MediaTypeMultiplexedStream, }, - &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) + { + doc: "with TTY", + tty: true, + expectedMediaType: types.MediaTypeRawStream, + }, + } + for _, tc := range tests { + tc := tc + t.Run(tc.doc, func(t *testing.T) { + t.Parallel() + resp, err := client.ContainerCreate(context.Background(), + &container.Config{ + Image: "busybox", + Cmd: []string{"echo", "hello"}, + Tty: tc.tty, + }, + &container.HostConfig{}, + &network.NetworkingConfig{}, + nil, + "", + ) + assert.NilError(t, err) + attach, err := client.ContainerAttach(context.Background(), resp.ID, types.ContainerAttachOptions{ + Stdout: true, + Stderr: true, + }) + assert.NilError(t, err) + mediaType, ok := attach.MediaType() + assert.Check(t, ok) + assert.Check(t, is.Equal(mediaType, tc.expectedMediaType)) + }) + } }