Merge pull request #1100 from Nokel81/set-err-writer
Set App.ErrWriter in App.Setup()
This commit is contained in:
commit
95b323fc6f
20
app.go
20
app.go
@ -118,6 +118,7 @@ func NewApp() *App {
|
||||
Action: helpCommand.Action,
|
||||
Compiled: compileTime(),
|
||||
Writer: os.Stdout,
|
||||
ErrWriter: os.Stderr,
|
||||
}
|
||||
}
|
||||
|
||||
@ -163,6 +164,10 @@ func (a *App) Setup() {
|
||||
a.Writer = os.Stdout
|
||||
}
|
||||
|
||||
if a.ErrWriter == nil {
|
||||
a.ErrWriter = os.Stderr
|
||||
}
|
||||
|
||||
var newCommands []*Command
|
||||
|
||||
for _, c := range a.Commands {
|
||||
@ -196,10 +201,6 @@ func (a *App) Setup() {
|
||||
if a.Metadata == nil {
|
||||
a.Metadata = make(map[string]interface{})
|
||||
}
|
||||
|
||||
if a.Writer == nil {
|
||||
a.Writer = os.Stdout
|
||||
}
|
||||
}
|
||||
|
||||
func (a *App) newFlagSet() (*flag.FlagSet, error) {
|
||||
@ -326,7 +327,7 @@ func (a *App) RunContext(ctx context.Context, arguments []string) (err error) {
|
||||
// code in the cli.ExitCoder
|
||||
func (a *App) RunAndExitOnError() {
|
||||
if err := a.Run(os.Args); err != nil {
|
||||
_, _ = fmt.Fprintln(a.errWriter(), err)
|
||||
_, _ = fmt.Fprintln(a.ErrWriter, err)
|
||||
OsExiter(1)
|
||||
}
|
||||
}
|
||||
@ -480,15 +481,6 @@ func (a *App) VisibleFlags() []Flag {
|
||||
return visibleFlags(a.Flags)
|
||||
}
|
||||
|
||||
func (a *App) errWriter() io.Writer {
|
||||
// When the app ErrWriter is nil use the package level one.
|
||||
if a.ErrWriter == nil {
|
||||
return ErrWriter
|
||||
}
|
||||
|
||||
return a.ErrWriter
|
||||
}
|
||||
|
||||
func (a *App) appendFlag(fl Flag) {
|
||||
if !hasFlag(a.Flags, fl) {
|
||||
a.Flags = append(a.Flags, fl)
|
||||
|
31
app_test.go
31
app_test.go
@ -2152,3 +2152,34 @@ func newTestApp() *App {
|
||||
a.Writer = ioutil.Discard
|
||||
return a
|
||||
}
|
||||
|
||||
func TestSetupInitializesBothWriters(t *testing.T) {
|
||||
a := &App{}
|
||||
|
||||
a.Setup()
|
||||
|
||||
if a.ErrWriter != os.Stderr {
|
||||
t.Errorf("expected a.ErrWriter to be os.Stderr")
|
||||
}
|
||||
|
||||
if a.Writer != os.Stdout {
|
||||
t.Errorf("expected a.Writer to be os.Stdout")
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetupInitializesOnlyNilWriters(t *testing.T) {
|
||||
wr := &bytes.Buffer{}
|
||||
a := &App{
|
||||
ErrWriter: wr,
|
||||
}
|
||||
|
||||
a.Setup()
|
||||
|
||||
if a.ErrWriter != wr {
|
||||
t.Errorf("expected a.ErrWriter to be a *bytes.Buffer instance")
|
||||
}
|
||||
|
||||
if a.Writer != os.Stdout {
|
||||
t.Errorf("expected a.Writer to be os.Stdout")
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user