util/time: ParseDuration fix #222
| @@ -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 | ||||
| 		} | ||||
|   | ||||
| @@ -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) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user