parse_test: improve existing tests
License: MIT Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Christian Couder committed
May 3, 2015 at 20:10 UTC
47a88f84294f66faa9550114766df9433ce518ed
1 file changed
+29
-51
commands/cli/parse_test.go
+29
-51
@@ -158,28 +158,37 @@ func TestArgumentParsing(t *testing.T) {
158
},
159
}
160
161
- _, _, _, err := Parse([]string{"noarg"}, nil, rootCmd)
162
- if err != nil {
163
- t.Error("Should have passed")
161
+ test := func(cmd words, f *os.File, res words) {
162
+ if f != nil {
163
+ if _, err := f.Seek(0, os.SEEK_SET); err != nil {
164
+ t.Fatal(err)
165
+ }
166
+ }
167
+ req, _, _, err := Parse(cmd, f, rootCmd)
168
+ if err != nil {
169
+ t.Errorf("Command '%v' should have passed parsing", cmd)
170
+ }
171
+ if !sameWords(req.Arguments(), res) {
172
+ t.Errorf("Arguments parsed from '%v' are not '%v'", cmd, res)
173
+ }
174
}
165
- _, _, _, err = Parse([]string{"noarg", "value!"}, nil, rootCmd)
175
+
176
+ test([]string{"noarg"}, nil, []string{})
177
+
178
+ _, _, _, err := Parse([]string{"noarg", "value!"}, nil, rootCmd)
179
if err == nil {
180
t.Error("Should have failed (provided an arg, but command didn't define any)")
181
}
182
170
- _, _, _, err = Parse([]string{"onearg", "value!"}, nil, rootCmd)
171
- if err != nil {
172
- t.Error("Should have passed")
173
- }
183
+ test([]string{"onearg", "value!"}, nil, []string{"value!"})
184
+
185
_, _, _, err = Parse([]string{"onearg"}, nil, rootCmd)
186
if err == nil {
187
t.Error("Should have failed (didn't provide any args, arg is required)")
188
}
189
179
- _, _, _, err = Parse([]string{"twoargs", "value1", "value2"}, nil, rootCmd)
180
- if err != nil {
181
- t.Error("Should have passed")
182
- }
190
+ test([]string{"twoargs", "value1", "value2"}, nil, []string{"value1", "value2"})
191
+
192
_, _, _, err = Parse([]string{"twoargs", "value!"}, nil, rootCmd)
193
if err == nil {
194
t.Error("Should have failed (only provided 1 arg, needs 2)")
@@ -189,36 +198,20 @@ func TestArgumentParsing(t *testing.T) {
198
t.Error("Should have failed (didn't provide any args, 2 required)")
199
}
200
192
- _, _, _, err = Parse([]string{"variadic", "value!"}, nil, rootCmd)
193
- if err != nil {
194
- t.Error("Should have passed")
195
- }
196
- _, _, _, err = Parse([]string{"variadic", "value1", "value2", "value3"}, nil, rootCmd)
197
- if err != nil {
198
- t.Error("Should have passed")
199
- }
201
+ test([]string{"variadic", "value!"}, nil, []string{"value!"})
202
+ test([]string{"variadic", "value1", "value2", "value3"}, nil, []string{"value1", "value2", "value3"})
203
+
204
_, _, _, err = Parse([]string{"variadic"}, nil, rootCmd)
205
if err == nil {
206
t.Error("Should have failed (didn't provide any args, 1 required)")
207
}
208
205
- _, _, _, err = Parse([]string{"optional", "value!"}, nil, rootCmd)
206
- if err != nil {
207
- t.Error("Should have passed")
208
- }
209
- _, _, _, err = Parse([]string{"optional"}, nil, rootCmd)
210
- if err != nil {
211
- t.Error("Should have passed")
212
- }
209
+ test([]string{"optional", "value!"}, nil, []string{"value!"})
210
+ test([]string{"optional"}, nil, []string{})
211
+
212
+ test([]string{"reversedoptional", "value1", "value2"}, nil, []string{"value1", "value2"})
213
+ test([]string{"reversedoptional", "value!"}, nil, []string{"value!"})
214
214
- _, _, _, err = Parse([]string{"reversedoptional", "value1", "value2"}, nil, rootCmd)
215
- if err != nil {
216
- t.Error("Should have passed")
217
- }
218
- _, _, _, err = Parse([]string{"reversedoptional", "value!"}, nil, rootCmd)
219
- if err != nil {
220
- t.Error("Should have passed")
221
- }
215
_, _, _, err = Parse([]string{"reversedoptional"}, nil, rootCmd)
216
if err == nil {
217
t.Error("Should have failed (didn't provide any args, 1 required)")
@@ -242,21 +235,6 @@ func TestArgumentParsing(t *testing.T) {
235
return fstdin
236
}
237
245
- test := func(cmd words, f *os.File, res words) {
246
- if f != nil {
247
- if _, err := f.Seek(0, os.SEEK_SET); err != nil {
248
- t.Fatal(err)
249
- }
250
- }
251
- req, _, _, err := Parse(cmd, f, rootCmd)
252
- if err != nil {
253
- t.Error("Command '%v' should have passed parsing", cmd)
254
- }
255
- if !sameWords(req.Arguments(), res) {
256
- t.Errorf("Arguments parsed from '%v' are not '%v'", cmd, res)
257
- }
258
- }
259
-
238
test([]string{"stdinenabled", "value1", "value2"}, nil, []string{"value1", "value2"})
239
240
fstdin := fileToSimulateStdin(t, "stdin1")