diff --git a/pkg/container/container.go b/pkg/container/container.go index ab534f5e9..af136ce47 100644 --- a/pkg/container/container.go +++ b/pkg/container/container.go @@ -37,6 +37,8 @@ type Container interface { // * docker func NewContainer(ctx *context.Context, driver string, url string) (Container, error) { switch driver { + case "": + return nil, ErrNoContainerDriver{} case "docker": cli, err := NewDockerClient(ctx) if err != nil { diff --git a/pkg/container/container_test.go b/pkg/container/container_test.go index ed4a51a5d..3026e7549 100644 --- a/pkg/container/container_test.go +++ b/pkg/container/container_test.go @@ -16,20 +16,25 @@ package container import ( "context" - "fmt" "testing" "github.com/stretchr/testify/assert" ) func TestNewContainer(t *testing.T) { + assert := assert.New(t) + ctx := context.Background() - _, actualErr := NewContainer(&ctx, "test_drv", "") - expectedErr := ErrContainerDrvNotSupported{Driver: "test_drv"} - errS := fmt.Sprintf( - "Call NewContainer should have returned error %s, got %s", - expectedErr, - actualErr, - ) - assert.Equal(t, actualErr, expectedErr, errS) + + t.Run("not-supported-container", func(t *testing.T) { + cnt, err := NewContainer(&ctx, "test_drv", "") + assert.Equal(nil, cnt) + assert.Equal(ErrContainerDrvNotSupported{Driver: "test_drv"}, err) + }) + + t.Run("empty-container", func(t *testing.T) { + cnt, err := NewContainer(&ctx, "", "") + assert.Equal(nil, cnt) + assert.Equal(ErrNoContainerDriver{}, err) + }) } diff --git a/pkg/container/errors.go b/pkg/container/errors.go index 13703db2c..a465560be 100644 --- a/pkg/container/errors.go +++ b/pkg/container/errors.go @@ -44,3 +44,11 @@ type ErrContainerDrvNotSupported struct { func (e ErrContainerDrvNotSupported) Error() string { return fmt.Sprintf("Driver %s is not supported", e.Driver) } + +// ErrNoContainerDriver returned if no runtime defined in config +type ErrNoContainerDriver struct { +} + +func (e ErrNoContainerDriver) Error() string { + return fmt.Sprintf("container runtime is not defined in airshipctl config") +}