86 lines
1.8 KiB
Go
86 lines
1.8 KiB
Go
package engineversion
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestParseSemverNormalises(t *testing.T) {
|
|
tests := []struct {
|
|
input string
|
|
want string
|
|
}{
|
|
{"1.2.3", "v1.2.3"},
|
|
{"v1.2.3", "v1.2.3"},
|
|
{" v0.4.0 ", "v0.4.0"},
|
|
{"v2.0.0-rc.1", "v2.0.0-rc.1"},
|
|
{"v2.0.0+build.7", "v2.0.0+build.7"},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.input, func(t *testing.T) {
|
|
got, err := ParseSemver(tt.input)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, tt.want, got)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestParseSemverRejects(t *testing.T) {
|
|
tests := []string{
|
|
"",
|
|
" ",
|
|
"latest",
|
|
"1",
|
|
"1.2",
|
|
"v1.2",
|
|
"1.2.3.4",
|
|
"v1.2.x",
|
|
}
|
|
for _, input := range tests {
|
|
t.Run(input, func(t *testing.T) {
|
|
_, err := ParseSemver(input)
|
|
require.Error(t, err)
|
|
assert.True(t, errors.Is(err, ErrInvalidSemver))
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestIsPatchUpgrade(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
current string
|
|
next string
|
|
want bool
|
|
}{
|
|
{"same patch", "v1.2.3", "v1.2.3", true},
|
|
{"patch bump", "v1.2.3", "v1.2.4", true},
|
|
{"patch downgrade", "1.2.4", "1.2.0", true},
|
|
{"prerelease patch", "v1.2.3", "v1.2.3-rc.1", true},
|
|
{"minor bump", "v1.2.3", "v1.3.0", false},
|
|
{"minor downgrade", "v1.2.3", "v1.1.9", false},
|
|
{"major bump", "v1.2.3", "v2.0.0", false},
|
|
{"major downgrade", "v2.0.0", "v1.9.9", false},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got, err := IsPatchUpgrade(tt.current, tt.next)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, tt.want, got)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestIsPatchUpgradeRejectsBadInputs(t *testing.T) {
|
|
_, err := IsPatchUpgrade("garbage", "v1.2.3")
|
|
require.Error(t, err)
|
|
assert.True(t, errors.Is(err, ErrInvalidSemver))
|
|
|
|
_, err = IsPatchUpgrade("v1.2.3", "")
|
|
require.Error(t, err)
|
|
assert.True(t, errors.Is(err, ErrInvalidSemver))
|
|
}
|