argoproj / argo-workflows

Workflow Engine for Kubernetes
https://argo-workflows.readthedocs.io/
Apache License 2.0
15.11k stars 3.21k forks source link

refactor: remove `util/slice` and use standard `slices` library #13775

Closed Joibel closed 4 weeks ago

Joibel commented 1 month ago

Motivation

/util/slices can be replaced by the official slices library added in go 1.21. This library is also the official version of golang.org/x/exp/slices.

Replace all uses of these libraries with slices

Modifications

Replace slice.ContainsString() with slices.Contains(). This is very simple.

Replace slice.RemoveString() with slices.DeleteFunc(), which involves a small inline boolean comparison function. RemoveString returned a copy of the slice, DeleteFunc modifies the slice in place. In the one case where we're using RemoveString to clone the slice (getPodCleanupPatch), slices.Clone() it before modifying.

Also fix a test name with a spelling mistake.

Verification

Test suite to catch the problems

Joibel commented 1 month ago

Draft as it collides with #13776/#12862

Joibel commented 1 month ago

Draft as it collides with #13776/#12862

This is now merged and this rebased on top.