fix(Context.Run): Don't panic on unselected root node (#484)
This commit is contained in:
+3
-1
@@ -827,7 +827,9 @@ func (c *Context) Run(binds ...any) (err error) {
|
|||||||
if method.IsValid() {
|
if method.IsValid() {
|
||||||
node = selected
|
node = selected
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
|
||||||
|
if node == nil {
|
||||||
return fmt.Errorf("no command selected")
|
return fmt.Errorf("no command selected")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2495,3 +2495,16 @@ func TestPrefixXorIssue343(t *testing.T) {
|
|||||||
_, err = kctx.Parse([]string{"--source-password-file=foo", "--source-password=bar"})
|
_, err = kctx.Parse([]string{"--source-password-file=foo", "--source-password=bar"})
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestIssue483EmptyRootNodeNoRun(t *testing.T) {
|
||||||
|
var emptyCLI struct{}
|
||||||
|
parser, err := kong.New(&emptyCLI)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
kctx, err := parser.Parse([]string{})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
err = kctx.Run()
|
||||||
|
assert.Error(t, err)
|
||||||
|
assert.Contains(t, err.Error(), "no command selected")
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user