|
|
|
@ -1520,6 +1520,63 @@ func TestApp_OnUsageError_WithWrongFlagValue_ForSubcommand(t *testing.T) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// A custom flag that conforms to the relevant interfaces, but has none of the
|
|
|
|
|
// fields that the other flag types do.
|
|
|
|
|
type customBoolFlag struct {
|
|
|
|
|
Nombre string
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Don't use the normal FlagStringer
|
|
|
|
|
func (c *customBoolFlag) String() string {
|
|
|
|
|
return "***" + c.Nombre + "***"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (c *customBoolFlag) GetName() string {
|
|
|
|
|
return c.Nombre
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (c *customBoolFlag) Apply(set *flag.FlagSet) {
|
|
|
|
|
set.String(c.Nombre, c.Nombre, "")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestCustomFlagsUnused(t *testing.T) {
|
|
|
|
|
app := NewApp()
|
|
|
|
|
app.Flags = []Flag{&customBoolFlag{"custom"}}
|
|
|
|
|
|
|
|
|
|
err := app.Run([]string{"foo"})
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Errorf("Run returned unexpected error: %v", err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestCustomFlagsUsed(t *testing.T) {
|
|
|
|
|
app := NewApp()
|
|
|
|
|
app.Flags = []Flag{&customBoolFlag{"custom"}}
|
|
|
|
|
|
|
|
|
|
err := app.Run([]string{"foo", "--custom=bar"})
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Errorf("Run returned unexpected error: %v", err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestCustomHelpVersionFlags(t *testing.T) {
|
|
|
|
|
app := NewApp()
|
|
|
|
|
|
|
|
|
|
// Be sure to reset the global flags
|
|
|
|
|
defer func(helpFlag Flag, versionFlag Flag) {
|
|
|
|
|
HelpFlag = helpFlag
|
|
|
|
|
VersionFlag = versionFlag
|
|
|
|
|
}(HelpFlag, VersionFlag)
|
|
|
|
|
|
|
|
|
|
HelpFlag = &customBoolFlag{"help-custom"}
|
|
|
|
|
VersionFlag = &customBoolFlag{"version-custom"}
|
|
|
|
|
|
|
|
|
|
err := app.Run([]string{"foo", "--help-custom=bar"})
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Errorf("Run returned unexpected error: %v", err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestHandleAction_WithNonFuncAction(t *testing.T) {
|
|
|
|
|
app := NewApp()
|
|
|
|
|
app.Action = 42
|
|
|
|
@ -1642,7 +1699,7 @@ func TestShellCompletionForIncompleteFlags(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
for _, flag := range ctx.App.Flags {
|
|
|
|
|
for _, name := range strings.Split(flag.GetName(), ",") {
|
|
|
|
|
if name == BashCompletionFlag.Name {
|
|
|
|
|
if name == BashCompletionFlag.GetName() {
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1659,7 +1716,7 @@ func TestShellCompletionForIncompleteFlags(t *testing.T) {
|
|
|
|
|
app.Action = func(ctx *Context) error {
|
|
|
|
|
return fmt.Errorf("should not get here")
|
|
|
|
|
}
|
|
|
|
|
err := app.Run([]string{"", "--test-completion", "--" + BashCompletionFlag.Name})
|
|
|
|
|
err := app.Run([]string{"", "--test-completion", "--" + BashCompletionFlag.GetName()})
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Errorf("app should not return an error: %s", err)
|
|
|
|
|
}
|
|
|
|
|