package state import ( "testing" "github.com/stretchr/testify/require" "github.com/helmfile/helmfile/pkg/helmexec" "github.com/helmfile/helmfile/pkg/testutil" ) func TestAppendCascadeFlags(t *testing.T) { type args struct { flags []string release *ReleaseSpec cascade string helm helmexec.Interface helmSpec HelmSpec expected []string } tests := []struct { name string args args }{ { name: "no cascade when helm less than 3.11.0", args: args{ flags: []string{}, release: &ReleaseSpec{}, cascade: "background", helm: testutil.NewVersionHelmExec("3.11.0"), expected: []string{}, }, }, { name: "cascade from release", args: args{ flags: []string{}, release: &ReleaseSpec{Cascade: &[]string{"background", "background"}[0]}, cascade: "", helm: testutil.NewVersionHelmExec("3.12.0"), expected: []string{"--cascade", "background"}, }, }, { name: "cascade from cmd flag", args: args{ flags: []string{}, release: &ReleaseSpec{}, cascade: "background", helm: testutil.NewVersionHelmExec("3.12.0"), expected: []string{"--cascade", "background"}, }, }, { name: "cascade from helm defaults", args: args{ flags: []string{}, release: &ReleaseSpec{}, helmSpec: HelmSpec{Cascade: &[]string{"background", "background"}[0]}, cascade: "", helm: testutil.NewVersionHelmExec("3.12.0"), expected: []string{"--cascade", "background"}, }, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { st := &HelmState{} st.HelmDefaults = tt.args.helmSpec got := st.appendCascadeFlags(tt.args.flags, tt.args.helm, tt.args.release, tt.args.cascade) require.Equalf(t, tt.args.expected, got, "appendCascadeFlags() = %v, want %v", got, tt.args.expected) }) } }