From 191dbcc58da3819aaa4d2a420232596a0d6d02fa Mon Sep 17 00:00:00 2001 From: wyike Date: Thu, 24 Nov 2022 15:05:38 +0800 Subject: [PATCH] Fix: bug of filter registry func will modify origin data (#5118) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix filter registry func flaky Signed-off-by: 楚岳 * fix comments Signed-off-by: 楚岳 Signed-off-by: 楚岳 --- pkg/addon/utils.go | 14 ++++++++++---- pkg/addon/utils_test.go | 13 +++++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/pkg/addon/utils.go b/pkg/addon/utils.go index 2851688bc..6e23ee053 100644 --- a/pkg/addon/utils.go +++ b/pkg/addon/utils.go @@ -504,9 +504,15 @@ func checkBondComponentExist(u unstructured.Unstructured, app v1beta1.Applicatio } // FilterDependencyRegistries will return all registries besides the target registry itself -func FilterDependencyRegistries(i int, registries []Registry) []Registry { - if i < len(registries) { - return append(registries[:i], registries[i+1:]...) +func FilterDependencyRegistries(i int, rs []Registry) []Registry { + if i >= len(rs) { + return rs } - return registries + if i < 0 { + return rs + } + ret := make([]Registry, len(rs)-1) + copy(ret, rs[:i]) + copy(ret[i:], rs[i+1:]) + return ret } diff --git a/pkg/addon/utils_test.go b/pkg/addon/utils_test.go index fa156e5d9..7c77f8290 100644 --- a/pkg/addon/utils_test.go +++ b/pkg/addon/utils_test.go @@ -334,36 +334,49 @@ func TestFilterDependencyRegistries(t *testing.T) { registries []Registry index int res []Registry + origin []Registry }{ { registries: []Registry{{Name: "r1"}, {Name: "r2"}, {Name: "r3"}}, index: 0, res: []Registry{{Name: "r2"}, {Name: "r3"}}, + origin: []Registry{{Name: "r1"}, {Name: "r2"}, {Name: "r3"}}, }, { registries: []Registry{{Name: "r1"}, {Name: "r2"}, {Name: "r3"}}, index: 1, res: []Registry{{Name: "r1"}, {Name: "r3"}}, + origin: []Registry{{Name: "r1"}, {Name: "r2"}, {Name: "r3"}}, }, { registries: []Registry{{Name: "r1"}, {Name: "r2"}, {Name: "r3"}}, index: 2, res: []Registry{{Name: "r1"}, {Name: "r2"}}, + origin: []Registry{{Name: "r1"}, {Name: "r2"}, {Name: "r3"}}, }, { registries: []Registry{{Name: "r1"}, {Name: "r2"}, {Name: "r3"}}, index: 3, res: []Registry{{Name: "r1"}, {Name: "r2"}, {Name: "r3"}}, + origin: []Registry{{Name: "r1"}, {Name: "r2"}, {Name: "r3"}}, + }, + { + registries: []Registry{{Name: "r1"}, {Name: "r2"}, {Name: "r3"}}, + index: -1, + res: []Registry{{Name: "r1"}, {Name: "r2"}, {Name: "r3"}}, + origin: []Registry{{Name: "r1"}, {Name: "r2"}, {Name: "r3"}}, }, { registries: []Registry{}, index: 0, res: []Registry{}, + origin: []Registry{}, }, } for _, testCase := range testCases { res := FilterDependencyRegistries(testCase.index, testCase.registries) assert.Equal(t, res, testCase.res) + assert.Equal(t, testCase.registries, testCase.origin) } }