diff --git a/flag.go b/flag.go index 7c058de3..19852ec9 100644 --- a/flag.go +++ b/flag.go @@ -915,8 +915,8 @@ func VarP(value Value, name, shorthand, usage string) { // returns the error. func (f *FlagSet) failf(format string, a ...interface{}) error { err := fmt.Errorf(format, a...) + fmt.Fprintln(f.Output(), err) if f.errorHandling != ContinueOnError { - fmt.Fprintln(f.Output(), err) f.usage() } return err diff --git a/flag_test.go b/flag_test.go index 58a5d25a..cad8faf4 100644 --- a/flag_test.go +++ b/flag_test.go @@ -859,9 +859,14 @@ func TestSetOutput(t *testing.T) { flags.SetOutput(&buf) flags.Init("test", ContinueOnError) flags.Parse([]string{"--unknown"}) - if out := buf.String(); !strings.Contains(out, "--unknown") { - t.Logf("expected output mentioning unknown; got %q", out) + out := buf.String() + if out == "" { + t.Error("expected output, got none") } + if strings.Contains(out, "--unknown") { + return + } + t.Errorf("expected output mentioning unknown; got %q", out) } func TestOutput(t *testing.T) {