test: use `T.Setenv` to set env vars in tests (#189)
This commit replaces `os.Setenv` with `t.Setenv` in tests. The environment variable is automatically restored to its original value when the test and all its subtests complete. Reference: https://pkg.go.dev/testing#T.Setenv Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
This commit is contained in:
parent
a5b7c2b08d
commit
ce3b81e2a1
|
|
@ -637,8 +637,7 @@ releases:
|
||||||
{label: "name=doesnotexists", expectedReleases: []string{"zipkin", "prometheus", "grafana", "bar", "bar", "grafana", "postgresql"}, expectErr: false},
|
{label: "name=doesnotexists", expectedReleases: []string{"zipkin", "prometheus", "grafana", "bar", "bar", "grafana", "postgresql"}, expectErr: false},
|
||||||
}
|
}
|
||||||
|
|
||||||
os.Setenv(envvar.Experimental, ExperimentalSelectorExplicit)
|
t.Setenv(envvar.Experimental, ExperimentalSelectorExplicit)
|
||||||
defer os.Unsetenv(envvar.Experimental)
|
|
||||||
|
|
||||||
runFilterSubHelmFilesTests(desiredTestcases, files, t, "2nd EmbeddedSelectors")
|
runFilterSubHelmFilesTests(desiredTestcases, files, t, "2nd EmbeddedSelectors")
|
||||||
|
|
||||||
|
|
@ -687,8 +686,7 @@ releases:
|
||||||
{label: "name!=grafana", expectedReleases: []string{"grafana", "zipkin", "mongodb"}, expectErr: false},
|
{label: "name!=grafana", expectedReleases: []string{"grafana", "zipkin", "mongodb"}, expectErr: false},
|
||||||
}
|
}
|
||||||
|
|
||||||
os.Setenv(envvar.Experimental, ExperimentalSelectorExplicit)
|
t.Setenv(envvar.Experimental, ExperimentalSelectorExplicit)
|
||||||
defer os.Unsetenv(envvar.Experimental)
|
|
||||||
|
|
||||||
runFilterSubHelmFilesTests(desiredTestcases, files, t, "2nd 3leveldeep")
|
runFilterSubHelmFilesTests(desiredTestcases, files, t, "2nd 3leveldeep")
|
||||||
|
|
||||||
|
|
@ -749,8 +747,7 @@ releases:
|
||||||
{label: "select!=foo", expectedReleases: []string{"grafana", "prometheus", "zipkin", "prometheus", "zipkin", "mongodb"}, expectErr: false},
|
{label: "select!=foo", expectedReleases: []string{"grafana", "prometheus", "zipkin", "prometheus", "zipkin", "mongodb"}, expectErr: false},
|
||||||
}
|
}
|
||||||
|
|
||||||
os.Setenv(envvar.Experimental, ExperimentalSelectorExplicit)
|
t.Setenv(envvar.Experimental, ExperimentalSelectorExplicit)
|
||||||
defer os.Unsetenv(envvar.Experimental)
|
|
||||||
|
|
||||||
runFilterSubHelmFilesTests(desiredTestcases, files, t, "2nd inherits")
|
runFilterSubHelmFilesTests(desiredTestcases, files, t, "2nd inherits")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,23 +16,20 @@ func TestIsExplicitSelectorInheritanceEnabled(t *testing.T) {
|
||||||
require.False(t, isExplicitSelectorInheritanceEnabled())
|
require.False(t, isExplicitSelectorInheritanceEnabled())
|
||||||
|
|
||||||
//check for env var ExperimentalEnvVar set to true
|
//check for env var ExperimentalEnvVar set to true
|
||||||
os.Setenv(envvar.Experimental, "true")
|
t.Setenv(envvar.Experimental, "true")
|
||||||
require.True(t, isExplicitSelectorInheritanceEnabled())
|
require.True(t, isExplicitSelectorInheritanceEnabled())
|
||||||
|
|
||||||
//check for env var ExperimentalEnvVar set to anything
|
//check for env var ExperimentalEnvVar set to anything
|
||||||
os.Setenv(envvar.Experimental, "anything")
|
t.Setenv(envvar.Experimental, "anything")
|
||||||
require.False(t, isExplicitSelectorInheritanceEnabled())
|
require.False(t, isExplicitSelectorInheritanceEnabled())
|
||||||
|
|
||||||
//check for env var ExperimentalEnvVar set to ExperimentalSelectorExplicit
|
//check for env var ExperimentalEnvVar set to ExperimentalSelectorExplicit
|
||||||
os.Setenv(envvar.Experimental, ExperimentalSelectorExplicit)
|
t.Setenv(envvar.Experimental, ExperimentalSelectorExplicit)
|
||||||
require.True(t, isExplicitSelectorInheritanceEnabled())
|
require.True(t, isExplicitSelectorInheritanceEnabled())
|
||||||
|
|
||||||
// check for env var ExperimentalEnvVar set to a string that contains ExperimentalSelectorExplicit and ExperimentalEnvVar set to true
|
// check for env var ExperimentalEnvVar set to a string that contains ExperimentalSelectorExplicit and ExperimentalEnvVar set to true
|
||||||
os.Setenv(envvar.Experimental, fmt.Sprintf("%s-%s-%s", "a", ExperimentalSelectorExplicit, "b"))
|
t.Setenv(envvar.Experimental, fmt.Sprintf("%s-%s-%s", "a", ExperimentalSelectorExplicit, "b"))
|
||||||
require.True(t, isExplicitSelectorInheritanceEnabled())
|
require.True(t, isExplicitSelectorInheritanceEnabled())
|
||||||
|
|
||||||
// reset env var
|
|
||||||
defer os.Unsetenv(envvar.Experimental)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TestExperimentalModeEnabled tests the experimentalModeEnabled function
|
// TestExperimentalModeEnabled tests the experimentalModeEnabled function
|
||||||
|
|
@ -42,13 +39,10 @@ func TestExperimentalModeEnabled(t *testing.T) {
|
||||||
require.False(t, experimentalModeEnabled())
|
require.False(t, experimentalModeEnabled())
|
||||||
|
|
||||||
//check for env var ExperimentalEnvVar set to anything
|
//check for env var ExperimentalEnvVar set to anything
|
||||||
os.Setenv(envvar.Experimental, "anything")
|
t.Setenv(envvar.Experimental, "anything")
|
||||||
require.False(t, experimentalModeEnabled())
|
require.False(t, experimentalModeEnabled())
|
||||||
|
|
||||||
//check for env var ExperimentalEnvVar set to true
|
//check for env var ExperimentalEnvVar set to true
|
||||||
os.Setenv(envvar.Experimental, "true")
|
t.Setenv(envvar.Experimental, "true")
|
||||||
require.True(t, experimentalModeEnabled())
|
require.True(t, experimentalModeEnabled())
|
||||||
|
|
||||||
// reset env var
|
|
||||||
defer os.Unsetenv(envvar.Experimental)
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -94,11 +94,9 @@ func TestGetTillerlessEnv(t *testing.T) {
|
||||||
hc := &HelmContext{
|
hc := &HelmContext{
|
||||||
Tillerless: test.tillerless,
|
Tillerless: test.tillerless,
|
||||||
}
|
}
|
||||||
os.Setenv(kubeconfigEnv, test.kubeconfig)
|
t.Setenv(kubeconfigEnv, test.kubeconfig)
|
||||||
result := hc.getTillerlessEnv()
|
result := hc.getTillerlessEnv()
|
||||||
require.Equalf(t, test.expected, result, "expected result %s, received result %s", test.expected, result)
|
require.Equalf(t, test.expected, result, "expected result %s, received result %s", test.expected, result)
|
||||||
|
|
||||||
}
|
}
|
||||||
defer os.Unsetenv(kubeconfigEnv)
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -736,14 +736,13 @@ func Test_getTillerlessEnv(t *testing.T) {
|
||||||
t.Errorf("getTillerlessEnv() KUBECONFIG\nactual = %s\nexpect = nil", val)
|
t.Errorf("getTillerlessEnv() KUBECONFIG\nactual = %s\nexpect = nil", val)
|
||||||
}
|
}
|
||||||
|
|
||||||
os.Setenv("KUBECONFIG", "toto")
|
t.Setenv("KUBECONFIG", "toto")
|
||||||
actual = context.getTillerlessEnv()
|
actual = context.getTillerlessEnv()
|
||||||
cwd, _ := os.Getwd()
|
cwd, _ := os.Getwd()
|
||||||
expected := path.Join(cwd, "toto")
|
expected := path.Join(cwd, "toto")
|
||||||
if val, found := actual["KUBECONFIG"]; !found || val != expected {
|
if val, found := actual["KUBECONFIG"]; !found || val != expected {
|
||||||
t.Errorf("getTillerlessEnv() KUBECONFIG\nactual = %s\nexpect = %s", val, expected)
|
t.Errorf("getTillerlessEnv() KUBECONFIG\nactual = %s\nexpect = %s", val, expected)
|
||||||
}
|
}
|
||||||
os.Unsetenv("KUBECONFIG")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func Test_mergeEnv(t *testing.T) {
|
func Test_mergeEnv(t *testing.T) {
|
||||||
|
|
@ -795,13 +794,12 @@ func Test_IsHelm3(t *testing.T) {
|
||||||
t.Error("helmexec.IsHelm3() - Failed to detect Helm 3")
|
t.Error("helmexec.IsHelm3() - Failed to detect Helm 3")
|
||||||
}
|
}
|
||||||
|
|
||||||
os.Setenv(envvar.Helm3, "1")
|
t.Setenv(envvar.Helm3, "1")
|
||||||
helm2Runner = mockRunner{output: []byte("Client: v2.16.0+ge13bc94\n")}
|
helm2Runner = mockRunner{output: []byte("Client: v2.16.0+ge13bc94\n")}
|
||||||
helm = New("helm", NewLogger(os.Stdout, "info"), "dev", &helm2Runner)
|
helm = New("helm", NewLogger(os.Stdout, "info"), "dev", &helm2Runner)
|
||||||
if !helm.IsHelm3() {
|
if !helm.IsHelm3() {
|
||||||
t.Errorf("helmexec.IsHelm3() - Helm3 not detected when %s is set", envvar.Helm3)
|
t.Errorf("helmexec.IsHelm3() - Helm3 not detected when %s is set", envvar.Helm3)
|
||||||
}
|
}
|
||||||
os.Setenv(envvar.Helm3, "")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func Test_GetVersion(t *testing.T) {
|
func Test_GetVersion(t *testing.T) {
|
||||||
|
|
|
||||||
|
|
@ -987,10 +987,7 @@ func TestHelmState_SyncRepos(t *testing.T) {
|
||||||
tt := tests[i]
|
tt := tests[i]
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
for k, v := range tt.envs {
|
for k, v := range tt.envs {
|
||||||
err := os.Setenv(k, v)
|
t.Setenv(k, v)
|
||||||
if err != nil {
|
|
||||||
t.Error("HelmState.SyncRepos() could not set env var for testing")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
state := &HelmState{
|
state := &HelmState{
|
||||||
ReleaseSetSpec: ReleaseSetSpec{
|
ReleaseSetSpec: ReleaseSetSpec{
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ package tmpl
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
@ -286,7 +285,7 @@ func TestRequiredEnv(t *testing.T) {
|
||||||
require.Emptyf(t, envVal, "Expected empty string to be returned when environment variable %s is not set", envKey)
|
require.Emptyf(t, envVal, "Expected empty string to be returned when environment variable %s is not set", envKey)
|
||||||
|
|
||||||
// test that the environment variable is set to an empty string
|
// test that the environment variable is set to an empty string
|
||||||
os.Setenv(envKey, "")
|
t.Setenv(envKey, "")
|
||||||
envVal, err = RequiredEnv(envKey)
|
envVal, err = RequiredEnv(envKey)
|
||||||
|
|
||||||
require.NotNilf(t, err, "Expected error to be returned when environment variable %s is set to an empty string", envKey)
|
require.NotNilf(t, err, "Expected error to be returned when environment variable %s is set to an empty string", envKey)
|
||||||
|
|
@ -294,10 +293,8 @@ func TestRequiredEnv(t *testing.T) {
|
||||||
|
|
||||||
// test that the environment variable is set to a non-empty string
|
// test that the environment variable is set to a non-empty string
|
||||||
expected := "helmfile"
|
expected := "helmfile"
|
||||||
os.Setenv(envKey, expected)
|
t.Setenv(envKey, expected)
|
||||||
|
|
||||||
// Unset the environment variable
|
|
||||||
defer os.Unsetenv(envKey)
|
|
||||||
envVal, err = RequiredEnv(envKey)
|
envVal, err = RequiredEnv(envKey)
|
||||||
require.Nilf(t, err, "Expected no error to be returned when environment variable %s is set to a non-empty string", envKey)
|
require.Nilf(t, err, "Expected no error to be returned when environment variable %s is set to a non-empty string", envKey)
|
||||||
require.Equalf(t, expected, envVal, "Expected %s to be returned when environment variable %s is set to a non-empty string", expected, envKey)
|
require.Equalf(t, expected, envVal, "Expected %s to be returned when environment variable %s is set to a non-empty string", expected, envKey)
|
||||||
|
|
@ -348,8 +345,7 @@ func TestEnvExec(t *testing.T) {
|
||||||
require.Emptyf(t, output, "Expected empty string to be returned when executing command with no environment variables")
|
require.Emptyf(t, output, "Expected empty string to be returned when executing command with no environment variables")
|
||||||
|
|
||||||
// test that the command is executed with os environment variables
|
// test that the command is executed with os environment variables
|
||||||
os.Setenv(testKey, "foo")
|
t.Setenv(testKey, "foo")
|
||||||
defer os.Unsetenv(testKey)
|
|
||||||
output, err = ctx.EnvExec(nil, "bash", []interface{}{"-c", fmt.Sprintf("echo -n $%s", testKey)}, "")
|
output, err = ctx.EnvExec(nil, "bash", []interface{}{"-c", fmt.Sprintf("echo -n $%s", testKey)}, "")
|
||||||
|
|
||||||
require.Nilf(t, err, "Expected no error to be returned when executing command with environment variables")
|
require.Nilf(t, err, "Expected no error to be returned when executing command with environment variables")
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ package tmpl
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
|
||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
@ -234,10 +233,7 @@ func Test_renderTemplateToString(t *testing.T) {
|
||||||
tt := tests[i]
|
tt := tests[i]
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
for k, v := range tt.args.envs {
|
for k, v := range tt.args.envs {
|
||||||
err := os.Setenv(k, v)
|
t.Setenv(k, v)
|
||||||
if err != nil {
|
|
||||||
t.Error("renderTemplateToString() could not set env var for testing")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
got, err := renderTemplateToString(tt.args.s, tt.args.data)
|
got, err := renderTemplateToString(tt.args.s, tt.args.data)
|
||||||
if (err != nil) != tt.wantErr {
|
if (err != nil) != tt.wantErr {
|
||||||
|
|
|
||||||
|
|
@ -26,16 +26,9 @@ type tmplTestCase struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// setEnvs sets the environment variables for the test case
|
// setEnvs sets the environment variables for the test case
|
||||||
func (t *tmplTestCase) setEnvs() {
|
func (t *tmplTestCase) setEnvs(tt *testing.T) {
|
||||||
for k, v := range t.envs {
|
for k, v := range t.envs {
|
||||||
os.Setenv(k, v)
|
tt.Setenv(k, v)
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// unSetEnvs unsets the environment variables for the test case
|
|
||||||
func (t *tmplTestCase) unSetEnvs() {
|
|
||||||
for k := range t.envs {
|
|
||||||
os.Unsetenv(k)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -235,8 +228,7 @@ func TestTmplStrings(t *testing.T) {
|
||||||
|
|
||||||
for _, tc := range tmplE2eTest.tcs {
|
for _, tc := range tmplE2eTest.tcs {
|
||||||
t.Run(tc.name, func(t *testing.T) {
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
tc.setEnvs()
|
tc.setEnvs(t)
|
||||||
defer tc.unSetEnvs()
|
|
||||||
tmpl, err := tmpl.Parse(tc.tmplString)
|
tmpl, err := tmpl.Parse(tc.tmplString)
|
||||||
require.Nilf(t, err, "error parsing template: %v", err)
|
require.Nilf(t, err, "error parsing template: %v", err)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue