Переглянути джерело

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 <david.calavera@gmail.com>
David Calavera 9 роки тому
батько
коміт
f38257308b
1 змінених файлів з 8 додано та 1 видалено
  1. 8 1
      pkg/integration/utils.go

+ 8 - 1
pkg/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])