From cfe3e389518b162efa3a66e9de7193a2bcc2bd4a Mon Sep 17 00:00:00 2001 From: Wouter Verlaek Date: Tue, 8 Apr 2025 15:43:11 +0000 Subject: [PATCH] Fix build failure reported as success --- pkg/leeway/build.go | 3 +-- pkg/leeway/reporter.go | 2 +- pkg/leeway/reporter_test.go | 20 ++++++++++++++++++-- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/pkg/leeway/build.go b/pkg/leeway/build.go index 1494f22..1588d0a 100644 --- a/pkg/leeway/build.go +++ b/pkg/leeway/build.go @@ -631,7 +631,7 @@ func (p *Package) buildDependencies(buildctx *buildContext) error { return g.Wait() } -func (p *Package) build(buildctx *buildContext) error { +func (p *Package) build(buildctx *buildContext) (err error) { // Try to obtain lock for building this package doBuild := buildctx.ObtainBuildLock(p) if !doBuild { @@ -663,7 +663,6 @@ func (p *Package) build(buildctx *buildContext) error { buildctx.Reporter.PackageBuildStarted(p) // Ensure we notify reporter when build finishes - var err error defer func() { pkgRep.Error = err buildctx.Reporter.PackageBuildFinished(p, pkgRep) diff --git a/pkg/leeway/reporter.go b/pkg/leeway/reporter.go index 3a8e76c..138cba1 100644 --- a/pkg/leeway/reporter.go +++ b/pkg/leeway/reporter.go @@ -241,7 +241,7 @@ func (r *ConsoleReporter) PackageBuildFinished(pkg *Package, rep *PackageBuildRe if rep.TestCoverageAvailable { coverage = color.Sprintf("test coverage: %d%% (%d of %d functions have tests)\n", rep.TestCoveragePercentage, rep.FunctionsWithTest, rep.FunctionsWithTest+rep.FunctionsWithoutTest) } - msg = color.Sprintf("%spackage build succeded (%.2fs)%s\n", coverage, dur.Seconds(), phaseDurStr) + msg = color.Sprintf("%spackage build succeeded (%.2fs)%s\n", coverage, dur.Seconds(), phaseDurStr) } //nolint:errcheck io.WriteString(out, msg) diff --git a/pkg/leeway/reporter_test.go b/pkg/leeway/reporter_test.go index 535744c..ee6381c 100644 --- a/pkg/leeway/reporter_test.go +++ b/pkg/leeway/reporter_test.go @@ -2,6 +2,7 @@ package leeway import ( "bytes" + "errors" "testing" "time" @@ -64,7 +65,7 @@ func TestConsoleReporter(t *testing.T) { }, Expect: Expectation{ Output: `[test:test] build started (version unknown) -[test:test] package build succeded (5.00s) [prep: 1.0s | pull: 1.0s | lint: 1.0s | test: 1.0s | build: 1.0s] +[test:test] package build succeeded (5.00s) [prep: 1.0s | pull: 1.0s | lint: 1.0s | test: 1.0s | build: 1.0s] `, }, }, @@ -78,7 +79,22 @@ func TestConsoleReporter(t *testing.T) { }, Expect: Expectation{ Output: `[test:test] build started (version unknown) -[test:test] package build succeded (0.00s) +[test:test] package build succeeded (0.00s) +`, + }, + }, + { + Name: "failed build", + Func: func(t *testing.T, r *ConsoleReporter) { + r.PackageBuildStarted(pkg) + r.PackageBuildFinished(pkg, &PackageBuildReport{ + Error: errors.New("failed"), + }) + }, + Expect: Expectation{ + Output: `[test:test] build started (version unknown) +[test:test] package build failed while preping +[test:test] Reason: failed `, }, },