pull/3840/merge
Michelle Noorali 8 years ago committed by GitHub
commit 8f7f7d7c13
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -18,6 +18,7 @@ package version // import "k8s.io/helm/pkg/version"
import ( import (
"fmt" "fmt"
"regexp"
"strings" "strings"
"github.com/Masterminds/semver" "github.com/Masterminds/semver"
@ -53,6 +54,18 @@ func IsCompatibleRange(constraint, ver string) bool {
return false return false
} }
verSuffix := sv.Prerelease()
if verSuffix != "" {
if !IsConstraintPrerelease(constraint) {
constraint = constraint + "-r0"
trimmedVer := strings.TrimSuffix(sv.String(), "-"+verSuffix)
sv, err = semver.NewVersion(trimmedVer)
if err != nil {
return false
}
}
}
c, err := semver.NewConstraint(constraint) c, err := semver.NewConstraint(constraint)
if err != nil { if err != nil {
return false return false
@ -60,6 +73,27 @@ func IsCompatibleRange(constraint, ver string) bool {
return c.Check(sv) return c.Check(sv)
} }
func IsConstraintPrerelease(constraint string) bool {
base := constraint
for _, c := range constraint {
char := string(c)
r := regexp.MustCompile(`^[0-9]+`).MatchString(char)
if !r {
base = strings.TrimPrefix(base, char)
} else {
break
}
}
baseVer, err := semver.NewVersion(base)
if err != nil {
return false
}
if baseVer.Prerelease() == "" {
return false
}
return true
}
func isUnreleased(v string) bool { func isUnreleased(v string) bool {
return strings.HasSuffix(v, "unreleased") return strings.HasSuffix(v, "unreleased")
} }

@ -56,6 +56,10 @@ func TestIsCompatibleRange(t *testing.T) {
{"v2", "v2.0.0", true}, {"v2", "v2.0.0", true},
{">2.0.0", "v2.1.1", true}, {">2.0.0", "v2.1.1", true},
{"v2.1.*", "v2.1.1", true}, {"v2.1.*", "v2.1.1", true},
{">=1.8.0", "v1.9.4-gke.1", true},
{">=1.8.0", "v1.7.4-gke.1", false},
{"<=1.8.0", "v1.7.4-gke.1", true},
{"~v2.0.0", "v2.0.1-gke1", true},
} }
for _, tt := range tests { for _, tt := range tests {

Loading…
Cancel
Save