Matching arg field (#1)
Check if the first field of an argument branch matches the parent struct field.
This commit is contained in:
committed by
Alec Thomas
parent
67b1a12059
commit
b4b5827044
@@ -79,6 +79,10 @@ func buildNode(v reflect.Value, cmd bool) *Node {
|
|||||||
child.Help = value.Help
|
child.Help = value.Help
|
||||||
}
|
}
|
||||||
child.Name = value.Name
|
child.Name = value.Name
|
||||||
|
if child.Name != name {
|
||||||
|
fail("first field in positional branch %s.%s must have the same name as the parent field (%s).",
|
||||||
|
v.Type().Name(), ft.Name, child.Name)
|
||||||
|
}
|
||||||
node.Children = append(node.Children, &Branch{Argument: &Argument{
|
node.Children = append(node.Children, &Branch{Argument: &Argument{
|
||||||
Node: *child,
|
Node: *child,
|
||||||
Argument: value,
|
Argument: value,
|
||||||
|
|||||||
+12
-1
@@ -98,10 +98,21 @@ func TestArgSlice(t *testing.T) {
|
|||||||
require.Equal(t, true, cli.Flag)
|
require.Equal(t, true, cli.Flag)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUnsupportedfieldErrors(t *testing.T) {
|
func TestUnsupportedFieldErrors(t *testing.T) {
|
||||||
var cli struct {
|
var cli struct {
|
||||||
Keys map[string]string
|
Keys map[string]string
|
||||||
}
|
}
|
||||||
_, err := New("", "", &cli)
|
_, err := New("", "", &cli)
|
||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestMatchingArgField(t *testing.T) {
|
||||||
|
var cli struct {
|
||||||
|
ID struct {
|
||||||
|
NotID int `arg:""`
|
||||||
|
} `arg:""`
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err := New("", "", &cli)
|
||||||
|
require.Error(t, err)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user