Skip to content

Commit 3b5aa44

Browse files
authored
Discard releases when reading candidates (#190)
This commit fixes two related problems: when version equaled "last_rc", Bazelisk-Go would not discard release versions, and it would return the "release" suffix as part of the version label. Fixes #189
1 parent dba981e commit 3b5aa44

2 files changed

Lines changed: 28 additions & 2 deletions

File tree

bazelisk_version_test.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,24 @@ func TestResolveLatestRcVersion(t *testing.T) {
5959
}
6060
}
6161

62+
func TestResolveLatestRcVersion_WithFullRelease(t *testing.T) {
63+
s := setUp(t)
64+
s.AddVersion("4.0.0", true, 1, 2, 3)
65+
s.Finish()
66+
67+
gcs := &repositories.GCSRepo{}
68+
repos := core.CreateRepositories(nil, gcs, nil, nil, false)
69+
version, _, err := repos.ResolveVersion(tmpDir, versions.BazelUpstream, "last_rc")
70+
71+
if err != nil {
72+
t.Fatalf("Version resolution failed unexpectedly: %v", err)
73+
}
74+
expectedRC := "4.0.0rc3"
75+
if version != expectedRC {
76+
t.Fatalf("Expected version %s, but got %s", expectedRC, version)
77+
}
78+
}
79+
6280
func TestResolveLatestVersion_TwoLatestVersionsDoNotHaveAReleaseYet(t *testing.T) {
6381
s := setUp(t)
6482
s.AddVersion("4.0.0", true)

repositories/gcs.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,8 @@ func listDirectoriesInReleaseBucket(prefix string) ([]string, bool, error) {
8282
func getVersionsFromGCSPrefixes(versions []string) []string {
8383
result := make([]string, len(versions))
8484
for i, v := range versions {
85-
result[i] = strings.ReplaceAll(v, "/", "")
85+
noSlashes := strings.ReplaceAll(v, "/", "")
86+
result[i] = strings.TrimSuffix(noSlashes, "release")
8687
}
8788
return result
8889
}
@@ -163,7 +164,14 @@ func (gcs *GCSRepo) GetCandidateVersions(bazeliskHome string) ([]string, error)
163164
return []string{}, fmt.Errorf("could not list release candidates for latest release: %v", err)
164165
}
165166

166-
return getVersionsFromGCSPrefixes(rcPrefixes), nil
167+
rcs := make([]string, 0)
168+
for _, v := range getVersionsFromGCSPrefixes(rcPrefixes) {
169+
// Remove full releases
170+
if strings.Contains(v, "rc") {
171+
rcs = append(rcs, v)
172+
}
173+
}
174+
return rcs, nil
167175
}
168176

169177
// DownloadCandidate downloads the given release candidate into the specified location and returns the absolute path.

0 commit comments

Comments
 (0)