initial version of cli integration tests
Docker-DCO-1.1-Signed-off-by: Cristian Staretu <cristian.staretu@gmail.com> (github: unclejack) Upstream-commit: 6db32fdefdae49843ed9535b3af1099e6bd2755d Component: engine
This commit is contained in:
109
components/engine/integration-cli/utils.go
Normal file
109
components/engine/integration-cli/utils.go
Normal file
@ -0,0 +1,109 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io"
|
||||
"os/exec"
|
||||
"strings"
|
||||
"syscall"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func getExitCode(err error) (int, error) {
|
||||
exitCode := 0
|
||||
if exiterr, ok := err.(*exec.ExitError); ok {
|
||||
if procExit := exiterr.Sys().(syscall.WaitStatus); ok {
|
||||
return procExit.ExitStatus(), nil
|
||||
}
|
||||
}
|
||||
return exitCode, fmt.Errorf("failed to get exit code")
|
||||
}
|
||||
|
||||
func runCommandWithOutput(cmd *exec.Cmd) (output string, exitCode int, err error) {
|
||||
exitCode = 0
|
||||
out, err := cmd.CombinedOutput()
|
||||
if err != nil {
|
||||
var exiterr error
|
||||
if exitCode, exiterr = getExitCode(err); exiterr != nil {
|
||||
// TODO: Fix this so we check the error's text.
|
||||
// we've failed to retrieve exit code, so we set it to 127
|
||||
exitCode = 127
|
||||
}
|
||||
}
|
||||
output = string(out)
|
||||
return
|
||||
}
|
||||
|
||||
func runCommandWithStdoutStderr(cmd *exec.Cmd) (stdout string, stderr string, exitCode int, err error) {
|
||||
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()
|
||||
|
||||
if err != nil {
|
||||
var exiterr error
|
||||
if exitCode, exiterr = getExitCode(err); exiterr != nil {
|
||||
// TODO: Fix this so we check the error's text.
|
||||
// we've failed to retrieve exit code, so we set it to 127
|
||||
exitCode = 127
|
||||
}
|
||||
}
|
||||
stdout = string(out)
|
||||
stderr = string(stderrBuffer.Bytes())
|
||||
return
|
||||
}
|
||||
|
||||
func runCommand(cmd *exec.Cmd) (exitCode int, err error) {
|
||||
exitCode = 0
|
||||
err = cmd.Run()
|
||||
if err != nil {
|
||||
var exiterr error
|
||||
if exitCode, exiterr = getExitCode(err); exiterr != nil {
|
||||
// TODO: Fix this so we check the error's text.
|
||||
// we've failed to retrieve exit code, so we set it to 127
|
||||
exitCode = 127
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func startCommand(cmd *exec.Cmd) (exitCode int, err error) {
|
||||
exitCode = 0
|
||||
err = cmd.Start()
|
||||
if err != nil {
|
||||
var exiterr error
|
||||
if exitCode, exiterr = getExitCode(err); exiterr != nil {
|
||||
// TODO: Fix this so we check the error's text.
|
||||
// we've failed to retrieve exit code, so we set it to 127
|
||||
exitCode = 127
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func logDone(message string) {
|
||||
fmt.Printf("[PASSED]: %s\n", message)
|
||||
}
|
||||
|
||||
func stripTrailingCharacters(target string) string {
|
||||
target = strings.Trim(target, "\n")
|
||||
target = strings.Trim(target, " ")
|
||||
return target
|
||||
}
|
||||
|
||||
func errorOut(err error, t *testing.T, message string) {
|
||||
if err != nil {
|
||||
t.Fatal(message)
|
||||
}
|
||||
}
|
||||
|
||||
func errorOutOnNonNilError(err error, t *testing.T, message string) {
|
||||
if err == nil {
|
||||
t.Fatalf(message)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user