mirror of
https://github.com/golang/go
synced 2024-11-23 07:30:05 -07:00
cmd/cgo/internal/testplugin: simplify TestForkExec and log stderr output
This test used to run with a separate goroutine for timeout behavior, presumably because it was difficult to set an appropriate timeout. Now that the test is in cmd instead of misc, we can use internal/testenv.Command, which makes adding the test timeout much simpler and eliminates the need for the explicit goroutine. For #61846. Change-Id: I68ea09fcf2aa394bed1e900cf30ef7d143fa249f Reviewed-on: https://go-review.googlesource.com/c/go/+/517095 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@google.com> Run-TryBot: Bryan Mills <bcmills@google.com> Auto-Submit: Bryan Mills <bcmills@google.com>
This commit is contained in:
parent
94e40d5603
commit
0c13bd637c
@ -367,25 +367,16 @@ func TestForkExec(t *testing.T) {
|
||||
t.Parallel()
|
||||
goCmd(t, "build", "-o", "forkexec.exe", "./forkexec/main.go")
|
||||
|
||||
var cmd *exec.Cmd
|
||||
done := make(chan int, 1)
|
||||
|
||||
go func() {
|
||||
for i := 0; i < 100; i++ {
|
||||
cmd = exec.Command("./forkexec.exe", "1")
|
||||
err := cmd.Run()
|
||||
if err != nil {
|
||||
t.Errorf("running command failed: %v", err)
|
||||
break
|
||||
for i := 0; i < 100; i++ {
|
||||
cmd := testenv.Command(t, "./forkexec.exe", "1")
|
||||
err := cmd.Run()
|
||||
if err != nil {
|
||||
if ee, ok := err.(*exec.ExitError); ok && len(ee.Stderr) > 0 {
|
||||
t.Logf("stderr:\n%s", ee.Stderr)
|
||||
}
|
||||
t.Errorf("running command failed: %v", err)
|
||||
break
|
||||
}
|
||||
done <- 1
|
||||
}()
|
||||
select {
|
||||
case <-done:
|
||||
case <-time.After(5 * time.Minute):
|
||||
cmd.Process.Kill()
|
||||
t.Fatalf("subprocess hang")
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user