Proper handling of flag error messages. Fixing test that wasn't passing.

This commit is contained in:
spf13 2013-09-24 13:15:30 -04:00
parent 62fb674a93
commit 68f3c66d07
2 changed files with 14 additions and 10 deletions

View file

@ -215,18 +215,21 @@ func TestChildCommandFlags(t *testing.T) {
}
// Testing with flag only existing on child
buf2 := new(bytes.Buffer)
c = initialize()
c.SetOutput(buf2)
cmdEcho.AddCommand(cmdTimes)
c.AddCommand(cmdPrint, cmdEcho)
c.SetArgs(strings.Split("echo -j 99 -i77 one two", " "))
err := c.Execute()
_ = err
//c.DebugFlags()
// TODO figure out why this isn't passing
//if err == nil {
//t.Errorf("invalid flag should generate error")
//}
if err == nil {
t.Errorf("invalid flag should generate error")
}
if !strings.Contains(buf2.String(), "intone=123") {
t.Errorf("Wrong error message displayed, \n %s", buf.String())
}
}

View file

@ -336,10 +336,11 @@ func (c *Command) ParseFlags(args []string) (err error) {
if err != nil {
return err
}
if c.flagErrorBuf != nil {
//fmt.Println(c.flagErrorBuf.String())
return nil
//return fmt.Errorf("%s", c.flagErrorBuf.String())
// The upstream library adds spaces to the error
// response regardless of success.
// Handling it here until fixing upstream
if len(strings.TrimSpace(c.flagErrorBuf.String())) > 1 {
return fmt.Errorf("%s", c.flagErrorBuf.String())
}
return nil
}