diff --git a/util/version/version.go b/util/version/version.go index 932deb64..940ed162 100644 --- a/util/version/version.go +++ b/util/version/version.go @@ -130,6 +130,10 @@ func ShouldUpdate(current *types.Version, new *types.Version, policy types.Polic return false, fmt.Errorf("failed to parse new version: %s", err) } + if currentVersion.Prerelease() != newVersion.Prerelease() { + return false, nil + } + // new version is not higher than current - do nothing if !currentVersion.LessThan(newVersion) { return false, nil diff --git a/util/version/version_test.go b/util/version/version_test.go index 6076c867..f97f3714 100644 --- a/util/version/version_test.go +++ b/util/version/version_test.go @@ -193,6 +193,36 @@ func TestShouldUpdate(t *testing.T) { want: true, wantErr: false, }, + { + name: "prerelease patch increase, policy minor, no prerelease", + args: args{ + current: &types.Version{Major: 1, Minor: 4, Patch: 5}, + new: &types.Version{Major: 1, Minor: 4, Patch: 6, PreRelease: "xx"}, + policy: types.PolicyTypeMinor, + }, + want: false, + wantErr: false, + }, + { + name: "prerelease patch increase, policy minor", + args: args{ + current: &types.Version{Major: 1, Minor: 4, Patch: 5, PreRelease: "xx"}, + new: &types.Version{Major: 1, Minor: 4, Patch: 6, PreRelease: "xx"}, + policy: types.PolicyTypeMinor, + }, + want: true, + wantErr: false, + }, + { + name: "patch increase, policy minor, wrong prerelease", + args: args{ + current: &types.Version{Major: 1, Minor: 4, Patch: 5, PreRelease: "xx"}, + new: &types.Version{Major: 1, Minor: 4, Patch: 6, PreRelease: "yy"}, + policy: types.PolicyTypeMinor, + }, + want: false, + wantErr: false, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) {