Run executes 'helm test' against the given release.
(name string)
| 59 | |
| 60 | // Run executes 'helm test' against the given release. |
| 61 | func (r *ReleaseTesting) Run(name string) (ri.Releaser, ExecuteShutdownFunc, error) { |
| 62 | if err := r.cfg.KubeClient.IsReachable(); err != nil { |
| 63 | return nil, shutdownNoOp, err |
| 64 | } |
| 65 | |
| 66 | if err := chartutil.ValidateReleaseName(name); err != nil { |
| 67 | return nil, shutdownNoOp, fmt.Errorf("releaseTest: Release name is invalid: %s", name) |
| 68 | } |
| 69 | |
| 70 | // finds the non-deleted release with the given name |
| 71 | reli, err := r.cfg.Releases.Last(name) |
| 72 | if err != nil { |
| 73 | return reli, shutdownNoOp, err |
| 74 | } |
| 75 | |
| 76 | rel, err := releaserToV1Release(reli) |
| 77 | if err != nil { |
| 78 | return reli, shutdownNoOp, err |
| 79 | } |
| 80 | |
| 81 | skippedHooks := []*release.Hook{} |
| 82 | executingHooks := []*release.Hook{} |
| 83 | if len(r.Filters[ExcludeNameFilter]) != 0 { |
| 84 | for _, h := range rel.Hooks { |
| 85 | if slices.Contains(r.Filters[ExcludeNameFilter], h.Name) { |
| 86 | skippedHooks = append(skippedHooks, h) |
| 87 | } else { |
| 88 | executingHooks = append(executingHooks, h) |
| 89 | } |
| 90 | } |
| 91 | rel.Hooks = executingHooks |
| 92 | } |
| 93 | if len(r.Filters[IncludeNameFilter]) != 0 { |
| 94 | executingHooks = nil |
| 95 | for _, h := range rel.Hooks { |
| 96 | if slices.Contains(r.Filters[IncludeNameFilter], h.Name) { |
| 97 | executingHooks = append(executingHooks, h) |
| 98 | } else { |
| 99 | skippedHooks = append(skippedHooks, h) |
| 100 | } |
| 101 | } |
| 102 | rel.Hooks = executingHooks |
| 103 | } |
| 104 | |
| 105 | serverSideApply := rel.ApplyMethod == string(release.ApplyMethodServerSideApply) |
| 106 | shutdown, err := r.cfg.execHookWithDelayedShutdown(rel, release.HookTest, kube.StatusWatcherStrategy, r.WaitOptions, r.Timeout, serverSideApply) |
| 107 | |
| 108 | if err != nil { |
| 109 | rel.Hooks = append(skippedHooks, rel.Hooks...) |
| 110 | r.cfg.Releases.Update(reli) |
| 111 | return reli, shutdown, err |
| 112 | } |
| 113 | |
| 114 | rel.Hooks = append(skippedHooks, rel.Hooks...) |
| 115 | return reli, shutdown, r.cfg.Releases.Update(reli) |
| 116 | } |
| 117 | |
| 118 | // GetPodLogs will write the logs for all test pods in the given release into |