From cb9d34298fc859f115abd450aa2040904bc69c87 Mon Sep 17 00:00:00 2001 From: nicholasSUSE Date: Mon, 3 Feb 2025 19:51:11 -0300 Subject: [PATCH 1/2] Changing strategy for bump version Instead of appending and keeping the old versions, - overwrite with the new version rancher-cis-benchmark has already adopted the auto-bump there will be no development work on 2 simulataneous versions at the same branch line. --- pkg/auto/release.go | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/pkg/auto/release.go b/pkg/auto/release.go index c807dd34..e32dd192 100644 --- a/pkg/auto/release.go +++ b/pkg/auto/release.go @@ -135,9 +135,8 @@ func (r *Release) UpdateReleaseYaml() error { return err } - // Append new version and remove duplicates if any - releaseVersions[r.Chart] = append(releaseVersions[r.Chart], r.ChartVersion) - releaseVersions[r.Chart] = removeDuplicates(releaseVersions[r.Chart]) + // Overwrite with the target version Bump only + releaseVersions[r.Chart] = []string{r.ChartVersion} // Since we opened and read the file before we can truncate it. outputFile, err := os.Create(r.ReleaseYamlPath) @@ -154,18 +153,3 @@ func (r *Release) UpdateReleaseYaml() error { return nil } - -// removeDuplicates takes a slice of strings and returns a new slice with duplicates removed. -func removeDuplicates(slice []string) []string { - seen := make(map[string]struct{}) // map to keep track of seen strings - var result []string // slice to hold the results - - for _, val := range slice { - if _, ok := seen[val]; !ok { - seen[val] = struct{}{} // mark string as seen - result = append(result, val) // append to result if not seen before - } - } - - return result -} From 7cf7ece0aec50ae1cf141cca10ac0cfb999d058e Mon Sep 17 00:00:00 2001 From: nicholasSUSE Date: Mon, 3 Feb 2025 19:52:29 -0300 Subject: [PATCH 2/2] removing some unit-tests, adding more cases for RC versions --- pkg/auto/release_test.go | 110 +++++++++++++++++++++------------------ 1 file changed, 58 insertions(+), 52 deletions(-) diff --git a/pkg/auto/release_test.go b/pkg/auto/release_test.go index 7e4570e4..338b7108 100644 --- a/pkg/auto/release_test.go +++ b/pkg/auto/release_test.go @@ -1,8 +1,11 @@ package auto import ( + "log" "os" "testing" + + "gopkg.in/yaml.v3" ) func Test_UpdateReleaseYaml(t *testing.T) { @@ -44,7 +47,7 @@ func Test_UpdateReleaseYaml(t *testing.T) { }, ex: expected{ ReleaseVersions: map[string][]string{ - "chart1": {"1.0.0", "2.0.0"}, + "chart1": {"2.0.0"}, }, }, }, @@ -59,7 +62,7 @@ func Test_UpdateReleaseYaml(t *testing.T) { }, ex: expected{ ReleaseVersions: map[string][]string{ - "chart1": {"1.0.0", "2.0.0", "3.0.0"}, + "chart1": {"3.0.0"}, }, }, }, @@ -98,22 +101,65 @@ func Test_UpdateReleaseYaml(t *testing.T) { }, }, }, + // Test for RC versions + { + name: "Test #6", + i: input{ + ReleaseVersions: map[string][]string{ + "chart1": {"1.0.0", "2.0.0-rc.1", "2.0.0"}, + }, + ChartVersion: "2.0.0", + Chart: "chart1", + }, + ex: expected{ + ReleaseVersions: map[string][]string{ + "chart1": {"2.0.0"}, + }, + }, + }, + { + name: "Test #7", + i: input{ + ReleaseVersions: map[string][]string{ + "chart1": {"1.0.0", "2.0.0", "2.0.1"}, + }, + ChartVersion: "2.0.1-rc.1", + Chart: "chart1", + }, + ex: expected{ + ReleaseVersions: map[string][]string{ + "chart1": {"2.0.1-rc.1"}, + }, + }, + }, } - tempDir, err := os.MkdirTemp("", "unit-test-tmp") - if err != nil { - t.Fatalf("failed to create temp dir: %v", err) - } - defer os.RemoveAll(tempDir) + tempReleaseYamlFunc := func(releaseVersions map[string][]string) string { + tempDir, err := os.MkdirTemp("", "unit-test-tmp") + if err != nil { + t.Fatalf("failed to create temp dir: %v", err) + } + // Create a release.yaml file + output, err := os.Create(tempDir + "/release.yaml") - // Create a release.yaml file - if _, err := os.Create(tempDir + "/release.yaml"); err != nil { - t.Fatalf("failed to create release.yaml file: %v", err) + if err != nil { + t.Fatalf("failed to create release.yaml file: %v", err) + } + + encoder := yaml.NewEncoder(output) + encoder.SetIndent(2) + if err := encoder.Encode(releaseVersions); err != nil { + log.Fatalf("failed to encode releaseVersions: %v", err) + } + + return tempDir } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { + tempDir := tempReleaseYamlFunc(tt.i.ReleaseVersions) + r := &Release{ ChartVersion: tt.i.ChartVersion, Chart: tt.i.Chart, @@ -143,6 +189,8 @@ func Test_UpdateReleaseYaml(t *testing.T) { } } } + // reset before next test + os.RemoveAll(tempDir) }) } @@ -187,45 +235,3 @@ func Test_mountAssetVersionPath(t *testing.T) { }) } } - -func Test_removeDuplicates(t *testing.T) { - type input struct { - versions []string - } - inputs := []input{ - {[]string{"1.0.0", "1.0.0", "1.0.0"}}, - {[]string{"1.0.0", "1.0.0", "2.0.0", "2.0.0", "3.0.0"}}, - } - type output struct { - uniqueVersions []string - } - outputs := []output{ - {[]string{"1.0.0"}}, - {[]string{"1.0.0", "2.0.0", "3.0.0"}}, - } - - type test struct { - name string - input input - output output - } - - tests := []test{ - {"#1", inputs[0], outputs[0]}, - {"#2", inputs[1], outputs[1]}, - } - - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - uniqueVersions := removeDuplicates(test.input.versions) - if len(uniqueVersions) != len(test.output.uniqueVersions) { - t.Errorf("expected %v, got %v", test.output.uniqueVersions, uniqueVersions) - } - for i := range uniqueVersions { - if uniqueVersions[i] != test.output.uniqueVersions[i] { - t.Errorf("expected %v, got %v", test.output.uniqueVersions, uniqueVersions) - } - } - }) - } -}