diff options
| author | Bryan C. Mills <bcmills@google.com> | 2023-08-08 12:02:02 -0400 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2023-08-08 17:51:44 +0000 |
| commit | 0c13bd637c87581c9f0f63d9cca57b80b8de2dc0 (patch) | |
| tree | fb2a8f2a550d51a88afa83c86cd9f0935ba54289 /src/cmd/cgo/internal/testplugin/plugin_test.go | |
| parent | 94e40d5603797fe4d9302421682bb5b997d9c568 (diff) | |
| download | go-0c13bd637c87581c9f0f63d9cca57b80b8de2dc0.tar.xz | |
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>
Diffstat (limited to 'src/cmd/cgo/internal/testplugin/plugin_test.go')
| -rw-r--r-- | src/cmd/cgo/internal/testplugin/plugin_test.go | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/src/cmd/cgo/internal/testplugin/plugin_test.go b/src/cmd/cgo/internal/testplugin/plugin_test.go index 53ccc17a07..22fa35512b 100644 --- a/src/cmd/cgo/internal/testplugin/plugin_test.go +++ b/src/cmd/cgo/internal/testplugin/plugin_test.go @@ -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") } } |
