This commit adds tests for the commands docker kill, docker commit, and docker pause. Also, it creates the mock methods of the docker client ContainerCommit and ContainerPause so they can be used in the tests. For docker kill, it covers the cases that: - the command runs successfully - the client returns an error For docker commit, it covers the cases that: - the command runs successfully - the client returns an error For docker pause, it covers the cases that: - the command runs successfully - the client returns an error Signed-off-by: Stavros Panakakis <stavrospanakakis@gmail.com>
75 lines
1.6 KiB
Go
75 lines
1.6 KiB
Go
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 TestRunKill(t *testing.T) {
|
|
cli := test.NewFakeCli(&fakeClient{
|
|
containerKillFunc: func(
|
|
ctx context.Context,
|
|
container string,
|
|
signal string,
|
|
) error {
|
|
assert.Assert(t, is.Equal(signal, "STOP"))
|
|
return nil
|
|
},
|
|
})
|
|
|
|
cmd := NewKillCommand(cli)
|
|
cmd.SetOut(io.Discard)
|
|
|
|
cmd.SetArgs([]string{
|
|
"--signal", "STOP",
|
|
"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 TestRunKillClientError(t *testing.T) {
|
|
cli := test.NewFakeCli(&fakeClient{
|
|
containerKillFunc: func(
|
|
ctx context.Context,
|
|
container string,
|
|
signal string,
|
|
) error {
|
|
return fmt.Errorf("client error for container %s", container)
|
|
},
|
|
})
|
|
|
|
cmd := NewKillCommand(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"))
|
|
}
|