internal/pkg/docker/dockerengine/dockerenginetest/dockerenginetest.go (64 lines of code) (raw):
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package dockerenginetest
import (
"context"
"io"
"github.com/aws/copilot-cli/internal/pkg/docker/dockerengine"
)
// Double is a test double for dockerengine.DockerCmdClient
type Double struct {
StopFn func(context.Context, string) error
IsContainerRunningFn func(context.Context, string) (bool, error)
RunFn func(context.Context, *dockerengine.RunOptions) error
BuildFn func(context.Context, *dockerengine.BuildArguments, io.Writer) error
ExecFn func(context.Context, string, io.Writer, string, ...string) error
IsContainerHealthyFn func(ctx context.Context, containerName string) (bool, error)
ContainerExitCodeFn func(ctx context.Context, containerName string) (int, error)
RmFn func(context.Context, string) error
}
// Stop calls the stubbed function.
func (d *Double) Stop(ctx context.Context, name string) error {
if d.StopFn == nil {
return nil
}
return d.StopFn(ctx, name)
}
// IsContainerRunning calls the stubbed function.
func (d *Double) IsContainerRunning(ctx context.Context, name string) (bool, error) {
if d.IsContainerRunningFn == nil {
return false, nil
}
return d.IsContainerRunningFn(ctx, name)
}
// Run calls the stubbed function.
func (d *Double) Run(ctx context.Context, opts *dockerengine.RunOptions) error {
if d.RunFn == nil {
return nil
}
return d.RunFn(ctx, opts)
}
// Build calls the stubbed function.
func (d *Double) Build(ctx context.Context, in *dockerengine.BuildArguments, w io.Writer) error {
if d.BuildFn == nil {
return nil
}
return d.BuildFn(ctx, in, w)
}
// Exec calls the stubbed function.
func (d *Double) Exec(ctx context.Context, container string, out io.Writer, cmd string, args ...string) error {
if d.ExecFn == nil {
return nil
}
return d.ExecFn(ctx, container, out, cmd, args...)
}
// Rm calls the stubbed function.
func (d *Double) Rm(ctx context.Context, name string) error {
if d.RmFn == nil {
return nil
}
return d.RmFn(ctx, name)
}
// ContainerExitCode implements orchestrator.DockerEngine.
func (d *Double) ContainerExitCode(ctx context.Context, containerName string) (int, error) {
if d.ContainerExitCodeFn == nil {
return 0, nil
}
return d.ContainerExitCodeFn(ctx, containerName)
}
// IsContainerHealthy implements orchestrator.DockerEngine.
func (d *Double) IsContainerHealthy(ctx context.Context, containerName string) (bool, error) {
if d.IsContainerHealthyFn == nil {
return false, nil
}
return d.IsContainerHealthyFn(ctx, containerName)
}