From c5ceeda30a42667f0c91afdecf028b3b745ccc12 Mon Sep 17 00:00:00 2001 From: David Calavera Date: Tue, 22 Dec 2015 15:17:15 -0500 Subject: [PATCH] Catch command pipeline error. Rather than ignoring errors in the pipeline, return an execution error and do not proceed with the latest command in the pipeline. Signed-off-by: David Calavera --- integration/utils.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/integration/utils.go b/integration/utils.go index aaf2ae5..cfccc80 100644 --- a/integration/utils.go +++ b/integration/utils.go @@ -191,12 +191,19 @@ func RunCommandPipelineWithOutput(cmds ...*exec.Cmd) (output string, exitCode in } } + var pipelineError error defer func() { // wait all cmds except the last to release their resources for _, cmd := range cmds[:len(cmds)-1] { - cmd.Wait() + if err := cmd.Wait(); err != nil { + pipelineError = fmt.Errorf("command %s failed with error: %v", cmd.Path, err) + break + } } }() + if pipelineError != nil { + return "", 0, pipelineError + } // wait on last cmd return RunCommandWithOutput(cmds[len(cmds)-1])