mirror of https://github.com/helm/helm
parent
fbf1fb64f6
commit
a8582dbc97
@ -0,0 +1,79 @@
|
|||||||
|
// build +e2e
|
||||||
|
|
||||||
|
package e2e
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
"os/exec"
|
||||||
|
"regexp"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Cmd struct {
|
||||||
|
t *testing.T
|
||||||
|
path string
|
||||||
|
args []string
|
||||||
|
ran bool
|
||||||
|
status error
|
||||||
|
stdout, stderr bytes.Buffer
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *Cmd) String() string {
|
||||||
|
return fmt.Sprintf("%s %s", h.path, strings.Join(h.args, " "))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *Cmd) exec() error {
|
||||||
|
cmd := exec.Command(h.path, h.args...)
|
||||||
|
h.stdout.Reset()
|
||||||
|
h.stderr.Reset()
|
||||||
|
cmd.Stdout = &h.stdout
|
||||||
|
cmd.Stderr = &h.stderr
|
||||||
|
|
||||||
|
h.t.Logf("Executing command: %s", h)
|
||||||
|
h.status = cmd.Run()
|
||||||
|
|
||||||
|
if h.stdout.Len() > 0 {
|
||||||
|
h.t.Logf("standard output:\n%s", h.stdout.String())
|
||||||
|
}
|
||||||
|
if h.stderr.Len() > 0 {
|
||||||
|
h.t.Log("standard error: %s\n", h.stderr.String())
|
||||||
|
}
|
||||||
|
|
||||||
|
h.ran = true
|
||||||
|
return h.status
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stdout returns standard output of the Cmd run as a string.
|
||||||
|
func (h *Cmd) Stdout() string {
|
||||||
|
if !h.ran {
|
||||||
|
h.t.Fatal("internal testsuite error: stdout called before run")
|
||||||
|
}
|
||||||
|
return h.stdout.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stderr returns standard error of the Cmd run as a string.
|
||||||
|
func (h *Cmd) Stderr() string {
|
||||||
|
if !h.ran {
|
||||||
|
h.t.Fatal("internal testsuite error: stdout called before run")
|
||||||
|
}
|
||||||
|
return h.stderr.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Cmd) Match(exp string) bool {
|
||||||
|
re := regexp.MustCompile(exp)
|
||||||
|
return re.MatchString(c.Stdout())
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *Cmd) StdoutContains(substring string) bool {
|
||||||
|
return strings.Contains(h.Stdout(), substring)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *Cmd) StderrContains(substring string) bool {
|
||||||
|
return strings.Contains(h.Stderr(), substring)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *Cmd) Contains(substring string) bool {
|
||||||
|
return h.StdoutContains(substring) || h.StderrContains(substring)
|
||||||
|
}
|
Loading…
Reference in new issue