diff --git a/app_test.go b/app_test.go index 57c850d1ed..651f0f4f5d 100644 --- a/app_test.go +++ b/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 diff --git a/command.go b/command.go index dda2f49a0a..3503a555b0 100644 --- a/command.go +++ b/command.go @@ -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