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) } }