package container import ( "context" "fmt" "io" "strings" "testing" "github.com/docker/cli/internal/test" "gotest.tools/v3/assert" is "gotest.tools/v3/assert/cmp" ) func TestRunPause(t *testing.T) { cli := test.NewFakeCli( &fakeClient{ containerPauseFunc: func(ctx context.Context, container string) error { return nil }, }, ) cmd := NewPauseCommand(cli) cmd.SetOut(io.Discard) cmd.SetArgs([]string{"container-id-1", "container-id-2"}) err := cmd.Execute() assert.NilError(t, err) containerIDs := strings.SplitN(cli.OutBuffer().String(), "\n", 2) assert.Assert(t, is.Len(containerIDs, 2)) containerID1 := strings.TrimSpace(containerIDs[0]) containerID2 := strings.TrimSpace(containerIDs[1]) assert.Check(t, is.Equal(containerID1, "container-id-1")) assert.Check(t, is.Equal(containerID2, "container-id-2")) } func TestRunPauseClientError(t *testing.T) { cli := test.NewFakeCli( &fakeClient{ containerPauseFunc: func(ctx context.Context, container string) error { return fmt.Errorf("client error for container %s", container) }, }, ) cmd := NewPauseCommand(cli) cmd.SetOut(io.Discard) cmd.SetErr(io.Discard) cmd.SetArgs([]string{"container-id-1", "container-id-2"}) err := cmd.Execute() errs := strings.SplitN(err.Error(), "\n", 2) assert.Assert(t, is.Len(errs, 2)) errContainerID1 := errs[0] errContainerID2 := errs[1] assert.Assert(t, is.Equal(errContainerID1, "client error for container container-id-1")) assert.Assert(t, is.Equal(errContainerID2, "client error for container container-id-2")) }