fix: add unit test for TestPostRenderHookManifests and fix unit test error in internal/test/test.go and pkg/chartutil/values.go

Signed-off-by: guofutan <guofutan@tencent.com>
pull/10873/head
guofutan 3 years ago
parent 0519200748
commit 6ed2086b74

@ -97,6 +97,19 @@ type Configuration struct {
Log func(string, ...interface{})
}
// postRenderReleaseHook render the manifests of release hooks with postrender.PostRenderer
func postRenderHookManifests(hs []*release.Hook, pr postrender.PostRenderer) error {
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)
}
hook.Manifest = sb.String()
}
return nil
}
// renderResources renders the templates in a chart
//
// TODO: This function is badly in need of a refactor.
@ -220,12 +233,10 @@ func (cfg *Configuration) renderResources(ch *chart.Chart, values chartutil.Valu
if err != nil {
return hs, b, notes, errors.Wrap(err, "error while running post render on files")
}
for _, hook := range hs {
sb, err := pr.Run(bytes.NewBufferString(hook.Manifest))
if err != nil {
return hs, b, notes, errors.Wrap(err, "error while running post render on hooks manifest")
}
hook.Manifest = sb.String()
err = postRenderHookManifests(hs, pr)
if err != nil {
return hs, b, notes, err
}
}

@ -18,13 +18,16 @@ package action
import (
"flag"
"io/ioutil"
"runtime"
"testing"
"github.com/stretchr/testify/assert"
fakeclientset "k8s.io/client-go/kubernetes/fake"
"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"
@ -281,3 +284,37 @@ func TestGetVersionSet(t *testing.T) {
t.Error("Non-existent version is reported found.")
}
}
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")
}
hs := []*release.Hook{
{
Name: "finding-nemo",
Kind: "Pod",
Path: "finding-nemo",
Manifest: manifestWithTestHook,
Events: []release.HookEvent{
release.HookTest,
},
},
}
pr, err := postrender.NewExec("sed", "s/fake-image/local-image/")
if err != nil {
t.Error(err)
}
if err := postRenderHookManifests(hs, pr); err != nil {
t.Error(err)
}
is := assert.New(t)
for _, hook := range hs {
is.Contains(hook.Manifest, "local-image")
}
}

Loading…
Cancel
Save