Skip to content

Commit d3a783c

Browse files
authored
Implement typed error for docker runner: ErrNoImage (#3123)
* Implement typed error for docker runner (ErrNoImage) * remove logs
1 parent 5e43734 commit d3a783c

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

pkg/docker/runner.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ const (
3333
DefaultStopTimeout = 10 * time.Second
3434
)
3535

36+
type ErrNoImage struct{}
37+
38+
func (e ErrNoImage) Error() string {
39+
return "Function has no associated image. Has it been built?"
40+
}
41+
3642
// Runner starts and stops functions as local containers.
3743
type Runner struct {
3844
verbose bool // Verbose logging
@@ -81,7 +87,7 @@ func (n *Runner) Run(ctx context.Context, f fn.Function, address string, startTi
8187
port = choosePort(host, port, DefaultDialTimeout)
8288

8389
if f.Build.Image == "" {
84-
return job, errors.New("Function has no associated image. Has it been built?")
90+
return job, ErrNoImage{}
8591
}
8692
if c, _, err = NewClient(client.DefaultDockerHost); err != nil {
8793
return job, errors.Wrap(err, "failed to create Docker API client")

pkg/docker/runner_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package docker_test
22

33
import (
44
"context"
5+
"errors"
56
"flag"
67
"fmt"
78
"os"
@@ -48,9 +49,8 @@ func TestDockerRunImagelessError(t *testing.T) {
4849
f := fn.NewFunctionWith(fn.Function{})
4950

5051
_, err := runner.Run(context.Background(), f, "", fn.DefaultStartTimeout)
51-
// TODO: switch to typed error:
52-
expectedErrorMessage := "Function has no associated image. Has it been built?"
53-
if err == nil || err.Error() != expectedErrorMessage {
54-
t.Fatalf("Expected error '%v', got '%v'", expectedErrorMessage, err)
52+
var noImageErr docker.ErrNoImage
53+
if !errors.As(err, &noImageErr) {
54+
t.Fatalf("expected ErrNoImage, got %v", err)
5555
}
5656
}

0 commit comments

Comments
 (0)