Skip to content

Commit

Permalink
update kubebuildertest to support extra commands
Browse files Browse the repository at this point in the history
  • Loading branch information
lichuqiang committed May 26, 2018
1 parent 6fd5269 commit 8d744dc
Showing 1 changed file with 66 additions and 17 deletions.
83 changes: 66 additions & 17 deletions test/internal/e2e/kubebuildertest.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,33 +20,56 @@ func NewKubebuilderTest(dir, binDir string) *KubebuilderTest {
os.Setenv("TEST_ASSET_KUBE_APISERVER", strings.Join([]string{binDir, "kube-apiserver"}, "/"))
os.Setenv("TEST_ASSET_ETCD", strings.Join([]string{binDir, "etcd"}, "/"))
cmd := exec.Command("command", "-v", "kubebuilder")
if err := kt.runCommand(cmd); err != nil {
os.Setenv("PATH",strings.Join([]string{binDir, os.Getenv("PATH")}, ":"))
if _, err := kt.runCommand(cmd); err != nil {
os.Setenv("PATH", strings.Join([]string{binDir, os.Getenv("PATH")}, ":"))
}
return &kt
}

func (kt *KubebuilderTest) Init(initOptions []string) error {
initOptions = append([]string{"init"}, initOptions...)
cmd := exec.Command("kubebuilder", initOptions...)
_, err := kt.runCommand(cmd)
return err
}

func (kt *KubebuilderTest) CreateResource(resourceOptions []string) error {
resourceOptions = append([]string{"create", "resource"}, resourceOptions...)
cmd := exec.Command("kubebuilder", resourceOptions...)
_, err := kt.runCommand(cmd)
return err
}

func (kt *KubebuilderTest) CreateController(controllerOptions []string) error {
controllerOptions = append([]string{"create", "controller"}, controllerOptions...)
cmd := exec.Command("kubebuilder", controllerOptions...)
_, err := kt.runCommand(cmd)
return err
}

func (kt *KubebuilderTest) Generate(generateOptions []string) error {
generateOptions = append([]string{"generate"}, generateOptions...)
cmd := exec.Command("kubebuilder", generateOptions...)
return kt.runCommand(cmd)
_, err := kt.runCommand(cmd)
return err
}

func (kt *KubebuilderTest) Docs(docsOptions []string) error {
docsOptions = append([]string{"docs"}, docsOptions...)
cmd := exec.Command("kubebuilder", docsOptions...)
return kt.runCommand(cmd)
_, err := kt.runCommand(cmd)
return err
}

func (kt *KubebuilderTest) Build() error {
var errs []string
cmd := exec.Command("go", "build", "./pkg/...")
err := kt.runCommand(cmd)
_, err := kt.runCommand(cmd)
if err != nil {
errs = append(errs, err.Error())
}
cmd = exec.Command("go", "build", "./cmd/...")
err = kt.runCommand(cmd)
_, err = kt.runCommand(cmd)
if err != nil {
errs = append(errs, err.Error())
}
Expand All @@ -59,12 +82,12 @@ func (kt *KubebuilderTest) Build() error {
func (kt *KubebuilderTest) Test() error {
var errs []string
cmd := exec.Command("go", "test", "./pkg/...")
err := kt.runCommand(cmd)
_, err := kt.runCommand(cmd)
if err != nil {
errs = append(errs, err.Error())
}
cmd = exec.Command("go", "test", "./cmd/...")
err = kt.runCommand(cmd)
_, err = kt.runCommand(cmd)
if err != nil {
errs = append(errs, err.Error())
}
Expand All @@ -77,12 +100,29 @@ func (kt *KubebuilderTest) Test() error {
func (kt *KubebuilderTest) CreateConfig(configOptions []string) error {
configOptions = append([]string{"create", "config"}, configOptions...)
cmd := exec.Command("kubebuilder", configOptions...)
return kt.runCommand(cmd)
_, err := kt.runCommand(cmd)
return err
}

func (kt *KubebuilderTest) BuildImage(imageOptions []string) error {
// TODO: make the Dockerfile path mutable if necessary.
imageOptions = append([]string{"build", ".", "-f", "Dockerfile.controller"}, imageOptions...)
cmd := exec.Command("docker", imageOptions...)
_, err := kt.runCommand(cmd)
return err
}

func (kt *KubebuilderTest) CleanupImage(imageOptions []string) error {
imageOptions = append([]string{"rmi", "-f"}, imageOptions...)
cmd := exec.Command("docker", imageOptions...)
_, err := kt.runCommand(cmd)
return err
}

func (kt *KubebuilderTest) Diff(pathA, pathB string) error {
cmd := exec.Command("diff", pathA, pathB)
return kt.runCommand(cmd)
_, err := kt.runCommand(cmd)
return err
}

func (kt *KubebuilderTest) DiffAll(generatedDir, expectedDir string) error {
Expand Down Expand Up @@ -110,23 +150,25 @@ func (kt *KubebuilderTest) DiffAll(generatedDir, expectedDir string) error {

func (kt *KubebuilderTest) DepEnsure() error {
cmd := exec.Command("dep", "ensure")
return kt.runCommand(cmd)
_, err := kt.runCommand(cmd)
return err
}

func (kt *KubebuilderTest) VendorUpdate() error {
cmd := exec.Command("kubebuilder", "vendor", "update")
return kt.runCommand(cmd)
_, err := kt.runCommand(cmd)
return err
}

func (kt *KubebuilderTest) CleanUp() error {
var errs []string
cmd := exec.Command("kubebuilder", "generate", "clean")
err := kt.runCommand(cmd)
_, err := kt.runCommand(cmd)
if err != nil {
errs = append(errs, err.Error())
}
cmd = exec.Command("rm", "-r", "docs")
err = kt.runCommand(cmd)
_, err = kt.runCommand(cmd)
if err != nil {
errs = append(errs, err.Error())
}
Expand All @@ -136,14 +178,21 @@ func (kt *KubebuilderTest) CleanUp() error {
return nil
}

func (kt *KubebuilderTest) runCommand(cmd *exec.Cmd) error {
// RunKubectlCommand is a general func to run kubectl commands
func (kt *KubebuilderTest) RunKubectlCommand(cmdOptions []string) (string, error) {
cmd := exec.Command("kubectl", cmdOptions...)
output, err := kt.runCommand(cmd)
return string(output), err
}

func (kt *KubebuilderTest) runCommand(cmd *exec.Cmd) ([]byte, error) {
cmd.Dir = kt.Dir
cmd.Env = os.Environ()
command := strings.Join(cmd.Args, " ")
output, err := cmd.Output()
if err != nil {
return fmt.Errorf("%s failed with error: %s", command, string(output))
return output, fmt.Errorf("%s failed with error: %v", command, err)
}
log.Printf("%s finished successfully", command)
return nil
return output, nil
}

0 comments on commit 8d744dc

Please sign in to comment.