internal/testenv: remove RunWithTimout

For most tests, the test's deadline itself is more appropriate than an
arbitrary timeout layered atop of it (especially once #48157 is
implemented), and testenv.Command already adds cleaner timeout
behavior when a command would run too close to the test's deadline.

That makes RunWithTimeout something of an attractive nuisance. For
now, migrate the two existing uses of it to testenv.CommandContext,
with a shorter timeout implemented using context.WithTimeout.

As a followup, we may want to drop the extra timeouts from these
invocations entirely.

Updates #50436.
Updates #37405.

Change-Id: I16840fd36c0137b6da87ec54012b3e44661f0d08
Reviewed-on: https://go-review.googlesource.com/c/go/+/445597
Reviewed-by: Ian Lance Taylor <iant@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>
Auto-Submit: Bryan Mills <bcmills@google.com>
Reviewed-by: Austin Clements <austin@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
Bryan C. Mills 2022-10-26 11:44:34 -04:00 committed by Gopher Robot
parent 84cd7ab3c3
commit e8ec68edfa
3 changed files with 20 additions and 62 deletions

View file

@ -6,6 +6,7 @@ package runtime_test
import (
"bytes"
"context"
"errors"
"flag"
"fmt"
@ -18,6 +19,7 @@ import (
"strings"
"sync"
"testing"
"time"
)
var toRemove []string
@ -58,18 +60,27 @@ func runTestProg(t *testing.T, binary, name string, env ...string) string {
}
func runBuiltTestProg(t *testing.T, exe, name string, env ...string) string {
t.Helper()
if *flagQuick {
t.Skip("-quick")
}
testenv.MustHaveGoBuild(t)
cmd := testenv.CleanCmdEnv(exec.Command(exe, name))
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
defer cancel()
cmd := testenv.CleanCmdEnv(testenv.CommandContext(t, ctx, exe, name))
cmd.Env = append(cmd.Env, env...)
if testing.Short() {
cmd.Env = append(cmd.Env, "RUNTIME_TEST_SHORT=1")
}
out, _ := testenv.RunWithTimeout(t, cmd)
out, err := cmd.CombinedOutput()
if err != nil {
if _, ok := err.(*exec.ExitError); ok {
t.Logf("%v: %v", cmd, err)
} else {
t.Fatalf("%v failed to start: %v", cmd, err)
}
}
return string(out)
}