diff options
Diffstat (limited to 'src/os/exec/exec_test.go')
| -rw-r--r-- | src/os/exec/exec_test.go | 38 |
1 files changed, 5 insertions, 33 deletions
diff --git a/src/os/exec/exec_test.go b/src/os/exec/exec_test.go index 05cf807583..c1d2a8f49c 100644 --- a/src/os/exec/exec_test.go +++ b/src/os/exec/exec_test.go @@ -1052,41 +1052,18 @@ func TestContextCancel(t *testing.T) { defer cancel() c := helperCommandContext(t, ctx, "cat") - r, w, err := os.Pipe() - if err != nil { - t.Fatal(err) - } - c.Stdin = r - - stdout, err := c.StdoutPipe() + stdin, err := c.StdinPipe() if err != nil { t.Fatal(err) } - readDone := make(chan struct{}) - go func() { - defer close(readDone) - var a [1024]byte - for { - n, err := stdout.Read(a[:]) - if err != nil { - if err != io.EOF { - t.Errorf("unexpected read error: %v", err) - } - return - } - t.Logf("%s", a[:n]) - } - }() + defer stdin.Close() if err := c.Start(); err != nil { t.Fatal(err) } - if err := r.Close(); err != nil { - t.Fatal(err) - } - - if _, err := io.WriteString(w, "echo"); err != nil { + // At this point the process is alive. Ensure it by sending data to stdin. + if _, err := io.WriteString(stdin, "echo"); err != nil { t.Fatal(err) } @@ -1096,7 +1073,7 @@ func TestContextCancel(t *testing.T) { // should now fail. Give the process a little while to die. start := time.Now() for { - if _, err := io.WriteString(w, "echo"); err != nil { + if _, err := io.WriteString(stdin, "echo"); err != nil { break } if time.Since(start) > time.Minute { @@ -1105,11 +1082,6 @@ func TestContextCancel(t *testing.T) { time.Sleep(time.Millisecond) } - if err := w.Close(); err != nil { - t.Errorf("error closing write end of pipe: %v", err) - } - <-readDone - if err := c.Wait(); err == nil { t.Error("program unexpectedly exited successfully") } else { |
