util/time: ParseDuration fix #222

Merged
vtolstov merged 1 commits from timefix into v3 2023-05-29 14:04:42 +03:00
2 changed files with 10 additions and 3 deletions

View File

@ -21,7 +21,6 @@ loop:
for i, r := range s {
switch r {
case 's', 'm':
p = i
break loop
case 'h':
d, err := strconv.Atoi(s[p:i])
@ -68,7 +67,7 @@ func (d *Duration) UnmarshalJSON(b []byte) error {
*d = Duration(time.Duration(value))
return nil
case string:
dv, err := time.ParseDuration(value)
dv, err := ParseDuration(value)
if err != nil {
return err
}

View File

@ -23,13 +23,21 @@ func TestUnmarshalJSON(t *testing.T) {
TTL Duration `json:"ttl"`
}
v := &str{}
var err error
err := json.Unmarshal([]byte(`{"ttl":"10ms"}`), v)
err = json.Unmarshal([]byte(`{"ttl":"10ms"}`), v)
if err != nil {
t.Fatal(err)
} else if v.TTL != 10000000 {
t.Fatalf("invalid duration %v != 10000000", v.TTL)
}
err = json.Unmarshal([]byte(`{"ttl":"1y"}`), v)
if err != nil {
t.Fatal(err)
} else if v.TTL != 31536000000000000 {
t.Fatalf("invalid duration %v != 31536000000000000", v.TTL)
}
}
func TestParseDuration(t *testing.T) {