MCPcopy
hub / github.com/helm/helm / Run

Method Run

pkg/action/release_testing.go:61–116  ·  view source on GitHub ↗

Run executes 'helm test' against the given release.

(name string)

Source from the content-addressed store, hash-verified

59
60// Run executes 'helm test' against the given release.
61func (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

Calls 6

LastMethod · 0.80
ContainsMethod · 0.80
releaserToV1ReleaseFunction · 0.70
IsReachableMethod · 0.65
UpdateMethod · 0.65