@@ -54,27 +54,27 @@ func TestParsing(t *testing.T) {
5454 }, {
5555 Case : ttCase (),
5656 args : []string {"-b" , "v2" , "--aa" },
57- expErr : MissingOptionsError {Names : []string {"--cc" }},
57+ expErr : MissingOptionsError {CmdInfo : & tc . cmd , Names : []string {"--cc" }},
5858 }, {
5959 Case : ttCase (),
6060 args : []string {"-z" },
61- expErr : UnknownOptionError {Cmd : & tc .cmd , Name : "-z" },
61+ expErr : UnknownOptionError {CmdInfo : & tc .cmd , Name : "-z" },
6262 }, {
6363 Case : ttCase (),
6464 args : []string {"--zz=abc" },
65- expErr : UnknownOptionError {Cmd : & tc .cmd , Name : "--zz=abc" },
65+ expErr : UnknownOptionError {CmdInfo : & tc .cmd , Name : "--zz=abc" },
6666 }, {
6767 Case : ttCase (),
6868 args : []string {"--bb" , "B" },
69- expErr : UnknownOptionError {Cmd : & tc .cmd , Name : "--bb" },
69+ expErr : UnknownOptionError {CmdInfo : & tc .cmd , Name : "--bb" },
7070 }, {
7171 Case : ttCase (),
7272 args : []string {"--dd" },
73- expErr : MissingOptionValueError {Name : "dd" },
73+ expErr : MissingOptionValueError {CmdInfo : & tc . cmd , Name : "dd" },
7474 }, {
7575 Case : ttCase (),
7676 args : []string {"-b" },
77- expErr : MissingOptionValueError {Name : "b" },
77+ expErr : MissingOptionValueError {CmdInfo : & tc . cmd , Name : "b" },
7878 },
7979 }
8080 return & tc
@@ -147,19 +147,21 @@ func TestParsing(t *testing.T) {
147147 },
148148 },
149149 },
150- }, {
150+ }, func () * testCase {
151151 // positional arg stuff
152152 // all required args but not all optional ones
153153 // missing required args error
154154 // args with default values
155155 // surplus
156- name : "posargs" ,
157- cmd : NewCmd ("posargs" ).
158- Arg (NewArg ("arg1" ).Required ()).
159- Arg (NewArg ("arg2" ).Required ().Env ("ARG2" )).
160- Arg (NewArg ("arg3" )).
161- Arg (NewArg ("arg4" ).Default ("Z" ).Env ("ARG4" )),
162- variations : []testInputOutput {
156+ tc := testCase {
157+ name : "posargs" ,
158+ cmd : NewCmd ("posargs" ).
159+ Arg (NewArg ("arg1" ).Required ()).
160+ Arg (NewArg ("arg2" ).Required ().Env ("ARG2" )).
161+ Arg (NewArg ("arg3" )).
162+ Arg (NewArg ("arg4" ).Default ("Z" ).Env ("ARG4" )),
163+ }
164+ tc .variations = []testInputOutput {
163165 {
164166 Case : ttCase (),
165167 args : []string {"A" , "B" , "C" , "D" , "E" , "F" },
@@ -209,14 +211,15 @@ func TestParsing(t *testing.T) {
209211 }, {
210212 Case : ttCase (),
211213 args : []string {},
212- expErr : MissingArgsError {Names : []string {"arg1" , "arg2" }},
214+ expErr : MissingArgsError {CmdInfo : & tc . cmd , Names : []string {"arg1" , "arg2" }},
213215 }, {
214216 Case : ttCase (),
215217 args : []string {"A" },
216- expErr : MissingArgsError {Names : []string {"arg2" }},
218+ expErr : MissingArgsError {CmdInfo : & tc . cmd , Names : []string {"arg2" }},
217219 },
218- },
219- }, {
220+ }
221+ return & tc
222+ }(), {
220223 // '--' with '--posarg' after it
221224 // '=' on an option with and without content
222225 // mix of `--opt val`, `--opt=val`, and short names
@@ -349,26 +352,28 @@ func TestParsing(t *testing.T) {
349352 }, {
350353 Case : ttCase (),
351354 args : []string {"three" , "--dd" , "D" },
352- expErr : UnknownSubcmdError {Cmd : & tc .cmd , Name : "three" },
355+ expErr : UnknownSubcmdError {CmdInfo : & tc .cmd , Name : "three" },
353356 }, {
354357 Case : ttCase (),
355358 args : []string {"four" , "six" },
356- expErr : UnknownSubcmdError {Cmd : & tc .cmd .Subcmds [2 ], Name : "six" },
359+ expErr : UnknownSubcmdError {CmdInfo : & tc .cmd .Subcmds [2 ], Name : "six" },
357360 }, {
358361 Case : ttCase (),
359362 args : []string {"--aa" },
360363 expErr : ErrNoSubcmd ,
361364 },
362365 }
363366 return & tc
364- }(), {
367+ }(), func () * testCase {
365368 // subcommand help won't require required values
366- name : "subcommands" ,
367- cmd : NewCmd ("cmd" ).
368- Opt (NewOpt ("aa" ).Required ()).
369- Subcmd (NewCmd ("one" ).
370- Opt (NewOpt ("cc" ).Required ())),
371- variations : []testInputOutput {
369+ tc := testCase {
370+ name : "subcommands" ,
371+ cmd : NewCmd ("cmd" ).
372+ Opt (NewOpt ("aa" ).Required ()).
373+ Subcmd (NewCmd ("one" ).
374+ Opt (NewOpt ("cc" ).Required ())),
375+ }
376+ tc .variations = []testInputOutput {
372377 {
373378 Case : ttCase (),
374379 args : []string {"one" , "-h" },
@@ -378,10 +383,11 @@ func TestParsing(t *testing.T) {
378383 }, {
379384 Case : ttCase (),
380385 args : []string {"--aa=1" , "one" },
381- expErr : MissingOptionsError {Names : []string {"--cc" }},
386+ expErr : MissingOptionsError {CmdInfo : & tc . cmd . Subcmds [ 0 ], Names : []string {"--cc" }},
382387 },
383- },
384- }, {
388+ }
389+ return & tc
390+ }(), {
385391 // custom parser
386392 name : "custom_parser" ,
387393 cmd : NewCmd ("cp" ).
@@ -444,7 +450,7 @@ func TestParsing(t *testing.T) {
444450 }, {
445451 Case : ttCase (),
446452 args : []string {"-cba" },
447- expErr : MissingOptionValueError {Name : "a" },
453+ expErr : MissingOptionValueError {CmdInfo : & tc . cmd , Name : "a" },
448454 }, {
449455 Case : ttCase (),
450456 args : []string {"-cb" , "-a" , "valA" },
@@ -485,7 +491,7 @@ func TestParsing(t *testing.T) {
485491 }, {
486492 Case : ttCase (),
487493 args : []string {"-bz" },
488- expErr : UnknownOptionError {Cmd : & tc .cmd , Name : "-z" },
494+ expErr : UnknownOptionError {CmdInfo : & tc .cmd , Name : "-z" },
489495 }, {
490496 Case : ttCase (),
491497 args : []string {"-aa" , "v" },
@@ -558,8 +564,8 @@ func TestParsing(t *testing.T) {
558564 args : []string {"--version" },
559565 expErr : HelpOrVersionRequested {Msg : "(devel)\n " },
560566 },
561- {Case : ttCase (), args : []string {"-v" }, expErr : UnknownOptionError {Cmd : & tc .cmd , Name : "-v" }},
562- {Case : ttCase (), args : []string {"-V" }, expErr : UnknownOptionError {Cmd : & tc .cmd , Name : "-V" }},
567+ {Case : ttCase (), args : []string {"-v" }, expErr : UnknownOptionError {CmdInfo : & tc .cmd , Name : "-v" }},
568+ {Case : ttCase (), args : []string {"-V" }, expErr : UnknownOptionError {CmdInfo : & tc .cmd , Name : "-V" }},
563569 }
564570 return & tc
565571 }(), func () * testCase {
@@ -577,7 +583,7 @@ func TestParsing(t *testing.T) {
577583 }, {
578584 Case : ttCase (),
579585 args : []string {"--version" },
580- expErr : UnknownOptionError {Cmd : & tc .cmd , Name : "--version" },
586+ expErr : UnknownOptionError {CmdInfo : & tc .cmd , Name : "--version" },
581587 },
582588 }
583589 return & tc
0 commit comments