@@ -149,3 +149,49 @@ func TestTagSetOnFlag(t *testing.T) {
149149 require .NoError (t , err )
150150 require .Contains (t , buf .String (), `A key from somewhere.` )
151151}
152+
153+ func TestTagAliases (t * testing.T ) {
154+ type Command struct {
155+ Arg string `arg help:"Some arg"`
156+ }
157+ var cli struct {
158+ Cmd Command `cmd aliases:"alias1, alias2"`
159+ }
160+ p := mustNew (t , & cli )
161+ _ , err := p .Parse ([]string {"alias1" , "arg" })
162+ require .NoError (t , err )
163+ require .Equal (t , "arg" , cli .Cmd .Arg )
164+ _ , err = p .Parse ([]string {"alias2" , "arg" })
165+ require .NoError (t , err )
166+ require .Equal (t , "arg" , cli .Cmd .Arg )
167+ }
168+
169+ func TestTagAliasesConflict (t * testing.T ) {
170+ type Command struct {
171+ Arg string `arg help:"Some arg"`
172+ }
173+ var cli struct {
174+ Cmd Command `cmd hidden aliases:"other-cmd"`
175+ OtherCmd Command `cmd`
176+ }
177+ p := mustNew (t , & cli )
178+ _ , err := p .Parse ([]string {"other-cmd" , "arg" })
179+ require .NoError (t , err )
180+ require .Equal (t , "arg" , cli .OtherCmd .Arg )
181+ }
182+
183+ func TestTagAliasesSub (t * testing.T ) {
184+ type SubCommand struct {
185+ Arg string `arg help:"Some arg"`
186+ }
187+ type Command struct {
188+ SubCmd SubCommand `cmd aliases:"other-sub-cmd"`
189+ }
190+ var cli struct {
191+ Cmd Command `cmd hidden`
192+ }
193+ p := mustNew (t , & cli )
194+ _ , err := p .Parse ([]string {"cmd" , "other-sub-cmd" , "arg" })
195+ require .NoError (t , err )
196+ require .Equal (t , "arg" , cli .Cmd .SubCmd .Arg )
197+ }
0 commit comments