mirror of
https://github.com/golang/go
synced 2024-09-24 05:20:13 -06:00
cmd/go: display test binary output if invoked with -help
Fixes #39997 Change-Id: I87ea616bac809b96fcd40f3bbdbbf1c603b9d00e Reviewed-on: https://go-review.googlesource.com/c/go/+/240878 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
This commit is contained in:
parent
20afbe86be
commit
6a167c7397
@ -487,6 +487,8 @@ var (
|
||||
pkgArgs []string
|
||||
pkgs []*load.Package
|
||||
|
||||
testHelp bool // -help option passed to test via -args
|
||||
|
||||
testKillTimeout = 100 * 365 * 24 * time.Hour // backup alarm; defaults to about a century if no timeout is set
|
||||
testCacheExpire time.Time // ignore cached test results before this time
|
||||
|
||||
@ -532,7 +534,7 @@ func testNeedBinary() bool {
|
||||
|
||||
// testShowPass reports whether the output for a passing test should be shown.
|
||||
func testShowPass() bool {
|
||||
return testV || (testList != "")
|
||||
return testV || (testList != "") || testHelp
|
||||
}
|
||||
|
||||
var defaultVetFlags = []string{
|
||||
|
@ -333,6 +333,23 @@ func testFlags(args []string) (packageNames, passToTest []string) {
|
||||
injectedFlags = append(injectedFlags, "-test.outputdir="+testOutputDir)
|
||||
}
|
||||
|
||||
// If the user is explicitly passing -help or -h, show output
|
||||
// of the test binary so that the help output is displayed
|
||||
// even though the test will exit with success.
|
||||
// This loop is imperfect: it will do the wrong thing for a case
|
||||
// like -args -test.outputdir -help. Such cases are probably rare,
|
||||
// and getting this wrong doesn't do too much harm.
|
||||
helpLoop:
|
||||
for _, arg := range explicitArgs {
|
||||
switch arg {
|
||||
case "--":
|
||||
break helpLoop
|
||||
case "-h", "-help", "--help":
|
||||
testHelp = true
|
||||
break helpLoop
|
||||
}
|
||||
}
|
||||
|
||||
// Ensure that -race and -covermode are compatible.
|
||||
if testCoverMode == "" {
|
||||
testCoverMode = "set"
|
||||
|
6
src/cmd/go/testdata/script/test_flags.txt
vendored
6
src/cmd/go/testdata/script/test_flags.txt
vendored
@ -57,6 +57,10 @@ stderr -count=1 'invalid value "walrus" for flag -covermode: valid modes are .*$
|
||||
stderr '^usage: go test .*$'
|
||||
stderr '^Run ''go help test'' and ''go help testflag'' for details.$'
|
||||
|
||||
# Passing -help to the test binary should show flag help.
|
||||
go test ./x -args -help
|
||||
stdout 'usage_message'
|
||||
|
||||
# -covermode, -coverpkg, and -coverprofile should imply -cover
|
||||
go test -covermode=set ./x
|
||||
stdout '\s+coverage:\s+'
|
||||
@ -98,6 +102,8 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
var _ = flag.String("usage_message", "", "dummy flag to check usage message")
|
||||
|
||||
func TestLogTimeout(t *testing.T) {
|
||||
t.Log(flag.Lookup("test.timeout").Value)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user