@cryptotaxi247 / kubo / commits / 47a88f842

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")