add some more tests for subcommand aliases
This commit is contained in:
parent
0142b0b842
commit
960d38c3ce
|
@ -83,6 +83,19 @@ func TestNamedSubcommand(t *testing.T) {
|
||||||
assert.Equal(t, []string{"ls"}, p.SubcommandNames())
|
assert.Equal(t, []string{"ls"}, p.SubcommandNames())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSubcommandAliases(t *testing.T) {
|
||||||
|
type listCmd struct {
|
||||||
|
}
|
||||||
|
var args struct {
|
||||||
|
List *listCmd `arg:"subcommand:list|ls"`
|
||||||
|
}
|
||||||
|
p, err := pparse("ls", &args)
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.NotNil(t, args.List)
|
||||||
|
assert.Equal(t, args.List, p.Subcommand())
|
||||||
|
assert.Equal(t, []string{"ls"}, p.SubcommandNames())
|
||||||
|
}
|
||||||
|
|
||||||
func TestEmptySubcommand(t *testing.T) {
|
func TestEmptySubcommand(t *testing.T) {
|
||||||
type listCmd struct {
|
type listCmd struct {
|
||||||
}
|
}
|
||||||
|
@ -113,6 +126,23 @@ func TestTwoSubcommands(t *testing.T) {
|
||||||
assert.Equal(t, []string{"list"}, p.SubcommandNames())
|
assert.Equal(t, []string{"list"}, p.SubcommandNames())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestTwoSubcommandsWithAliases(t *testing.T) {
|
||||||
|
type getCmd struct {
|
||||||
|
}
|
||||||
|
type listCmd struct {
|
||||||
|
}
|
||||||
|
var args struct {
|
||||||
|
Get *getCmd `arg:"subcommand:get|g"`
|
||||||
|
List *listCmd `arg:"subcommand:list|ls"`
|
||||||
|
}
|
||||||
|
p, err := pparse("ls", &args)
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Nil(t, args.Get)
|
||||||
|
assert.NotNil(t, args.List)
|
||||||
|
assert.Equal(t, args.List, p.Subcommand())
|
||||||
|
assert.Equal(t, []string{"ls"}, p.SubcommandNames())
|
||||||
|
}
|
||||||
|
|
||||||
func TestSubcommandsWithOptions(t *testing.T) {
|
func TestSubcommandsWithOptions(t *testing.T) {
|
||||||
type getCmd struct {
|
type getCmd struct {
|
||||||
Name string
|
Name string
|
||||||
|
@ -275,6 +305,60 @@ func TestNestedSubcommands(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestNestedSubcommandsWithAliases(t *testing.T) {
|
||||||
|
type child struct{}
|
||||||
|
type parent struct {
|
||||||
|
Child *child `arg:"subcommand:child|ch"`
|
||||||
|
}
|
||||||
|
type grandparent struct {
|
||||||
|
Parent *parent `arg:"subcommand:parent|pa"`
|
||||||
|
}
|
||||||
|
type root struct {
|
||||||
|
Grandparent *grandparent `arg:"subcommand:grandparent|gp"`
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
var args root
|
||||||
|
p, err := pparse("gp parent child", &args)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.NotNil(t, args.Grandparent)
|
||||||
|
require.NotNil(t, args.Grandparent.Parent)
|
||||||
|
require.NotNil(t, args.Grandparent.Parent.Child)
|
||||||
|
assert.Equal(t, args.Grandparent.Parent.Child, p.Subcommand())
|
||||||
|
assert.Equal(t, []string{"gp", "parent", "child"}, p.SubcommandNames())
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
var args root
|
||||||
|
p, err := pparse("grandparent pa", &args)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.NotNil(t, args.Grandparent)
|
||||||
|
require.NotNil(t, args.Grandparent.Parent)
|
||||||
|
require.Nil(t, args.Grandparent.Parent.Child)
|
||||||
|
assert.Equal(t, args.Grandparent.Parent, p.Subcommand())
|
||||||
|
assert.Equal(t, []string{"grandparent", "pa"}, p.SubcommandNames())
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
var args root
|
||||||
|
p, err := pparse("grandparent", &args)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.NotNil(t, args.Grandparent)
|
||||||
|
require.Nil(t, args.Grandparent.Parent)
|
||||||
|
assert.Equal(t, args.Grandparent, p.Subcommand())
|
||||||
|
assert.Equal(t, []string{"grandparent"}, p.SubcommandNames())
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
var args root
|
||||||
|
p, err := pparse("", &args)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Nil(t, args.Grandparent)
|
||||||
|
assert.Nil(t, p.Subcommand())
|
||||||
|
assert.Empty(t, p.SubcommandNames())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestSubcommandsWithPositionals(t *testing.T) {
|
func TestSubcommandsWithPositionals(t *testing.T) {
|
||||||
type listCmd struct {
|
type listCmd struct {
|
||||||
Pattern string `arg:"positional"`
|
Pattern string `arg:"positional"`
|
||||||
|
|
Loading…
Reference in New Issue