diff --git a/pkg/package/version.go b/pkg/package/version.go index 76804436..5414db34 100644 --- a/pkg/package/version.go +++ b/pkg/package/version.go @@ -256,15 +256,20 @@ func PackageAdmit(selector, i PkgVersionSelector) (bool, error) { var v2 *version.Version = nil var ans bool var err error + var sanitizedSelectorVersion, sanitizedIVersion string if selector.Version != "" { - v1, err = version.NewVersion(selector.Version) + // TODO: This is temporary!. I promise it. + sanitizedSelectorVersion = strings.ReplaceAll(selector.Version, "_", "-") + + v1, err = version.NewVersion(sanitizedSelectorVersion) if err != nil { return false, err } } if i.Version != "" { - v2, err = version.NewVersion(i.Version) + sanitizedIVersion = strings.ReplaceAll(i.Version, "_", "-") + v2, err = version.NewVersion(sanitizedIVersion) if err != nil { return false, err } @@ -290,7 +295,7 @@ func PackageAdmit(selector, i PkgVersionSelector) (bool, error) { // TODO: case of 7.3* where 7.30 is accepted. if v1 != nil && v2 != nil { segments := v1.Segments() - n := strings.Count(selector.Version, ".") + n := strings.Count(sanitizedIVersion, ".") switch n { case 0: segments[0]++ @@ -303,7 +308,7 @@ func PackageAdmit(selector, i PkgVersionSelector) (bool, error) { } nextVersion := strings.Trim(strings.Replace(fmt.Sprint(segments), " ", ".", -1), "[]") constraints, err := version.NewConstraint( - fmt.Sprintf(">= %s, < %s", selector.Version, nextVersion), + fmt.Sprintf(">= %s, < %s", sanitizedSelectorVersion, nextVersion), ) if err != nil { return false, err diff --git a/pkg/package/version_test.go b/pkg/package/version_test.go index 4f8f6b7e..02bb8cda 100644 --- a/pkg/package/version_test.go +++ b/pkg/package/version_test.go @@ -191,6 +191,17 @@ var _ = Describe("Versions", func() { }) }) + Context("Versions Parser16 - semver", func() { + v, err := ParseVersion("<=1.0.29+pre2_p20191024") + It("ParseVersion10", func() { + var c PkgSelectorCondition = PkgCondLessEqual + Expect(err).Should(BeNil()) + Expect(v.Version).Should(Equal("1.0.29+pre2_p20191024")) + Expect(v.VersionSuffix).Should(Equal("")) + Expect(v.Condition).Should(Equal(c)) + }) + }) + Context("Selector1", func() { v1, err := ParseVersion(">=0.0.20190406.4.9.172-r1") v2, err2 := ParseVersion("1.0.111") @@ -275,6 +286,18 @@ var _ = Describe("Versions", func() { }) }) + Context("Selector8", func() { + v1, err := ParseVersion(">=0") + v2, err2 := ParseVersion("1.0.29+pre2_p20191024") + match, err3 := PackageAdmit(v1, v2) + It("Selector8", func() { + Expect(err).Should(BeNil()) + Expect(err2).Should(BeNil()) + Expect(err3).Should(BeNil()) + Expect(match).Should(Equal(true)) + }) + }) + Context("Condition Converter 1", func() { gp, err := gentoo.ParsePackageStr("=layer/build-1.0") var cond gentoo.PackageCond = gentoo.PkgCondEqual