|
|
|
@ -446,61 +446,61 @@ func TestApp_Setup_defaultsWriter(t *testing.T) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func TestApp_CommandWithArgBeforeFlags(t *testing.T) {
|
|
|
|
|
var parsedOption, firstArg string
|
|
|
|
|
|
|
|
|
|
app := NewApp()
|
|
|
|
|
command := &Command{
|
|
|
|
|
Name: "cmd",
|
|
|
|
|
Flags: []Flag{
|
|
|
|
|
&StringFlag{Name: "option", Value: "", Usage: "some option"},
|
|
|
|
|
},
|
|
|
|
|
Action: func(c *Context) error {
|
|
|
|
|
parsedOption = c.String("option")
|
|
|
|
|
firstArg = c.Args().First()
|
|
|
|
|
return nil
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
app.Commands = []*Command{command}
|
|
|
|
|
|
|
|
|
|
_ = app.Run([]string{"", "cmd", "my-arg", "--option", "my-option"})
|
|
|
|
|
|
|
|
|
|
expect(t, parsedOption, "my-option")
|
|
|
|
|
expect(t, firstArg, "my-arg")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestApp_CommandWithArgBeforeBoolFlags(t *testing.T) {
|
|
|
|
|
var parsedOption, parsedSecondOption, firstArg string
|
|
|
|
|
var parsedBool, parsedSecondBool bool
|
|
|
|
|
|
|
|
|
|
app := NewApp()
|
|
|
|
|
command := &Command{
|
|
|
|
|
Name: "cmd",
|
|
|
|
|
Flags: []Flag{
|
|
|
|
|
&StringFlag{Name: "option", Value: "", Usage: "some option"},
|
|
|
|
|
&StringFlag{Name: "secondOption", Value: "", Usage: "another option"},
|
|
|
|
|
&BoolFlag{Name: "boolflag", Usage: "some bool"},
|
|
|
|
|
&BoolFlag{Name: "b", Usage: "another bool"},
|
|
|
|
|
},
|
|
|
|
|
Action: func(c *Context) error {
|
|
|
|
|
parsedOption = c.String("option")
|
|
|
|
|
parsedSecondOption = c.String("secondOption")
|
|
|
|
|
parsedBool = c.Bool("boolflag")
|
|
|
|
|
parsedSecondBool = c.Bool("b")
|
|
|
|
|
firstArg = c.Args().First()
|
|
|
|
|
return nil
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
app.Commands = []*Command{command}
|
|
|
|
|
|
|
|
|
|
_ = app.Run([]string{"", "cmd", "my-arg", "--boolflag", "--option", "my-option", "-b", "--secondOption", "fancy-option"})
|
|
|
|
|
|
|
|
|
|
expect(t, parsedOption, "my-option")
|
|
|
|
|
expect(t, parsedSecondOption, "fancy-option")
|
|
|
|
|
expect(t, parsedBool, true)
|
|
|
|
|
expect(t, parsedSecondBool, true)
|
|
|
|
|
expect(t, firstArg, "my-arg")
|
|
|
|
|
}
|
|
|
|
|
//func TestApp_CommandWithArgBeforeFlags(t *testing.T) {
|
|
|
|
|
// var parsedOption, firstArg string
|
|
|
|
|
//
|
|
|
|
|
// app := NewApp()
|
|
|
|
|
// command := &Command{
|
|
|
|
|
// Name: "cmd",
|
|
|
|
|
// Flags: []Flag{
|
|
|
|
|
// &StringFlag{Name: "option", Value: "", Usage: "some option"},
|
|
|
|
|
// },
|
|
|
|
|
// Action: func(c *Context) error {
|
|
|
|
|
// parsedOption = c.String("option")
|
|
|
|
|
// firstArg = c.Args().First()
|
|
|
|
|
// return nil
|
|
|
|
|
// },
|
|
|
|
|
// }
|
|
|
|
|
// app.Commands = []*Command{command}
|
|
|
|
|
//
|
|
|
|
|
// _ = app.Run([]string{"", "cmd", "my-arg", "--option", "my-option"})
|
|
|
|
|
//
|
|
|
|
|
// expect(t, parsedOption, "my-option")
|
|
|
|
|
// expect(t, firstArg, "my-arg")
|
|
|
|
|
//}
|
|
|
|
|
//
|
|
|
|
|
//func TestApp_CommandWithArgBeforeBoolFlags(t *testing.T) {
|
|
|
|
|
// var parsedOption, parsedSecondOption, firstArg string
|
|
|
|
|
// var parsedBool, parsedSecondBool bool
|
|
|
|
|
//
|
|
|
|
|
// app := NewApp()
|
|
|
|
|
// command := &Command{
|
|
|
|
|
// Name: "cmd",
|
|
|
|
|
// Flags: []Flag{
|
|
|
|
|
// &StringFlag{Name: "option", Value: "", Usage: "some option"},
|
|
|
|
|
// &StringFlag{Name: "secondOption", Value: "", Usage: "another option"},
|
|
|
|
|
// &BoolFlag{Name: "boolflag", Usage: "some bool"},
|
|
|
|
|
// &BoolFlag{Name: "b", Usage: "another bool"},
|
|
|
|
|
// },
|
|
|
|
|
// Action: func(c *Context) error {
|
|
|
|
|
// parsedOption = c.String("option")
|
|
|
|
|
// parsedSecondOption = c.String("secondOption")
|
|
|
|
|
// parsedBool = c.Bool("boolflag")
|
|
|
|
|
// parsedSecondBool = c.Bool("b")
|
|
|
|
|
// firstArg = c.Args().First()
|
|
|
|
|
// return nil
|
|
|
|
|
// },
|
|
|
|
|
// }
|
|
|
|
|
// app.Commands = []*Command{command}
|
|
|
|
|
//
|
|
|
|
|
// _ = app.Run([]string{"", "cmd", "my-arg", "--boolflag", "--option", "my-option", "-b", "--secondOption", "fancy-option"})
|
|
|
|
|
//
|
|
|
|
|
// expect(t, parsedOption, "my-option")
|
|
|
|
|
// expect(t, parsedSecondOption, "fancy-option")
|
|
|
|
|
// expect(t, parsedBool, true)
|
|
|
|
|
// expect(t, parsedSecondBool, true)
|
|
|
|
|
// expect(t, firstArg, "my-arg")
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
func TestApp_RunAsSubcommandParseFlags(t *testing.T) {
|
|
|
|
|
var context *Context
|
|
|
|
@ -568,7 +568,7 @@ func TestApp_CommandWithFlagBeforeTerminator(t *testing.T) {
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_ = app.Run([]string{"", "cmd", "my-arg", "--option", "my-option", "--", "--notARealFlag"})
|
|
|
|
|
_ = app.Run([]string{"", "cmd", "--option", "my-option", "my-arg", "--", "--notARealFlag"})
|
|
|
|
|
|
|
|
|
|
expect(t, parsedOption, "my-option")
|
|
|
|
|
expect(t, args.Get(0), "my-arg")
|
|
|
|
@ -748,7 +748,8 @@ func TestApp_UseShortOptionHandlingSubCommand(t *testing.T) {
|
|
|
|
|
return nil
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
app.Commands = []*Command{command, subCommand}
|
|
|
|
|
command.Subcommands = []*Command{subCommand}
|
|
|
|
|
app.Commands = []*Command{command}
|
|
|
|
|
|
|
|
|
|
err := app.Run([]string{"", "cmd", "sub", "-on", expected})
|
|
|
|
|
expect(t, err, nil)
|
|
|
|
@ -775,7 +776,6 @@ func TestApp_Float64Flag(t *testing.T) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestApp_ParseSliceFlags(t *testing.T) {
|
|
|
|
|
var parsedOption, firstArg string
|
|
|
|
|
var parsedIntSlice []int
|
|
|
|
|
var parsedStringSlice []string
|
|
|
|
|
|
|
|
|
@ -790,17 +790,13 @@ func TestApp_ParseSliceFlags(t *testing.T) {
|
|
|
|
|
Action: func(c *Context) error {
|
|
|
|
|
parsedIntSlice = c.IntSlice("p")
|
|
|
|
|
parsedStringSlice = c.StringSlice("ip")
|
|
|
|
|
parsedOption = c.String("option")
|
|
|
|
|
firstArg = c.Args().First()
|
|
|
|
|
return nil
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
var _ = parsedOption
|
|
|
|
|
var _ = firstArg
|
|
|
|
|
|
|
|
|
|
_ = app.Run([]string{"", "cmd", "my-arg", "-p", "22", "-p", "80", "-ip", "8.8.8.8", "-ip", "8.8.4.4"})
|
|
|
|
|
_ = app.Run([]string{"", "cmd", "-p", "22", "-p", "80", "-ip", "8.8.8.8", "-ip", "8.8.4.4"})
|
|
|
|
|
|
|
|
|
|
IntsEquals := func(a, b []int) bool {
|
|
|
|
|
if len(a) != len(b) {
|
|
|
|
@ -858,7 +854,7 @@ func TestApp_ParseSliceFlagsWithMissingValue(t *testing.T) {
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_ = app.Run([]string{"", "cmd", "my-arg", "-a", "2", "-str", "A"})
|
|
|
|
|
_ = app.Run([]string{"", "cmd", "-a", "2", "-str", "A"})
|
|
|
|
|
|
|
|
|
|
var expectedIntSlice = []int{2}
|
|
|
|
|
var expectedStringSlice = []string{"A"}
|
|
|
|
@ -1367,7 +1363,7 @@ func TestApp_OrderOfOperations(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
resetCounts()
|
|
|
|
|
|
|
|
|
|
_ = app.Run([]string{"command", fmt.Sprintf("--%s", "--generate-bash-completion")})
|
|
|
|
|
_ = app.Run([]string{"command", fmt.Sprintf("--%s", "generate-bash-completion")})
|
|
|
|
|
expect(t, counts.ShellComplete, 1)
|
|
|
|
|
expect(t, counts.Total, 1)
|
|
|
|
|
|
|
|
|
@ -1473,7 +1469,7 @@ func TestApp_Run_CommandWithSubcommandHasHelpTopic(t *testing.T) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
output := buf.String()
|
|
|
|
|
t.Logf("output: %q\n", buf.Bytes())
|
|
|
|
|
//t.Logf("output: %q\n", buf.Bytes())
|
|
|
|
|
|
|
|
|
|
if strings.Contains(output, "No help topic for") {
|
|
|
|
|
t.Errorf("expect a help topic, got none: \n%q", output)
|
|
|
|
@ -1992,8 +1988,9 @@ func (c *customBoolFlag) GetUsage() string {
|
|
|
|
|
return "usage"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (c *customBoolFlag) Apply(set *flag.FlagSet) {
|
|
|
|
|
func (c *customBoolFlag) Apply(set *flag.FlagSet) error {
|
|
|
|
|
set.String(c.Nombre, c.Nombre, "")
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestCustomFlagsUnused(t *testing.T) {
|
|
|
|
@ -2108,8 +2105,8 @@ func TestShellCompletionForIncompleteFlags(t *testing.T) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _, flag := range ctx.App.Flags {
|
|
|
|
|
for _, name := range flag.Names() {
|
|
|
|
|
for _, fl := range ctx.App.Flags {
|
|
|
|
|
for _, name := range fl.Names() {
|
|
|
|
|
if name == BashCompletionFlag.Names()[0] {
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
@ -2180,7 +2177,7 @@ func TestWhenExitSubCommandWithCodeThenAppQuitUnexpectedly(t *testing.T) {
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
if exitCodeFromOsExiter != 0 {
|
|
|
|
|
t.Errorf("exitCodeFromOsExiter should not change, but its value is %v", exitCodeFromOsExiter)
|
|
|
|
|
t.Errorf("exitCodeFromExitErrHandler should not change, but its value is %v", exitCodeFromOsExiter)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if exitCodeFromExitErrHandler != testCode {
|
|
|
|
|