From c69896d8a013fca05ffee479e08605552715f901 Mon Sep 17 00:00:00 2001 From: unclejack Date: Mon, 22 Sep 2014 17:38:55 +0300 Subject: [PATCH] integcli: fix race in runCommandWithStdoutStderr Docker-DCO-1.1-Signed-off-by: Cristian Staretu (github: unclejack) --- integration-cli/utils.go | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/integration-cli/utils.go b/integration-cli/utils.go index 8fed80f32e..c686a0b085 100644 --- a/integration-cli/utils.go +++ b/integration-cli/utils.go @@ -44,14 +44,13 @@ func runCommandWithOutput(cmd *exec.Cmd) (output string, exitCode int, err error } func runCommandWithStdoutStderr(cmd *exec.Cmd) (stdout string, stderr string, exitCode int, err error) { + var ( + stderrBuffer, stdoutBuffer bytes.Buffer + ) exitCode = 0 - var stderrBuffer bytes.Buffer - stderrPipe, err := cmd.StderrPipe() - if err != nil { - return "", "", -1, err - } - go io.Copy(&stderrBuffer, stderrPipe) - out, err := cmd.Output() + cmd.Stderr = &stderrBuffer + cmd.Stdout = &stdoutBuffer + err = cmd.Run() if err != nil { var exiterr error @@ -61,8 +60,8 @@ func runCommandWithStdoutStderr(cmd *exec.Cmd) (stdout string, stderr string, ex exitCode = 127 } } - stdout = string(out) - stderr = string(stderrBuffer.Bytes()) + stdout = stdoutBuffer.String() + stderr = stderrBuffer.String() return }