aboutsummaryrefslogtreecommitdiff
path: root/src/cmd
diff options
context:
space:
mode:
authorThan McIntosh <thanm@google.com>2017-11-09 15:41:45 -0500
committerThan McIntosh <thanm@google.com>2017-11-09 21:55:42 +0000
commit95322a3ac68b206c3394329cb00a0d511e77e0f9 (patch)
tree150081ceffeee3028f28d67ba6f0802267da68d4 /src/cmd
parent2f53fb58a8664c96a770bfb8c8d1b0596fbae481 (diff)
downloadgo-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>
Diffstat (limited to 'src/cmd')
-rw-r--r--src/cmd/go/go_test.go9
-rw-r--r--src/cmd/go/internal/test/test.go6
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
}