mirror of https://github.com/golang/go.git
os/exec: ignore hungup error while copying stdin on Plan 9
Fixes #35753 Change-Id: I38674c59c601785eb25b778dc25efdb92231dd9b Reviewed-on: https://go-review.googlesource.com/c/go/+/208223 Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
7d30af8e17
commit
a3dc6da6d6
|
|
@ -238,7 +238,6 @@ func (c *Cmd) argv() []string {
|
|||
|
||||
// skipStdinCopyError optionally specifies a function which reports
|
||||
// whether the provided stdin copy error should be ignored.
|
||||
// It is non-nil everywhere but Plan 9, which lacks EPIPE. See exec_posix.go.
|
||||
var skipStdinCopyError func(error) bool
|
||||
|
||||
func (c *Cmd) stdin() (f *os.File, err error) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
// Copyright 2019 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package exec
|
||||
|
||||
import "os"
|
||||
|
||||
func init() {
|
||||
skipStdinCopyError = func(err error) bool {
|
||||
// Ignore hungup errors copying to stdin if the program
|
||||
// completed successfully otherwise.
|
||||
// See Issue 35753.
|
||||
pe, ok := err.(*os.PathError)
|
||||
return ok &&
|
||||
pe.Op == "write" && pe.Path == "|1" &&
|
||||
pe.Err.Error() == "i/o on hungup channel"
|
||||
}
|
||||
}
|
||||
|
|
@ -974,11 +974,6 @@ func (delayedInfiniteReader) Read(b []byte) (int, error) {
|
|||
func TestIgnorePipeErrorOnSuccess(t *testing.T) {
|
||||
testenv.MustHaveExec(t)
|
||||
|
||||
// We really only care about testing this on Unixy and Windowsy things.
|
||||
if runtime.GOOS == "plan9" {
|
||||
t.Skipf("skipping test on %q", runtime.GOOS)
|
||||
}
|
||||
|
||||
testWith := func(r io.Reader) func(*testing.T) {
|
||||
return func(t *testing.T) {
|
||||
cmd := helperCommand(t, "echo", "foo")
|
||||
|
|
|
|||
Loading…
Reference in New Issue