util/time: ParseDuration fix #222
| @@ -21,7 +21,6 @@ loop: | |||||||
| 	for i, r := range s { | 	for i, r := range s { | ||||||
| 		switch r { | 		switch r { | ||||||
| 		case 's', 'm': | 		case 's', 'm': | ||||||
| 			p = i |  | ||||||
| 			break loop | 			break loop | ||||||
| 		case 'h': | 		case 'h': | ||||||
| 			d, err := strconv.Atoi(s[p:i]) | 			d, err := strconv.Atoi(s[p:i]) | ||||||
| @@ -68,7 +67,7 @@ func (d *Duration) UnmarshalJSON(b []byte) error { | |||||||
| 		*d = Duration(time.Duration(value)) | 		*d = Duration(time.Duration(value)) | ||||||
| 		return nil | 		return nil | ||||||
| 	case string: | 	case string: | ||||||
| 		dv, err := time.ParseDuration(value) | 		dv, err := ParseDuration(value) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return err | 			return err | ||||||
| 		} | 		} | ||||||
|   | |||||||
| @@ -23,13 +23,21 @@ func TestUnmarshalJSON(t *testing.T) { | |||||||
| 		TTL Duration `json:"ttl"` | 		TTL Duration `json:"ttl"` | ||||||
| 	} | 	} | ||||||
| 	v := &str{} | 	v := &str{} | ||||||
|  | 	var err error | ||||||
|  |  | ||||||
| 	err := json.Unmarshal([]byte(`{"ttl":"10ms"}`), v) | 	err = json.Unmarshal([]byte(`{"ttl":"10ms"}`), v) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		t.Fatal(err) | 		t.Fatal(err) | ||||||
| 	} else if v.TTL != 10000000 { | 	} else if v.TTL != 10000000 { | ||||||
| 		t.Fatalf("invalid duration %v != 10000000", v.TTL) | 		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) { | func TestParseDuration(t *testing.T) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user