From 0e6831cf6769e45811bb3937152236eafd30bb3d Mon Sep 17 00:00:00 2001 From: Eugene Sumin <95425330+e-sumin@users.noreply.github.com> Date: Sat, 9 Mar 2024 12:35:46 +0100 Subject: [PATCH] refactor: Satisfy linter in zonesToRegion (#2735) * Satisfy linter in `zonesToRegion` * Ensure consistent region ordering --------- Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- pkg/kube/volume/volume.go | 17 +++++++---------- pkg/kube/volume/volume_test.go | 25 ++----------------------- 2 files changed, 9 insertions(+), 33 deletions(-) diff --git a/pkg/kube/volume/volume.go b/pkg/kube/volume/volume.go index c4be37d3c6..e1c99b9aa3 100644 --- a/pkg/kube/volume/volume.go +++ b/pkg/kube/volume/volume.go @@ -348,19 +348,16 @@ func zoneToRegion(zone string) string { } func zonesToRegions(zone string) []string { - reg := map[string]struct{}{} - // TODO: gocritic rule below suggests to use regexp.MustCompile but it - // panics if regex cannot be compiled. We should add proper test before - // enabling this below so that no change to this regex results in a panic - r, _ := regexp.Compile("-?[a-z]$") //nolint:gocritic + reg := map[string]bool{} + var regions []string + r := regexp.MustCompile("-?[a-z]$") for _, z := range strings.Split(zone, RegionZoneSeparator) { zone = r.ReplaceAllString(z, "") - reg[zone] = struct{}{} + if _, ok := reg[zone]; !ok { + reg[zone] = true + regions = append(regions, zone) + } } - var regions []string - for k := range reg { - regions = append(regions, k) - } return regions } diff --git a/pkg/kube/volume/volume_test.go b/pkg/kube/volume/volume_test.go index 1000251fd6..a0c0532b4c 100644 --- a/pkg/kube/volume/volume_test.go +++ b/pkg/kube/volume/volume_test.go @@ -203,7 +203,7 @@ func (s *TestVolSuite) fakeUnstructuredSnasphotWSize(vsName, namespace, size str } func (s *TestVolSuite) TestZoneToRegion(c *C) { - for _, tc := range []struct { + for idx, tc := range []struct { zone string expectedRegion []string }{ @@ -237,27 +237,6 @@ func (s *TestVolSuite) TestZoneToRegion(c *C) { }, } { reg := zonesToRegions(tc.zone) - c.Assert(slicesEqual(reg, tc.expectedRegion), Equals, true) - } -} - -// slicesEqual compares two unordered slices and returns true if -// both of them have same elements -func slicesEqual(one, two []string) bool { - if len(one) != len(two) { - return false - } - - for _, o := range one { - var found bool - for _, t := range two { - if o == t { - found = true - } - } - if !found { - return false - } + c.Assert(reg, DeepEquals, tc.expectedRegion, Commentf("Case #%d", idx)) } - return true }