From bf68c70d2f22eaa3f455f096aaf04456ecfd1c7b Mon Sep 17 00:00:00 2001 From: Nermin Sehovic Date: Sun, 2 Jan 2022 23:01:13 +0100 Subject: [PATCH] fix(helm): Add filterHooks() helper function Both Run() and GetPodLogs() methods needs to take into account the filtering strings. filterHooks() was made to eliminate duplicate code Signed-off-by: Nermin Sehovic --- pkg/action/release_testing.go | 76 +++++++++++++++-------------------- 1 file changed, 32 insertions(+), 44 deletions(-) diff --git a/pkg/action/release_testing.go b/pkg/action/release_testing.go index d1f0d91cb..b50d18140 100644 --- a/pkg/action/release_testing.go +++ b/pkg/action/release_testing.go @@ -64,27 +64,8 @@ func (r *ReleaseTesting) Run(name string) (*release.Release, error) { return rel, err } - skippedHooks := []*release.Hook{} - executingHooks := []*release.Hook{} - if len(r.Filters["!name"]) != 0 { - for _, h := range rel.Hooks { - if contains(r.Filters["!name"], h.Name) { - skippedHooks = append(skippedHooks, h) - } else { - executingHooks = append(executingHooks, h) - } - } - rel.Hooks = executingHooks - } - if len(r.Filters["name"]) != 0 { - executingHooks = nil - for _, h := range rel.Hooks { - if contains(r.Filters["name"], h.Name) { - executingHooks = append(executingHooks, h) - } else { - skippedHooks = append(skippedHooks, h) - } - } + skippedHooks, executingHooks := filterHooks(r.Filters, rel) + if len(executingHooks) != 0 { rel.Hooks = executingHooks } @@ -107,31 +88,13 @@ func (r *ReleaseTesting) GetPodLogs(out io.Writer, rel *release.Release) error { return errors.Wrap(err, "unable to get kubernetes client to fetch pod logs") } - skippedHooks := []*release.Hook{} - executingHooks := []*release.Hook{} - if len(r.Filters["!name"]) != 0 { - for _, h := range rel.Hooks { - if contains(r.Filters["!name"], h.Name) { - skippedHooks = append(skippedHooks, h) - } else { - executingHooks = append(executingHooks, h) - } - } - rel.Hooks = executingHooks - } - if len(r.Filters["name"]) != 0 { - executingHooks = nil - for _, h := range rel.Hooks { - if contains(r.Filters["name"], h.Name) { - executingHooks = append(executingHooks, h) - } else { - skippedHooks = append(skippedHooks, h) - } - } - rel.Hooks = executingHooks + _, executingHooks := filterHooks(r.Filters, rel) + + if len(executingHooks) == 0 { + executingHooks = rel.Hooks } - for _, h := range rel.Hooks { + for _, h := range executingHooks { for _, e := range h.Events { if e == release.HookTest { req := client.CoreV1().Pods(r.Namespace).GetLogs(h.Name, &v1.PodLogOptions{}) @@ -152,6 +115,31 @@ func (r *ReleaseTesting) GetPodLogs(out io.Writer, rel *release.Release) error { return nil } +// Filter skipped and executing hooks +func filterHooks(filters map[string][]string, rel *release.Release) (skippedHooks, executingHooks []*release.Hook) { + if len(filters["!name"]) != 0 { + for _, h := range rel.Hooks { + if contains(filters["!name"], h.Name) { + skippedHooks = append(skippedHooks, h) + } else { + executingHooks = append(executingHooks, h) + } + } + } + + if len(filters["name"]) != 0 { + executingHooks = nil + for _, h := range rel.Hooks { + if contains(filters["name"], h.Name) { + executingHooks = append(executingHooks, h) + } else { + skippedHooks = append(skippedHooks, h) + } + } + } + return +} + func contains(arr []string, value string) bool { for _, item := range arr { if item == value {