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 <thanm@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
Than McIntosh 2017-11-09 15:41:45 -05:00
parent 2f53fb58a8
commit 95322a3ac6
2 changed files with 13 additions and 2 deletions

View File

@ -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")
}

View File

@ -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
}