@@ -20,33 +20,56 @@ func NewKubebuilderTest(dir, binDir string) *KubebuilderTest {
20
20
os .Setenv ("TEST_ASSET_KUBE_APISERVER" , strings .Join ([]string {binDir , "kube-apiserver" }, "/" ))
21
21
os .Setenv ("TEST_ASSET_ETCD" , strings .Join ([]string {binDir , "etcd" }, "/" ))
22
22
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" )}, ":" ))
25
25
}
26
26
return & kt
27
27
}
28
28
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
+
29
50
func (kt * KubebuilderTest ) Generate (generateOptions []string ) error {
30
51
generateOptions = append ([]string {"generate" }, generateOptions ... )
31
52
cmd := exec .Command ("kubebuilder" , generateOptions ... )
32
- return kt .runCommand (cmd )
53
+ _ , err := kt .runCommand (cmd )
54
+ return err
33
55
}
34
56
35
57
func (kt * KubebuilderTest ) Docs (docsOptions []string ) error {
36
58
docsOptions = append ([]string {"docs" }, docsOptions ... )
37
59
cmd := exec .Command ("kubebuilder" , docsOptions ... )
38
- return kt .runCommand (cmd )
60
+ _ , err := kt .runCommand (cmd )
61
+ return err
39
62
}
40
63
41
64
func (kt * KubebuilderTest ) Build () error {
42
65
var errs []string
43
66
cmd := exec .Command ("go" , "build" , "./pkg/..." )
44
- err := kt .runCommand (cmd )
67
+ _ , err := kt .runCommand (cmd )
45
68
if err != nil {
46
69
errs = append (errs , err .Error ())
47
70
}
48
71
cmd = exec .Command ("go" , "build" , "./cmd/..." )
49
- err = kt .runCommand (cmd )
72
+ _ , err = kt .runCommand (cmd )
50
73
if err != nil {
51
74
errs = append (errs , err .Error ())
52
75
}
@@ -59,12 +82,12 @@ func (kt *KubebuilderTest) Build() error {
59
82
func (kt * KubebuilderTest ) Test () error {
60
83
var errs []string
61
84
cmd := exec .Command ("go" , "test" , "./pkg/..." )
62
- err := kt .runCommand (cmd )
85
+ _ , err := kt .runCommand (cmd )
63
86
if err != nil {
64
87
errs = append (errs , err .Error ())
65
88
}
66
89
cmd = exec .Command ("go" , "test" , "./cmd/..." )
67
- err = kt .runCommand (cmd )
90
+ _ , err = kt .runCommand (cmd )
68
91
if err != nil {
69
92
errs = append (errs , err .Error ())
70
93
}
@@ -77,12 +100,29 @@ func (kt *KubebuilderTest) Test() error {
77
100
func (kt * KubebuilderTest ) CreateConfig (configOptions []string ) error {
78
101
configOptions = append ([]string {"create" , "config" }, configOptions ... )
79
102
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
81
120
}
82
121
83
122
func (kt * KubebuilderTest ) Diff (pathA , pathB string ) error {
84
123
cmd := exec .Command ("diff" , pathA , pathB )
85
- return kt .runCommand (cmd )
124
+ _ , err := kt .runCommand (cmd )
125
+ return err
86
126
}
87
127
88
128
func (kt * KubebuilderTest ) DiffAll (generatedDir , expectedDir string ) error {
@@ -110,23 +150,25 @@ func (kt *KubebuilderTest) DiffAll(generatedDir, expectedDir string) error {
110
150
111
151
func (kt * KubebuilderTest ) DepEnsure () error {
112
152
cmd := exec .Command ("dep" , "ensure" )
113
- return kt .runCommand (cmd )
153
+ _ , err := kt .runCommand (cmd )
154
+ return err
114
155
}
115
156
116
157
func (kt * KubebuilderTest ) VendorUpdate () error {
117
158
cmd := exec .Command ("kubebuilder" , "vendor" , "update" )
118
- return kt .runCommand (cmd )
159
+ _ , err := kt .runCommand (cmd )
160
+ return err
119
161
}
120
162
121
163
func (kt * KubebuilderTest ) CleanUp () error {
122
164
var errs []string
123
165
cmd := exec .Command ("kubebuilder" , "generate" , "clean" )
124
- err := kt .runCommand (cmd )
166
+ _ , err := kt .runCommand (cmd )
125
167
if err != nil {
126
168
errs = append (errs , err .Error ())
127
169
}
128
170
cmd = exec .Command ("rm" , "-r" , "docs" )
129
- err = kt .runCommand (cmd )
171
+ _ , err = kt .runCommand (cmd )
130
172
if err != nil {
131
173
errs = append (errs , err .Error ())
132
174
}
@@ -136,14 +178,21 @@ func (kt *KubebuilderTest) CleanUp() error {
136
178
return nil
137
179
}
138
180
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 ) {
140
189
cmd .Dir = kt .Dir
141
190
cmd .Env = os .Environ ()
142
191
command := strings .Join (cmd .Args , " " )
143
192
output , err := cmd .Output ()
144
193
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 )
146
195
}
147
196
log .Printf ("%s finished successfully" , command )
148
- return nil
197
+ return output , nil
149
198
}
0 commit comments