Use semi-semantic versioning

- so we don't ignore tags like v223

[#107756410]
This commit is contained in:
Evan Short
2015-11-10 14:06:52 -08:00
parent 12aafdf3eb
commit 8ec667151f
2 changed files with 33 additions and 8 deletions

View File

@@ -4,8 +4,9 @@ import (
"sort"
"strconv"
"github.com/blang/semver"
"github.com/zachgersh/go-github/github"
"github.com/cppforlife/go-semi-semantic/version"
)
type CheckCommand struct {
@@ -37,7 +38,7 @@ func (c *CheckCommand) Run(request CheckRequest) ([]Version, error) {
if release.TagName == nil {
continue
}
if _, err := semver.New(determineVersionFromTag(*release.TagName)); err != nil {
if _, err := version.NewVersionFromString(determineVersionFromTag(*release.TagName)); err != nil {
continue
}
@@ -100,15 +101,15 @@ func (r byVersion) Swap(i, j int) {
}
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 {
return true
}
second, err := semver.New(determineVersionFromTag(*r[j].TagName))
second, err := version.NewVersionFromString(determineVersionFromTag(*r[j].TagName))
if err != nil {
return false
}
return first.LT(*second)
return first.IsLt(second)
}

View File

@@ -146,6 +146,30 @@ var _ = Describe("Check Command", func() {
{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() {
@@ -217,8 +241,8 @@ var _ = Describe("Check Command", func() {
Context("and non-of them are semver", func() {
BeforeEach(func() {
returnedReleases = []github.RepositoryRelease{
newDraftRepositoryRelease(1, "abc"),
newDraftRepositoryRelease(2, "123"),
newDraftRepositoryRelease(1, "abc/d"),
newDraftRepositoryRelease(2, "123*4"),
}
})
@@ -241,7 +265,7 @@ var _ = Describe("Check Command", func() {
newDraftRepositoryRelease(1, "v0.1.4"),
newDraftRepositoryRelease(2, ""),
newDraftWithNilTagRepositoryRelease(3),
newDraftRepositoryRelease(4, "asdf123"),
newDraftRepositoryRelease(4, "asdf@example.com"),
}
})