Merge pull request #3808 from adshmh/refactor-release-testing-unit-tests-to-utilize-runReleaseCases

refactor release_testing unit tests to utilize runReleaseCases
pull/3876/head
Matthew Fisher 6 years ago committed by GitHub
commit 15e9f54144
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -43,7 +43,10 @@ func runReleaseCases(t *testing.T, tests []releaseCase, rcmd releaseCmd) {
var buf bytes.Buffer var buf bytes.Buffer
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
c := &helm.FakeClient{Rels: tt.rels} c := &helm.FakeClient{
Rels: tt.rels,
Responses: tt.responses,
}
cmd := rcmd(c, &buf) cmd := rcmd(c, &buf)
cmd.ParseFlags(tt.flags) cmd.ParseFlags(tt.flags)
err := cmd.RunE(cmd, tt.args) err := cmd.RunE(cmd, tt.args)
@ -69,7 +72,8 @@ type releaseCase struct {
err bool err bool
resp *release.Release resp *release.Release
// Rels are the available releases at the start of the test. // Rels are the available releases at the start of the test.
rels []*release.Release rels []*release.Release
responses map[string]release.TestRun_Status
} }
// tempHelmHome sets up a Helm Home in a temp dir. // tempHelmHome sets up a Helm Home in a temp dir.

@ -17,55 +17,50 @@ limitations under the License.
package main package main
import ( import (
"bytes" "io"
"testing" "testing"
"github.com/spf13/cobra"
"k8s.io/helm/pkg/helm" "k8s.io/helm/pkg/helm"
"k8s.io/helm/pkg/proto/hapi/release" "k8s.io/helm/pkg/proto/hapi/release"
) )
func TestReleaseTesting(t *testing.T) { func TestReleaseTesting(t *testing.T) {
tests := []struct { tests := []releaseCase{
name string
args []string
flags []string
responses map[string]release.TestRun_Status
fail bool
}{
{ {
name: "basic test", name: "basic test",
args: []string{"example-release"}, args: []string{"example-release"},
flags: []string{}, flags: []string{},
responses: map[string]release.TestRun_Status{"PASSED: green lights everywhere": release.TestRun_SUCCESS}, responses: map[string]release.TestRun_Status{"PASSED: green lights everywhere": release.TestRun_SUCCESS},
fail: false, err: false,
}, },
{ {
name: "test failure", name: "test failure",
args: []string{"example-fail"}, args: []string{"example-fail"},
flags: []string{}, flags: []string{},
responses: map[string]release.TestRun_Status{"FAILURE: red lights everywhere": release.TestRun_FAILURE}, responses: map[string]release.TestRun_Status{"FAILURE: red lights everywhere": release.TestRun_FAILURE},
fail: true, err: true,
}, },
{ {
name: "test unknown", name: "test unknown",
args: []string{"example-unknown"}, args: []string{"example-unknown"},
flags: []string{}, flags: []string{},
responses: map[string]release.TestRun_Status{"UNKNOWN: yellow lights everywhere": release.TestRun_UNKNOWN}, responses: map[string]release.TestRun_Status{"UNKNOWN: yellow lights everywhere": release.TestRun_UNKNOWN},
fail: false, err: false,
}, },
{ {
name: "test error", name: "test error",
args: []string{"example-error"}, args: []string{"example-error"},
flags: []string{}, flags: []string{},
responses: map[string]release.TestRun_Status{"ERROR: yellow lights everywhere": release.TestRun_FAILURE}, responses: map[string]release.TestRun_Status{"ERROR: yellow lights everywhere": release.TestRun_FAILURE},
fail: true, err: true,
}, },
{ {
name: "test running", name: "test running",
args: []string{"example-running"}, args: []string{"example-running"},
flags: []string{}, flags: []string{},
responses: map[string]release.TestRun_Status{"RUNNING: things are happpeningggg": release.TestRun_RUNNING}, responses: map[string]release.TestRun_Status{"RUNNING: things are happpeningggg": release.TestRun_RUNNING},
fail: false, err: false,
}, },
{ {
name: "multiple tests example", name: "multiple tests example",
@ -78,29 +73,11 @@ func TestReleaseTesting(t *testing.T) {
"FAILURE: good thing u checked :)": release.TestRun_FAILURE, "FAILURE: good thing u checked :)": release.TestRun_FAILURE,
"RUNNING: things are happpeningggg yet again": release.TestRun_RUNNING, "RUNNING: things are happpeningggg yet again": release.TestRun_RUNNING,
"PASSED: feel free to party again": release.TestRun_SUCCESS}, "PASSED: feel free to party again": release.TestRun_SUCCESS},
fail: true, err: true,
}, },
} }
for _, tt := range tests { runReleaseCases(t, tests, func(c *helm.FakeClient, out io.Writer) *cobra.Command {
c := &helm.FakeClient{Responses: tt.responses} return newReleaseTestCmd(c, out)
})
buf := bytes.NewBuffer(nil)
cmd := newReleaseTestCmd(c, buf)
cmd.ParseFlags(tt.flags)
err := cmd.RunE(cmd, tt.args)
if err == nil && tt.fail {
t.Errorf("%q did not fail but should have failed", tt.name)
}
if err != nil {
if tt.fail {
continue
} else {
t.Errorf("%q reported error: %s", tt.name, err)
}
}
}
} }

Loading…
Cancel
Save