diff options
| author | Than McIntosh <thanm@google.com> | 2017-11-09 15:41:45 -0500 |
|---|---|---|
| committer | Than McIntosh <thanm@google.com> | 2017-11-09 21:55:42 +0000 |
| commit | 95322a3ac68b206c3394329cb00a0d511e77e0f9 (patch) | |
| tree | 150081ceffeee3028f28d67ba6f0802267da68d4 | |
| parent | 2f53fb58a8664c96a770bfb8c8d1b0596fbae481 (diff) | |
| download | go-95322a3ac68b206c3394329cb00a0d511e77e0f9.tar.xz | |
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>
| -rw-r--r-- | src/cmd/go/go_test.go | 9 | ||||
| -rw-r--r-- | 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 } |
