Skip to content

Commit 89efb15

Browse files
committed
Fixed JSON/YAML/Binary parsing
1 parent ccd5943 commit 89efb15

File tree

6 files changed

+23
-0
lines changed

6 files changed

+23
-0
lines changed

binary.go

+1
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ func (v *Version) UnmarshalBinary(data []byte) error {
5353

5454
buff, data = decodeArray(data)
5555
v.raw = string(buff)
56+
v.bytes = []byte(v.raw)
5657
v.major, data = decodeInt(data)
5758
v.minor, data = decodeInt(data)
5859
v.patch, data = decodeInt(data)

binary_test.go

+12
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,18 @@ func TestGOBEncoderVersion(t *testing.T) {
3535

3636
require.Equal(t, dumpV, dumpU)
3737
require.Equal(t, testVersion, u.String())
38+
39+
{
40+
dataV := new(bytes.Buffer)
41+
dataU := new(bytes.Buffer)
42+
require.NoError(t, gob.NewEncoder(dataV).Encode(MustParse("1.6.2")))
43+
require.NoError(t, gob.NewEncoder(dataU).Encode(MustParse("1.6.3")))
44+
45+
var v, u *Version
46+
require.NoError(t, gob.NewDecoder(dataV).Decode(&v))
47+
require.NoError(t, gob.NewDecoder(dataU).Decode(&u))
48+
require.True(t, u.GreaterThan(v))
49+
}
3850
}
3951

4052
func TestGOBEncoderRelaxedVersion(t *testing.T) {

json.go

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ func (v *Version) UnmarshalJSON(data []byte) error {
2727
}
2828

2929
v.raw = parsed.raw
30+
v.bytes = []byte(v.raw)
3031
v.major = parsed.major
3132
v.minor = parsed.minor
3233
v.patch = parsed.patch

json_test.go

+4
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ func TestJSONParseVersion(t *testing.T) {
3636

3737
err = json.Unmarshal([]byte(`123`), &u)
3838
require.Error(t, err)
39+
40+
require.NoError(t, json.Unmarshal([]byte(`"1.6.2"`), &v))
41+
require.NoError(t, json.Unmarshal([]byte(`"1.6.3"`), &u))
42+
require.True(t, u.GreaterThan(v))
3943
}
4044

4145
func TestJSONParseRelaxedVersion(t *testing.T) {

yaml.go

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ func (v *Version) UnmarshalYAML(node *yaml.Node) error {
2727
}
2828

2929
v.raw = parsed.raw
30+
v.bytes = []byte(v.raw)
3031
v.major = parsed.major
3132
v.minor = parsed.minor
3233
v.patch = parsed.patch

yaml_test.go

+4
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ func TestYAMLParseVersion(t *testing.T) {
4242

4343
err = yaml.Unmarshal([]byte(`invalid:`), &u)
4444
require.Error(t, err)
45+
46+
require.NoError(t, yaml.Unmarshal([]byte(`"1.6.2"`), &v))
47+
require.NoError(t, yaml.Unmarshal([]byte(`"1.6.3"`), &u))
48+
require.True(t, u.GreaterThan(v))
4549
}
4650

4751
func TestYAMLParseRelaxedVersion(t *testing.T) {

0 commit comments

Comments
 (0)