105 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			2.4 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,
 | 
						|
		}
 | 
						|
		os.Setenv(kubeconfigEnv, test.kubeconfig)
 | 
						|
		result := hc.getTillerlessEnv()
 | 
						|
		require.Equalf(t, test.expected, result, "expected result %s, received result %s", test.expected, result)
 | 
						|
 | 
						|
	}
 | 
						|
	defer os.Unsetenv(kubeconfigEnv)
 | 
						|
 | 
						|
}
 |