fix: Propagate App.Reader to subcommands
This change copies the `Reader` set in `App` to the new `App` created for subcommands. I've also added a basic test to demonstrate the issue.
This commit is contained in:
parent
2e9dc401bb
commit
17032bc33c
33
app_test.go
33
app_test.go
@ -897,6 +897,39 @@ func TestApp_SetStdin(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestApp_SetStdin_Subcommand(t *testing.T) {
|
||||
buf := make([]byte, 12)
|
||||
|
||||
app := &App{
|
||||
Name: "test",
|
||||
Reader: strings.NewReader("Hello World!"),
|
||||
Commands: []*Command{
|
||||
{
|
||||
Name: "command",
|
||||
Subcommands: []*Command{
|
||||
{
|
||||
Name: "subcommand",
|
||||
Action: func(c *Context) error {
|
||||
_, err := c.App.Reader.Read(buf)
|
||||
return err
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
err := app.Run([]string{"test", "command", "subcommand"})
|
||||
|
||||
if err != nil {
|
||||
t.Fatalf("Run error: %s", err)
|
||||
}
|
||||
|
||||
if string(buf) != "Hello World!" {
|
||||
t.Error("App did not read input from desired reader.")
|
||||
}
|
||||
}
|
||||
|
||||
func TestApp_SetStdout(t *testing.T) {
|
||||
var w bytes.Buffer
|
||||
|
||||
|
@ -243,6 +243,7 @@ func (c *Command) startApp(ctx *Context) error {
|
||||
app.Version = ctx.App.Version
|
||||
app.HideVersion = true
|
||||
app.Compiled = ctx.App.Compiled
|
||||
app.Reader = ctx.App.Reader
|
||||
app.Writer = ctx.App.Writer
|
||||
app.ErrWriter = ctx.App.ErrWriter
|
||||
app.ExitErrHandler = ctx.App.ExitErrHandler
|
||||
|
Loading…
Reference in New Issue
Block a user