Skip to content

Commit fb8e9cb

Browse files
committed
Alphabetically sort the Delete Releases List
Co-authored-by: Josh Russett <jrussett@pivotal.io> Co-authored-by: Ramkumar Vengadakrishnan <rvengadakrishnan@pivotal.io> [#171940555] Kiln fetch: Sort Releases alphabetically
1 parent 8e350f9 commit fb8e9cb

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

fetcher/local_release_directory.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"io"
1313
"log"
1414
"os"
15+
"sort"
1516
)
1617

1718
type LocalReleaseDirectory struct {
@@ -61,6 +62,10 @@ func (l LocalReleaseDirectory) DeleteExtraReleases(extraReleaseSet []release.Loc
6162
} else {
6263
l.logger.Println("Warning: kiln will delete the following files:")
6364

65+
sort.SliceStable(extraReleaseSet, func(i, j int) bool {
66+
return extraReleaseSet[i].LocalPath < extraReleaseSet[j].LocalPath
67+
})
68+
6469
for _, release := range extraReleaseSet {
6570
l.logger.Printf("- %s\n", release.LocalPath)
6671
}

fetcher/local_release_directory_test.go

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package fetcher_test
22

33
import (
4+
"fmt"
5+
"github.com/onsi/gomega/gbytes"
46
"io/ioutil"
57
"log"
68
"os"
@@ -24,6 +26,7 @@ var _ = Describe("LocalReleaseDirectory", func() {
2426
releasesDir string
2527
releaseFile string
2628
fakeLogger *log.Logger
29+
logBuf *gbytes.Buffer
2730
)
2831

2932
BeforeEach(func() {
@@ -34,7 +37,9 @@ var _ = Describe("LocalReleaseDirectory", func() {
3437

3538
releaseFile = filepath.Join(releasesDir, "some-release.tgz")
3639

37-
fakeLogger = log.New(GinkgoWriter, "", 0)
40+
logBuf = gbytes.NewBuffer()
41+
fakeLogger = log.New(logBuf, "", 0)
42+
3843
releaseManifestReader := builder.NewReleaseManifestReader(osfs.New(""))
3944
releasesService := baking.NewReleasesService(fakeLogger, releaseManifestReader)
4045

@@ -86,11 +91,15 @@ var _ = Describe("LocalReleaseDirectory", func() {
8691
})
8792

8893
Describe("DeleteExtraReleases", func() {
89-
var extraFilePath string
94+
var extraFilePath, zFilePath string
9095
BeforeEach(func() {
9196
extraFilePath = filepath.Join(releasesDir, "extra-release-0.0-os-0-0.0.0.tgz")
9297
err := ioutil.WriteFile(extraFilePath, []byte("abc"), 0644)
9398
Expect(err).NotTo(HaveOccurred())
99+
100+
zFilePath = filepath.Join(releasesDir, "z-release-0.0-os-0-0.0.0.tgz")
101+
err = ioutil.WriteFile(zFilePath, []byte("xyz"), 0644)
102+
Expect(err).NotTo(HaveOccurred())
94103
})
95104

96105
It("deletes specified files", func() {
@@ -104,6 +113,21 @@ var _ = Describe("LocalReleaseDirectory", func() {
104113
Expect(os.IsNotExist(err)).To(BeTrue())
105114
})
106115

116+
It("sorts the list of releases to be deleted", func() {
117+
extraReleaseID := release.ID{Name: "extra-release", Version: "0.0"}
118+
extraRelease := release.Local{ID: extraReleaseID, LocalPath: extraFilePath}
119+
120+
zReleaseID := release.ID{Name: "z-release", Version: "0.0"}
121+
zRelease := release.Local{ID: zReleaseID, LocalPath: zFilePath}
122+
123+
result := fmt.Sprintf("- %s\n- %s", extraFilePath, zFilePath)
124+
125+
err := localReleaseDirectory.DeleteExtraReleases([]release.Local{zRelease, extraRelease}, false)
126+
Expect(err).NotTo(HaveOccurred())
127+
Expect(string(logBuf.Contents())).To(ContainSubstring(result))
128+
129+
})
130+
107131
Context("when a file cannot be removed", func() {
108132
It("returns an error", func() {
109133
extraReleaseID := release.ID{Name: "extra-release-that-cannot-be-deleted", Version: "0.0"}

0 commit comments

Comments
 (0)