Skip to content

Commit 8d744dc

Browse files
committed
update kubebuildertest to support extra commands
1 parent 6fd5269 commit 8d744dc

File tree

1 file changed

+66
-17
lines changed

1 file changed

+66
-17
lines changed

test/internal/e2e/kubebuildertest.go

Lines changed: 66 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,33 +20,56 @@ func NewKubebuilderTest(dir, binDir string) *KubebuilderTest {
2020
os.Setenv("TEST_ASSET_KUBE_APISERVER", strings.Join([]string{binDir, "kube-apiserver"}, "/"))
2121
os.Setenv("TEST_ASSET_ETCD", strings.Join([]string{binDir, "etcd"}, "/"))
2222
cmd := exec.Command("command", "-v", "kubebuilder")
23-
if err := kt.runCommand(cmd); err != nil {
24-
os.Setenv("PATH",strings.Join([]string{binDir, os.Getenv("PATH")}, ":"))
23+
if _, err := kt.runCommand(cmd); err != nil {
24+
os.Setenv("PATH", strings.Join([]string{binDir, os.Getenv("PATH")}, ":"))
2525
}
2626
return &kt
2727
}
2828

29+
func (kt *KubebuilderTest) Init(initOptions []string) error {
30+
initOptions = append([]string{"init"}, initOptions...)
31+
cmd := exec.Command("kubebuilder", initOptions...)
32+
_, err := kt.runCommand(cmd)
33+
return err
34+
}
35+
36+
func (kt *KubebuilderTest) CreateResource(resourceOptions []string) error {
37+
resourceOptions = append([]string{"create", "resource"}, resourceOptions...)
38+
cmd := exec.Command("kubebuilder", resourceOptions...)
39+
_, err := kt.runCommand(cmd)
40+
return err
41+
}
42+
43+
func (kt *KubebuilderTest) CreateController(controllerOptions []string) error {
44+
controllerOptions = append([]string{"create", "controller"}, controllerOptions...)
45+
cmd := exec.Command("kubebuilder", controllerOptions...)
46+
_, err := kt.runCommand(cmd)
47+
return err
48+
}
49+
2950
func (kt *KubebuilderTest) Generate(generateOptions []string) error {
3051
generateOptions = append([]string{"generate"}, generateOptions...)
3152
cmd := exec.Command("kubebuilder", generateOptions...)
32-
return kt.runCommand(cmd)
53+
_, err := kt.runCommand(cmd)
54+
return err
3355
}
3456

3557
func (kt *KubebuilderTest) Docs(docsOptions []string) error {
3658
docsOptions = append([]string{"docs"}, docsOptions...)
3759
cmd := exec.Command("kubebuilder", docsOptions...)
38-
return kt.runCommand(cmd)
60+
_, err := kt.runCommand(cmd)
61+
return err
3962
}
4063

4164
func (kt *KubebuilderTest) Build() error {
4265
var errs []string
4366
cmd := exec.Command("go", "build", "./pkg/...")
44-
err := kt.runCommand(cmd)
67+
_, err := kt.runCommand(cmd)
4568
if err != nil {
4669
errs = append(errs, err.Error())
4770
}
4871
cmd = exec.Command("go", "build", "./cmd/...")
49-
err = kt.runCommand(cmd)
72+
_, err = kt.runCommand(cmd)
5073
if err != nil {
5174
errs = append(errs, err.Error())
5275
}
@@ -59,12 +82,12 @@ func (kt *KubebuilderTest) Build() error {
5982
func (kt *KubebuilderTest) Test() error {
6083
var errs []string
6184
cmd := exec.Command("go", "test", "./pkg/...")
62-
err := kt.runCommand(cmd)
85+
_, err := kt.runCommand(cmd)
6386
if err != nil {
6487
errs = append(errs, err.Error())
6588
}
6689
cmd = exec.Command("go", "test", "./cmd/...")
67-
err = kt.runCommand(cmd)
90+
_, err = kt.runCommand(cmd)
6891
if err != nil {
6992
errs = append(errs, err.Error())
7093
}
@@ -77,12 +100,29 @@ func (kt *KubebuilderTest) Test() error {
77100
func (kt *KubebuilderTest) CreateConfig(configOptions []string) error {
78101
configOptions = append([]string{"create", "config"}, configOptions...)
79102
cmd := exec.Command("kubebuilder", configOptions...)
80-
return kt.runCommand(cmd)
103+
_, err := kt.runCommand(cmd)
104+
return err
105+
}
106+
107+
func (kt *KubebuilderTest) BuildImage(imageOptions []string) error {
108+
// TODO: make the Dockerfile path mutable if necessary.
109+
imageOptions = append([]string{"build", ".", "-f", "Dockerfile.controller"}, imageOptions...)
110+
cmd := exec.Command("docker", imageOptions...)
111+
_, err := kt.runCommand(cmd)
112+
return err
113+
}
114+
115+
func (kt *KubebuilderTest) CleanupImage(imageOptions []string) error {
116+
imageOptions = append([]string{"rmi", "-f"}, imageOptions...)
117+
cmd := exec.Command("docker", imageOptions...)
118+
_, err := kt.runCommand(cmd)
119+
return err
81120
}
82121

83122
func (kt *KubebuilderTest) Diff(pathA, pathB string) error {
84123
cmd := exec.Command("diff", pathA, pathB)
85-
return kt.runCommand(cmd)
124+
_, err := kt.runCommand(cmd)
125+
return err
86126
}
87127

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

111151
func (kt *KubebuilderTest) DepEnsure() error {
112152
cmd := exec.Command("dep", "ensure")
113-
return kt.runCommand(cmd)
153+
_, err := kt.runCommand(cmd)
154+
return err
114155
}
115156

116157
func (kt *KubebuilderTest) VendorUpdate() error {
117158
cmd := exec.Command("kubebuilder", "vendor", "update")
118-
return kt.runCommand(cmd)
159+
_, err := kt.runCommand(cmd)
160+
return err
119161
}
120162

121163
func (kt *KubebuilderTest) CleanUp() error {
122164
var errs []string
123165
cmd := exec.Command("kubebuilder", "generate", "clean")
124-
err := kt.runCommand(cmd)
166+
_, err := kt.runCommand(cmd)
125167
if err != nil {
126168
errs = append(errs, err.Error())
127169
}
128170
cmd = exec.Command("rm", "-r", "docs")
129-
err = kt.runCommand(cmd)
171+
_, err = kt.runCommand(cmd)
130172
if err != nil {
131173
errs = append(errs, err.Error())
132174
}
@@ -136,14 +178,21 @@ func (kt *KubebuilderTest) CleanUp() error {
136178
return nil
137179
}
138180

139-
func (kt *KubebuilderTest) runCommand(cmd *exec.Cmd) error {
181+
// RunKubectlCommand is a general func to run kubectl commands
182+
func (kt *KubebuilderTest) RunKubectlCommand(cmdOptions []string) (string, error) {
183+
cmd := exec.Command("kubectl", cmdOptions...)
184+
output, err := kt.runCommand(cmd)
185+
return string(output), err
186+
}
187+
188+
func (kt *KubebuilderTest) runCommand(cmd *exec.Cmd) ([]byte, error) {
140189
cmd.Dir = kt.Dir
141190
cmd.Env = os.Environ()
142191
command := strings.Join(cmd.Args, " ")
143192
output, err := cmd.Output()
144193
if err != nil {
145-
return fmt.Errorf("%s failed with error: %s", command, string(output))
194+
return output, fmt.Errorf("%s failed with error: %v", command, err)
146195
}
147196
log.Printf("%s finished successfully", command)
148-
return nil
197+
return output, nil
149198
}

0 commit comments

Comments
 (0)