forked from mirror/cobra
Merge pull request #119 from eparis/bogus-bad-command
Handle grand children with the same name as the root
This commit is contained in:
commit
66816bcd03
|
@ -378,6 +378,24 @@ func TestChildSameName(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGrandChildSameName(t *testing.T) {
|
||||||
|
c := initializeWithSameName()
|
||||||
|
cmdTimes.AddCommand(cmdPrint)
|
||||||
|
c.AddCommand(cmdTimes)
|
||||||
|
c.SetArgs(strings.Split("times print one two", " "))
|
||||||
|
c.Execute()
|
||||||
|
|
||||||
|
if te != nil || tt != nil {
|
||||||
|
t.Error("Wrong command called")
|
||||||
|
}
|
||||||
|
if tp == nil {
|
||||||
|
t.Error("Wrong command called")
|
||||||
|
}
|
||||||
|
if strings.Join(tp, " ") != "one two" {
|
||||||
|
t.Error("Command didn't parse correctly")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestFlagLong(t *testing.T) {
|
func TestFlagLong(t *testing.T) {
|
||||||
noRRSetupTest("echo --intone=13 something here")
|
noRRSetupTest("echo --intone=13 something here")
|
||||||
|
|
||||||
|
|
|
@ -423,8 +423,9 @@ func (c *Command) Find(args []string) (*Command, []string, error) {
|
||||||
commandFound, a := innerfind(c, args)
|
commandFound, a := innerfind(c, args)
|
||||||
|
|
||||||
// If we matched on the root, but we asked for a subcommand, return an error
|
// If we matched on the root, but we asked for a subcommand, return an error
|
||||||
if commandFound.Name() == c.Name() && len(stripFlags(args, c)) > 0 && commandFound.Name() != args[0] {
|
argsWOflags := stripFlags(a, commandFound)
|
||||||
return nil, a, fmt.Errorf("unknown command %q", stripFlags(args, c)[0])
|
if commandFound == c && len(argsWOflags) > 0 {
|
||||||
|
return nil, a, fmt.Errorf("unknown command %q", argsWOflags[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
return commandFound, a, nil
|
return commandFound, a, nil
|
||||||
|
|
Loading…
Reference in New Issue