From fe728e77806c06b48dfc2a6897e56e0ac4791b27 Mon Sep 17 00:00:00 2001 From: Talon Bowler Date: Wed, 12 Jun 2024 10:31:22 -0700 Subject: [PATCH] update the lint subrequest call to error when a build error was encountered during linting Signed-off-by: Talon Bowler (cherry picked from commit 927fb6731c2c53da85627a5c9acd93d5439fdb5e) --- commands/build.go | 23 ++++++++++++++++++++++- tests/build.go | 2 +- 2 files changed, 23 insertions(+), 2 deletions(-) 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))