From c4fa25f4fc8f4419d0b0707bcdae9199a745face Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Wed, 24 Jun 2015 17:18:56 +0200 Subject: os/exec: make Cmd.Output include stderr in ExitError Change-Id: I3c6649d2f2521ab0843b13308569867d2e5f02da Reviewed-on: https://go-review.googlesource.com/11415 Reviewed-by: Ian Lance Taylor Run-TryBot: Brad Fitzpatrick Reviewed-by: Andrew Gerrand TryBot-Result: Gobot Gobot --- src/os/exec/exec_test.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/os/exec/exec_test.go') diff --git a/src/os/exec/exec_test.go b/src/os/exec/exec_test.go index 28be21ce63..52b4724ab0 100644 --- a/src/os/exec/exec_test.go +++ b/src/os/exec/exec_test.go @@ -760,6 +760,9 @@ func TestHelperProcess(*testing.T) { } fmt.Print(p) os.Exit(0) + case "stderrfail": + fmt.Fprintf(os.Stderr, "some stderr text\n") + os.Exit(1) default: fmt.Fprintf(os.Stderr, "Unknown command %q\n", cmd) os.Exit(2) @@ -816,3 +819,19 @@ func TestClosePipeOnCopyError(t *testing.T) { t.Fatalf("yes got stuck writing to bad writer") } } + +func TestOutputStderrCapture(t *testing.T) { + testenv.MustHaveExec(t) + + cmd := helperCommand(t, "stderrfail") + _, err := cmd.Output() + ee, ok := err.(*exec.ExitError) + if !ok { + t.Fatalf("Output error type = %T; want ExitError", err) + } + got := string(ee.Stderr) + want := "some stderr text\n" + if got != want { + t.Errorf("ExitError.Stderr = %q; want %q", got, want) + } +} -- cgit v1.3