pkg/flags: fix "SetFlagsFromEnv" error masking

Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com>
This commit is contained in:
Gyu-Ho Lee 2017-11-27 06:41:43 -08:00
parent d84d3f2f77
commit 965d9806d5
2 changed files with 18 additions and 1 deletions

View File

@ -78,7 +78,9 @@ func SetFlagsFromEnv(prefix string, fs *flag.FlagSet) error {
})
usedEnvKey := make(map[string]bool)
fs.VisitAll(func(f *flag.Flag) {
err = setFlagFromEnv(fs, prefix, f.Name, usedEnvKey, alreadySet, true)
if serr := setFlagFromEnv(fs, prefix, f.Name, usedEnvKey, alreadySet, true); serr != nil {
err = serr
}
})
verifyEnv(prefix, usedEnvKey, alreadySet)
return err

View File

@ -76,3 +76,18 @@ func TestSetFlagsFromEnvBad(t *testing.T) {
t.Errorf("err=nil, want != nil")
}
}
func TestSetFlagsFromEnvParsingError(t *testing.T) {
fs := flag.NewFlagSet("etcd", flag.ContinueOnError)
var tickMs uint
fs.UintVar(&tickMs, "heartbeat-interval", 0, "Time (in milliseconds) of a heartbeat interval.")
if oerr := os.Setenv("ETCD_HEARTBEAT_INTERVAL", "100 # ms"); oerr != nil {
t.Fatal(oerr)
}
defer os.Unsetenv("ETCD_HEARTBEAT_INTERVAL")
if serr := SetFlagsFromEnv("ETCD", fs); serr.Error() != `invalid value "100 # ms" for ETCD_HEARTBEAT_INTERVAL: strconv.ParseUint: parsing "100 # ms": invalid syntax` {
t.Fatalf("expected parsing error, got %v", serr)
}
}