Skip to content

Commit

Permalink
considering stderr in UsageString
Browse files Browse the repository at this point in the history
  • Loading branch information
jleni authored and spf13 committed Jun 7, 2019
1 parent e35034f commit b635726
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 1 deletion.
11 changes: 10 additions & 1 deletion command.go
Original file line number Diff line number Diff line change
Expand Up @@ -384,13 +384,22 @@ func (c *Command) Help() error {
return nil
}

// UsageString return usage string.
// UsageString returns usage string.
func (c *Command) UsageString() string {
// Storing normal writers
tmpOutput := c.outWriter
tmpErr := c.errWriter

bb := new(bytes.Buffer)
c.outWriter = bb
c.errWriter = bb

c.Usage()

// Setting things back to normal
c.outWriter = tmpOutput
c.errWriter = tmpErr

return bb.String()
}

Expand Down
16 changes: 16 additions & 0 deletions command_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1405,6 +1405,22 @@ func TestSetIn(t *testing.T) {
}
}

func TestUsageStringRedirected(t *testing.T) {
c := &Command{}

c.usageFunc = func(cmd *Command) error {
cmd.Print("[stdout1]")
cmd.PrintErr("[stderr2]")
cmd.Print("[stdout3]")
return nil;
}

expected := "[stdout1][stderr2][stdout3]"
if got := c.UsageString(); got != expected {
t.Errorf("Expected usage string to consider both stdout and stderr")
}
}

func TestFlagErrorFunc(t *testing.T) {
c := &Command{Use: "c", Run: emptyRun}

Expand Down

0 comments on commit b635726

Please sign in to comment.