diff --git a/cmd/kbld/kbld.go b/cmd/kbld/kbld.go index f668df85..59bc2cd4 100644 --- a/cmd/kbld/kbld.go +++ b/cmd/kbld/kbld.go @@ -4,6 +4,7 @@ package main import ( + "fmt" "io" "log" "math/rand" @@ -26,11 +27,17 @@ func main() { confUI := ui.NewConfUI(ui.NewNoopLogger()) defer confUI.Flush() - command := cmd.NewDefaultKbldCmd(confUI) + options := cmd.NewKbldOptions(confUI) + command := cmd.NewKbldCmd(options) err := command.Execute() if err != nil { - confUI.ErrorLinef("kbld: Error: %s", uierrs.NewMultiLineError(err)) + multiLineErr := uierrs.NewMultiLineError(err) + if options.UIFlags.JSON { + _, _ = fmt.Fprintf(os.Stderr, "kbld: Error: %s\n", multiLineErr) + } else { + confUI.ErrorLinef("kbld: Error: %s", multiLineErr) + } os.Exit(1) } diff --git a/test/e2e/resolve_test.go b/test/e2e/resolve_test.go index ad2f80da..f905dc79 100644 --- a/test/e2e/resolve_test.go +++ b/test/e2e/resolve_test.go @@ -6,6 +6,7 @@ package e2e import ( + "bytes" "io/ioutil" "os" "strings" @@ -156,13 +157,16 @@ spec: - image: nginx@sha256:digest ` - _, err := kbld.RunWithOpts([]string{"-f", "-", "--images-annotation=false"}, RunOpts{ - StdinReader: strings.NewReader(input), - AllowError: true, + var stderr bytes.Buffer + out, err := kbld.RunWithOpts([]string{"--json", "-f", "-", "--images-annotation=false"}, RunOpts{ + StdinReader: strings.NewReader(input), + StderrWriter: &stderr, + AllowError: true, }) - expectedErr := "Expected valid digest reference, but found 'nginx@sha256:digest', reason: invalid checksum digest length" - require.Contains(t, err.Error(), expectedErr) + require.EqualError(t, err, "Execution error: stdout: '' stderr: '' error: 'exit status 1'") + require.Empty(t, out) + require.Equal(t, "kbld: Error: \n- Resolving image 'nginx@sha256:digest': Expected valid digest reference, but found 'nginx@sha256:digest', reason: invalid checksum digest length\n", stderr.String()) } func TestResolveUnknownImage(t *testing.T) {