Merge branch 'master' into merging-jereksel-zsh
This commit is contained in:
72
app_test.go
72
app_test.go
@@ -367,6 +367,39 @@ func TestApp_CommandWithArgBeforeFlags(t *testing.T) {
|
||||
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
|
||||
|
||||
@@ -535,7 +568,6 @@ func TestApp_Float64Flag(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestApp_ParseSliceFlags(t *testing.T) {
|
||||
var parsedOption, firstArg string
|
||||
var parsedIntSlice []int
|
||||
var parsedStringSlice []string
|
||||
|
||||
@@ -549,8 +581,6 @@ 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
|
||||
},
|
||||
}
|
||||
@@ -1699,6 +1729,42 @@ func TestHandleAction_WithInvalidFuncReturnSignature(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestHandleExitCoder_Default(t *testing.T) {
|
||||
app := NewApp()
|
||||
fs, err := flagSet(app.Name, app.Flags)
|
||||
if err != nil {
|
||||
t.Errorf("error creating FlagSet: %s", err)
|
||||
}
|
||||
|
||||
ctx := NewContext(app, fs, nil)
|
||||
app.handleExitCoder(ctx, NewExitError("Default Behavior Error", 42))
|
||||
|
||||
output := fakeErrWriter.String()
|
||||
if !strings.Contains(output, "Default") {
|
||||
t.Fatalf("Expected Default Behavior from Error Handler but got: %s", output)
|
||||
}
|
||||
}
|
||||
|
||||
func TestHandleExitCoder_Custom(t *testing.T) {
|
||||
app := NewApp()
|
||||
fs, err := flagSet(app.Name, app.Flags)
|
||||
if err != nil {
|
||||
t.Errorf("error creating FlagSet: %s", err)
|
||||
}
|
||||
|
||||
app.ExitErrHandler = func(_ *Context, _ error) {
|
||||
fmt.Fprintln(ErrWriter, "I'm a Custom error handler, I print what I want!")
|
||||
}
|
||||
|
||||
ctx := NewContext(app, fs, nil)
|
||||
app.handleExitCoder(ctx, NewExitError("Default Behavior Error", 42))
|
||||
|
||||
output := fakeErrWriter.String()
|
||||
if !strings.Contains(output, "Custom") {
|
||||
t.Fatalf("Expected Custom Behavior from Error Handler but got: %s", output)
|
||||
}
|
||||
}
|
||||
|
||||
func TestHandleAction_WithUnknownPanic(t *testing.T) {
|
||||
defer func() { refute(t, recover(), nil) }()
|
||||
|
||||
|
Reference in New Issue
Block a user