helmfile/pkg/helmexec/context_test.go

101 lines
2.3 KiB
Go

package helmexec
import (
"os"
"path/filepath"
"testing"
"github.com/Masterminds/semver/v3"
"github.com/stretchr/testify/require"
)
// TestGetTillerlessArgs tests the GetTillerlessArgs function
func TestGetTillerlessArgs(t *testing.T) {
helmBinary := "helm"
tests := []struct {
tillerless bool
helmMajorVersion string
tillerNamespace string
expected []string
}{
{
tillerless: true,
helmMajorVersion: "2.0.0",
expected: []string{"tiller", "run", "--", helmBinary},
},
{
tillerless: true,
helmMajorVersion: "2.0.0",
tillerNamespace: "test-namespace",
expected: []string{"tiller", "run", "test-namespace", "--", helmBinary},
},
{
tillerless: false,
helmMajorVersion: "2.0.0",
expected: []string{},
},
{
tillerless: true,
helmMajorVersion: "3.0.0",
expected: []string{},
},
}
for _, test := range tests {
hc := &HelmContext{
Tillerless: test.tillerless,
TillerNamespace: test.tillerNamespace,
}
sr, _ := semver.NewVersion(test.helmMajorVersion)
he := &execer{
helmBinary: helmBinary,
version: *sr,
}
require.Equalf(t, test.expected, hc.GetTillerlessArgs(he), "expected result %s, received result %s", test.expected, hc.GetTillerlessArgs(he))
}
}
func pwd() string {
pwd, _ := os.Getwd()
return pwd
}
// TestGetTillerlessEnv tests the getTillerlessEnv function
func TestGetTillerlessEnv(t *testing.T) {
kubeconfigEnv := "KUBECONFIG"
tests := []struct {
tillerless bool
kubeconfig string
expected map[string]string
}{
{
tillerless: true,
kubeconfig: "",
expected: map[string]string{"HELM_TILLER_SILENT": "true"},
},
{
tillerless: true,
kubeconfig: "abc",
expected: map[string]string{"HELM_TILLER_SILENT": "true", kubeconfigEnv: filepath.Join(pwd(), "abc")},
},
{
tillerless: true,
kubeconfig: "/path/to/kubeconfig",
expected: map[string]string{"HELM_TILLER_SILENT": "true", kubeconfigEnv: "/path/to/kubeconfig"},
},
{
tillerless: false,
expected: map[string]string{},
},
}
for _, test := range tests {
hc := &HelmContext{
Tillerless: test.tillerless,
}
t.Setenv(kubeconfigEnv, test.kubeconfig)
result := hc.getTillerlessEnv()
require.Equalf(t, test.expected, result, "expected result %s, received result %s", test.expected, result)
}
}