fix: add more info in postRenderHookManifests and use mock instead of sed in TestPostRenderHookManifests

Signed-off-by: guofutan <guofutan@tencent.com>
pull/10873/head
guofutan 3 years ago
parent 7359378792
commit 5f3ca5d78a

@ -103,7 +103,7 @@ func postRenderHookManifests(hs []*release.Hook, pr postrender.PostRenderer) err
for _, hook := range hs { for _, hook := range hs {
sb, err := pr.Run(bytes.NewBufferString(hook.Manifest)) sb, err := pr.Run(bytes.NewBufferString(hook.Manifest))
if err != nil { 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() hook.Manifest = sb.String()
} }

@ -16,9 +16,9 @@ limitations under the License.
package action package action
import ( import (
"bytes"
"flag" "flag"
"io/ioutil" "io/ioutil"
"runtime"
"testing" "testing"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
@ -27,7 +27,6 @@ import (
"helm.sh/helm/v3/pkg/chart" "helm.sh/helm/v3/pkg/chart"
"helm.sh/helm/v3/pkg/chartutil" "helm.sh/helm/v3/pkg/chartutil"
kubefake "helm.sh/helm/v3/pkg/kube/fake" 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/registry"
"helm.sh/helm/v3/pkg/release" "helm.sh/helm/v3/pkg/release"
"helm.sh/helm/v3/pkg/storage" "helm.sh/helm/v3/pkg/storage"
@ -285,17 +284,33 @@ func TestGetVersionSet(t *testing.T) {
} }
} }
func TestPostRenderHookManifests(t *testing.T) { type PostRendererMock struct {
if runtime.GOOS == "windows" { }
// the actual Run test uses a basic sed example, so skip this test on windows
t.Skip("skipping on windows") 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{ hs := []*release.Hook{
{ {
Name: "finding-nemo", Name: "test-postrender-hook",
Kind: "Pod", Kind: "Pod",
Path: "finding-nemo", Path: "test-postrender-hook",
Manifest: manifestWithTestHook, Manifest: manifestWithTestHook,
Events: []release.HookEvent{ Events: []release.HookEvent{
release.HookTest, release.HookTest,
@ -303,10 +318,7 @@ func TestPostRenderHookManifests(t *testing.T) {
}, },
} }
pr, err := postrender.NewExec("sed", "s/fake-image/local-image/") pr := &PostRendererMock{}
if err != nil {
t.Error(err)
}
if err := postRenderHookManifests(hs, pr); err != nil { if err := postRenderHookManifests(hs, pr); err != nil {
t.Error(err) t.Error(err)

Loading…
Cancel
Save