From 118b16110fa2deb4527adfad1c2f9d0415da67ca Mon Sep 17 00:00:00 2001 From: Evan Short Date: Fri, 11 Sep 2015 17:30:53 -0700 Subject: [PATCH] remove draft releases from resource check command [#102513822] Signed-off-by: Toby Rumans --- check_command.go | 13 +++++- check_command_test.go | 91 +++++++++++++++++++++++++++--------------- resource_suite_test.go | 17 ++++++++ 3 files changed, 87 insertions(+), 34 deletions(-) diff --git a/check_command.go b/check_command.go index aa19b00..ac202c0 100644 --- a/check_command.go +++ b/check_command.go @@ -29,7 +29,16 @@ func (c *CheckCommand) Run(request CheckRequest) ([]Version, error) { sort.Sort(byVersion(releases)) - latestVersion := *releases[len(releases)-1].TagName + var filteredReleases []github.RepositoryRelease + + for _, release := range releases { + draft := *release.Draft + if !draft { + filteredReleases = append(filteredReleases, release) + } + } + + latestVersion := *filteredReleases[len(filteredReleases)-1].TagName if request.Version.Tag == "" { return []Version{ @@ -43,7 +52,7 @@ func (c *CheckCommand) Run(request CheckRequest) ([]Version, error) { upToLatest := false reversedVersions := []Version{} - for _, release := range releases { + for _, release := range filteredReleases { version := *release.TagName if upToLatest { diff --git a/check_command_test.go b/check_command_test.go index 5895a71..e13cdfb 100644 --- a/check_command_test.go +++ b/check_command_test.go @@ -45,9 +45,9 @@ var _ = Describe("Check Command", func() { Context("when there are releases", func() { BeforeEach(func() { returnedReleases = []github.RepositoryRelease{ - {TagName: github.String("v0.4.0")}, - {TagName: github.String("0.1.3")}, - {TagName: github.String("v0.1.2")}, + newRepositoryRelease("v0.4.0"), + newRepositoryRelease("0.1.3"), + newRepositoryRelease("v0.1.2"), } }) @@ -79,42 +79,69 @@ var _ = Describe("Check Command", func() { }) Context("when there are releases", func() { - BeforeEach(func() { - returnedReleases = []github.RepositoryRelease{ - {TagName: github.String("v0.1.4")}, - {TagName: github.String("0.4.0")}, - {TagName: github.String("v0.1.3")}, - {TagName: github.String("0.1.2")}, - } + Context("and the releases do not contain a draft release", func() { + BeforeEach(func() { + returnedReleases = []github.RepositoryRelease{ + newRepositoryRelease("v0.1.4"), + newRepositoryRelease("0.4.0"), + newRepositoryRelease("v0.1.3"), + newRepositoryRelease("0.1.2"), + } + }) + + It("returns an empty list if the lastet version has been checked", func() { + command := resource.NewCheckCommand(githubClient) + + response, err := command.Run(resource.CheckRequest{ + Version: resource.Version{ + Tag: "0.4.0", + }, + }) + Ω(err).ShouldNot(HaveOccurred()) + + Ω(response).Should(BeEmpty()) + }) + + It("returns all of the versions that are newer", 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"}, + })) + }) }) - It("returns an empty list if the lastet version has been checked", func() { - command := resource.NewCheckCommand(githubClient) - - response, err := command.Run(resource.CheckRequest{ - Version: resource.Version{ - Tag: "0.4.0", - }, + Context("and one of the releases is a draft", func() { + BeforeEach(func() { + returnedReleases = []github.RepositoryRelease{ + newDraftRepositoryRelease("v0.1.4"), + newRepositoryRelease("0.4.0"), + newRepositoryRelease("v0.1.3"), + } }) - Ω(err).ShouldNot(HaveOccurred()) - Ω(response).Should(BeEmpty()) - }) + It("returns all of the versions that are newer, and not a draft", func() { + command := resource.NewCheckCommand(githubClient) - It("returns all of the versions that are newer", func() { - command := resource.NewCheckCommand(githubClient) + response, err := command.Run(resource.CheckRequest{ + Version: resource.Version{ + Tag: "v0.1.3", + }, + }) + Ω(err).ShouldNot(HaveOccurred()) - response, err := command.Run(resource.CheckRequest{ - Version: resource.Version{ - Tag: "v0.1.3", - }, + Ω(response).Should(Equal([]resource.Version{ + {Tag: "0.4.0"}, + })) }) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(response).Should(Equal([]resource.Version{ - {Tag: "v0.1.4"}, - {Tag: "0.4.0"}, - })) }) }) }) diff --git a/resource_suite_test.go b/resource_suite_test.go index db931e6..bd5367d 100644 --- a/resource_suite_test.go +++ b/resource_suite_test.go @@ -5,9 +5,26 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" + "github.com/zachgersh/go-github/github" ) func TestGithubReleaseResource(t *testing.T) { RegisterFailHandler(Fail) RunSpecs(t, "Github Release Resource Suite") } + +func newRepositoryRelease(version string) github.RepositoryRelease { + draft := false + return github.RepositoryRelease{ + TagName: github.String(version), + Draft: &draft, + } +} + +func newDraftRepositoryRelease(version string) github.RepositoryRelease { + draft := true + return github.RepositoryRelease{ + TagName: github.String(version), + Draft: &draft, + } +}