From 95322a3ac68b206c3394329cb00a0d511e77e0f9 Mon Sep 17 00:00:00 2001 From: Than McIntosh Date: Thu, 9 Nov 2017 15:41:45 -0500 Subject: [PATCH] cmd/go: avoid crashing on 'go test -n' Fix a buglet in the go command support for 'go test -n': check for nil output buffer in action routine. Fixes #22644 Change-Id: I2566e3bb3d53d0324c4ddd6fec5d30224bf290df Reviewed-on: https://go-review.googlesource.com/76710 Run-TryBot: Than McIntosh TryBot-Result: Gobot Gobot Reviewed-by: Russ Cox --- src/cmd/go/go_test.go | 9 +++++++++ src/cmd/go/internal/test/test.go | 6 ++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/cmd/go/go_test.go b/src/cmd/go/go_test.go index b49c558f4a..ecaa3afeae 100644 --- a/src/cmd/go/go_test.go +++ b/src/cmd/go/go_test.go @@ -5060,3 +5060,12 @@ func TestGcflagsPatterns(t *testing.T) { tg.grepStderr("compile.* -N .*-p reflect", "did not build reflect with -N flag") tg.grepStderrNot("compile.* -N .*-p fmt", "incorrectly built fmt with -N flag") } + +// Issue 22644 +func TestGoTestMinusN(t *testing.T) { + // Intent here is to verify that 'go test -n' works without crashing. + // This reuses flag_test.go, but really any test would do. + tg := testgo(t) + defer tg.cleanup() + tg.run("test", "testdata/flag_test.go", "-n", "-args", "-v=7") +} diff --git a/src/cmd/go/internal/test/test.go b/src/cmd/go/internal/test/test.go index c8e843cef2..529c7e93f6 100644 --- a/src/cmd/go/internal/test/test.go +++ b/src/cmd/go/internal/test/test.go @@ -1472,8 +1472,10 @@ func builderCleanTest(b *work.Builder, a *work.Action) error { func builderPrintTest(b *work.Builder, a *work.Action) error { clean := a.Deps[0] run := clean.Deps[0] - os.Stdout.Write(run.TestOutput.Bytes()) - run.TestOutput = nil + if run.TestOutput != nil { + os.Stdout.Write(run.TestOutput.Bytes()) + run.TestOutput = nil + } return nil } -- 2.48.1