Skip to content

Commit

Permalink
fix: Propagate App.Reader to subcommands
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Coderlane authored and jcgregorio committed Jan 28, 2021
1 parent 6f75684 commit 22cde86
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 0 deletions.
33 changes: 33 additions & 0 deletions app_test.go
Expand Up @@ -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

Expand Down
1 change: 1 addition & 0 deletions command.go
Expand Up @@ -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
Expand Down

0 comments on commit 22cde86

Please sign in to comment.