Commit 496688b3 authored by Russ Cox's avatar Russ Cox

cmd/go: honor -timeout=0 to mean no timeout

The test binaries accept -timeout=0 to mean no timeout,
but then the backup timer in cmd/go kills the test after 1 minute.
Make cmd/go understand this special case and change
behavior accordingly.

Fixes #14780.

Change-Id: I66bf517173a4ad21d53a5ee88d163f04b8929fb6
Reviewed-on: https://go-review.googlesource.com/81499
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
parent 7684fe0b
...@@ -1199,9 +1199,9 @@ ...@@ -1199,9 +1199,9 @@
// GO386 // GO386
// For GOARCH=386, the floating point instruction set. // For GOARCH=386, the floating point instruction set.
// Valid values are 387, sse2. // Valid values are 387, sse2.
// GOMIPS // GOMIPS
// For GOARCH=mips{,le}, whether to use floating point instructions. // For GOARCH=mips{,le}, whether to use floating point instructions.
// Valid values are hardfloat (default), softfloat. // Valid values are hardfloat (default), softfloat.
// //
// Special-purpose environment variables: // Special-purpose environment variables:
// //
...@@ -1575,6 +1575,7 @@ ...@@ -1575,6 +1575,7 @@
// //
// -timeout d // -timeout d
// If a test binary runs longer than duration d, panic. // If a test binary runs longer than duration d, panic.
// If d is 0, the timeout is disabled.
// The default is 10 minutes (10m). // The default is 10 minutes (10m).
// //
// -v // -v
......
...@@ -272,6 +272,7 @@ const testFlag2 = ` ...@@ -272,6 +272,7 @@ const testFlag2 = `
-timeout d -timeout d
If a test binary runs longer than duration d, panic. If a test binary runs longer than duration d, panic.
If d is 0, the timeout is disabled.
The default is 10 minutes (10m). The default is 10 minutes (10m).
-v -v
...@@ -549,6 +550,10 @@ func runTest(cmd *base.Command, args []string) { ...@@ -549,6 +550,10 @@ func runTest(cmd *base.Command, args []string) {
// timer does not get a chance to fire. // timer does not get a chance to fire.
if dt, err := time.ParseDuration(testTimeout); err == nil && dt > 0 { if dt, err := time.ParseDuration(testTimeout); err == nil && dt > 0 {
testKillTimeout = dt + 1*time.Minute testKillTimeout = dt + 1*time.Minute
} else if err == nil && dt == 0 {
// An explicit zero disables the test timeout.
// Let it have one century (almost) before we kill it.
testKillTimeout = 100 * 365 * 24 * time.Hour
} }
// show passing test output (after buffering) with -v flag. // show passing test output (after buffering) with -v flag.
......
...@@ -265,7 +265,7 @@ var ( ...@@ -265,7 +265,7 @@ var (
mutexProfile = flag.String("test.mutexprofile", "", "write a mutex contention profile to the named file after execution") mutexProfile = flag.String("test.mutexprofile", "", "write a mutex contention profile to the named file after execution")
mutexProfileFraction = flag.Int("test.mutexprofilefraction", 1, "if >= 0, calls runtime.SetMutexProfileFraction()") mutexProfileFraction = flag.Int("test.mutexprofilefraction", 1, "if >= 0, calls runtime.SetMutexProfileFraction()")
traceFile = flag.String("test.trace", "", "write an execution trace to `file`") traceFile = flag.String("test.trace", "", "write an execution trace to `file`")
timeout = flag.Duration("test.timeout", 0, "panic test binary after duration `d` (0 means unlimited)") timeout = flag.Duration("test.timeout", 0, "panic test binary after duration `d` (default 0, timeout disabled)")
cpuListStr = flag.String("test.cpu", "", "comma-separated `list` of cpu counts to run each test with") cpuListStr = flag.String("test.cpu", "", "comma-separated `list` of cpu counts to run each test with")
parallel = flag.Int("test.parallel", runtime.GOMAXPROCS(0), "run at most `n` tests in parallel") parallel = flag.Int("test.parallel", runtime.GOMAXPROCS(0), "run at most `n` tests in parallel")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment