Use semi-semantic versioning
- so we don't ignore tags like v223 [#107756410]
This commit is contained in:
@@ -4,8 +4,9 @@ import (
|
|||||||
"sort"
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"github.com/blang/semver"
|
|
||||||
"github.com/zachgersh/go-github/github"
|
"github.com/zachgersh/go-github/github"
|
||||||
|
|
||||||
|
"github.com/cppforlife/go-semi-semantic/version"
|
||||||
)
|
)
|
||||||
|
|
||||||
type CheckCommand struct {
|
type CheckCommand struct {
|
||||||
@@ -37,7 +38,7 @@ func (c *CheckCommand) Run(request CheckRequest) ([]Version, error) {
|
|||||||
if release.TagName == nil {
|
if release.TagName == nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if _, err := semver.New(determineVersionFromTag(*release.TagName)); err != nil {
|
if _, err := version.NewVersionFromString(determineVersionFromTag(*release.TagName)); err != nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,15 +101,15 @@ func (r byVersion) Swap(i, j int) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (r byVersion) Less(i, j int) bool {
|
func (r byVersion) Less(i, j int) bool {
|
||||||
first, err := semver.New(determineVersionFromTag(*r[i].TagName))
|
first, err := version.NewVersionFromString(determineVersionFromTag(*r[i].TagName))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
second, err := semver.New(determineVersionFromTag(*r[j].TagName))
|
second, err := version.NewVersionFromString(determineVersionFromTag(*r[j].TagName))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
return first.LT(*second)
|
return first.IsLt(second)
|
||||||
}
|
}
|
||||||
|
@@ -146,6 +146,30 @@ var _ = Describe("Check Command", func() {
|
|||||||
{Tag: "0.4.0"},
|
{Tag: "0.4.0"},
|
||||||
}))
|
}))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Context("when there are not-quite-semver versions", func() {
|
||||||
|
BeforeEach(func() {
|
||||||
|
returnedReleases = append(returnedReleases, newRepositoryRelease(5, "v1"))
|
||||||
|
returnedReleases = append(returnedReleases, newRepositoryRelease(6, "v0"))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("combines them with the semver versions in a reasonable order", func() {
|
||||||
|
command := resource.NewCheckCommand(githubClient)
|
||||||
|
|
||||||
|
response, err := command.Run(resource.CheckRequest{
|
||||||
|
Version: resource.Version{
|
||||||
|
Tag: "v0.1.3",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
Ω(err).ShouldNot(HaveOccurred())
|
||||||
|
|
||||||
|
Ω(response).Should(Equal([]resource.Version{
|
||||||
|
{Tag: "v0.1.4"},
|
||||||
|
{Tag: "0.4.0"},
|
||||||
|
{Tag: "v1"},
|
||||||
|
}))
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
Context("and one of the releases is a draft", func() {
|
Context("and one of the releases is a draft", func() {
|
||||||
@@ -217,8 +241,8 @@ var _ = Describe("Check Command", func() {
|
|||||||
Context("and non-of them are semver", func() {
|
Context("and non-of them are semver", func() {
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
returnedReleases = []github.RepositoryRelease{
|
returnedReleases = []github.RepositoryRelease{
|
||||||
newDraftRepositoryRelease(1, "abc"),
|
newDraftRepositoryRelease(1, "abc/d"),
|
||||||
newDraftRepositoryRelease(2, "123"),
|
newDraftRepositoryRelease(2, "123*4"),
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -241,7 +265,7 @@ var _ = Describe("Check Command", func() {
|
|||||||
newDraftRepositoryRelease(1, "v0.1.4"),
|
newDraftRepositoryRelease(1, "v0.1.4"),
|
||||||
newDraftRepositoryRelease(2, ""),
|
newDraftRepositoryRelease(2, ""),
|
||||||
newDraftWithNilTagRepositoryRelease(3),
|
newDraftWithNilTagRepositoryRelease(3),
|
||||||
newDraftRepositoryRelease(4, "asdf123"),
|
newDraftRepositoryRelease(4, "asdf@example.com"),
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user