diff --git a/pkg/action/action.go b/pkg/action/action.go index 7e31de76a..550137f14 100644 --- a/pkg/action/action.go +++ b/pkg/action/action.go @@ -103,7 +103,7 @@ func postRenderHookManifests(hs []*release.Hook, pr postrender.PostRenderer) err for _, hook := range hs { sb, err := pr.Run(bytes.NewBufferString(hook.Manifest)) if err != nil { - return errors.Wrapf(err, "error while running post render on hook: %s manifest", hook.Name) + return errors.Wrapf(err, "error while running postRender on hook: %s, which is path: %s and kind: %s", hook.Name, hook.Path, hook.Kind) } hook.Manifest = sb.String() } diff --git a/pkg/action/action_test.go b/pkg/action/action_test.go index cfdc039a9..cc68aab70 100644 --- a/pkg/action/action_test.go +++ b/pkg/action/action_test.go @@ -16,9 +16,9 @@ limitations under the License. package action import ( + "bytes" "flag" "io/ioutil" - "runtime" "testing" "github.com/stretchr/testify/assert" @@ -27,7 +27,6 @@ import ( "helm.sh/helm/v3/pkg/chart" "helm.sh/helm/v3/pkg/chartutil" kubefake "helm.sh/helm/v3/pkg/kube/fake" - "helm.sh/helm/v3/pkg/postrender" "helm.sh/helm/v3/pkg/registry" "helm.sh/helm/v3/pkg/release" "helm.sh/helm/v3/pkg/storage" @@ -285,17 +284,33 @@ func TestGetVersionSet(t *testing.T) { } } -func TestPostRenderHookManifests(t *testing.T) { - if runtime.GOOS == "windows" { - // the actual Run test uses a basic sed example, so skip this test on windows - t.Skip("skipping on windows") +type PostRendererMock struct { +} + +func (p *PostRendererMock) Run(renderedManifests *bytes.Buffer) (*bytes.Buffer, error) { + var output = &bytes.Buffer{} + for { + line, err := renderedManifests.ReadBytes('\n') + + if len(line) > 0 { + output.Write(bytes.ReplaceAll(line, []byte("fake-image"), []byte("local-image"))) + } + // ReadBytes returns err != nil if and only if the returned data does not end in delim. + if err != nil { + break + } } + return output, nil +} + +func TestPostRenderHookManifests(t *testing.T) { + hs := []*release.Hook{ { - Name: "finding-nemo", + Name: "test-postrender-hook", Kind: "Pod", - Path: "finding-nemo", + Path: "test-postrender-hook", Manifest: manifestWithTestHook, Events: []release.HookEvent{ release.HookTest, @@ -303,10 +318,7 @@ func TestPostRenderHookManifests(t *testing.T) { }, } - pr, err := postrender.NewExec("sed", "s/fake-image/local-image/") - if err != nil { - t.Error(err) - } + pr := &PostRendererMock{} if err := postRenderHookManifests(hs, pr); err != nil { t.Error(err)