diff --git a/commands/build.go b/commands/build.go index 9cf34404..09f500f7 100644 --- a/commands/build.go +++ b/commands/build.go @@ -866,7 +866,28 @@ func printResult(f *controllerapi.PrintFunc, res map[string]string) error { case "subrequests.describe": return printValue(subrequests.PrintDescribe, subrequests.SubrequestsDescribeDefinition.Version, f.Format, res) case "lint": - return printValue(lint.PrintLintViolations, lint.SubrequestLintDefinition.Version, f.Format, res) + err := printValue(lint.PrintLintViolations, lint.SubrequestLintDefinition.Version, f.Format, res) + if err != nil { + return err + } + + lintResults := lint.LintResults{} + if result, ok := res["result.json"]; ok { + if err := json.Unmarshal([]byte(result), &lintResults); err != nil { + return err + } + } + if lintResults.Error != nil { + fmt.Println() + lintBuf := bytes.NewBuffer([]byte(lintResults.Error.Message + "\n")) + sourceInfo := lintResults.Sources[lintResults.Error.Location.SourceIndex] + source := errdefs.Source{ + Info: sourceInfo, + Ranges: lintResults.Error.Location.Ranges, + } + source.Print(lintBuf) + return errors.New(lintBuf.String()) + } default: if dt, ok := res["result.json"]; ok && f.Format == "json" { fmt.Println(dt) diff --git a/tests/build.go b/tests/build.go index efe23874..bc5ba59f 100644 --- a/tests/build.go +++ b/tests/build.go @@ -821,7 +821,7 @@ COPy --from=base \ stderr := bytes.Buffer{} cmd.Stdout = &stdout cmd.Stderr = &stderr - require.NoError(t, cmd.Run(), stdout.String(), stderr.String()) + require.Error(t, cmd.Run(), stdout.String(), stderr.String()) var res lint.LintResults require.NoError(t, json.Unmarshal(stdout.Bytes(), &res))