Skip to content

Commit 9373a9b

Browse files
Juneezeewtam2018
andauthored
test: use t.Setenv to set env vars (#482)
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 <[email protected]> Co-authored-by: William Tam <[email protected]>
1 parent b10480b commit 9373a9b

File tree

4 files changed

+17
-36
lines changed

4 files changed

+17
-36
lines changed

controllers/argocd/openshift/clusterconfig_test.go

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package openshift
22

33
import (
44
"fmt"
5-
"os"
5+
"testing"
66

77
"k8s.io/apimachinery/pkg/util/intstr"
88

@@ -56,12 +56,8 @@ func makeTestArgoCD() *argoapp.ArgoCD {
5656
return a
5757
}
5858

59-
func setClusterConfigNamespaces() {
60-
os.Setenv("ARGOCD_CLUSTER_CONFIG_NAMESPACES", "argocd,foo,bar")
61-
}
62-
63-
func unSetClusterConfigNamespaces() {
64-
os.Unsetenv("ARGOCD_CLUSTER_CONFIG_NAMESPACES")
59+
func setClusterConfigNamespaces(t *testing.T) {
60+
t.Setenv("ARGOCD_CLUSTER_CONFIG_NAMESPACES", "argocd,foo,bar")
6561
}
6662

6763
func makeTestClusterRole() *rbacv1.ClusterRole {

controllers/argocd/openshift/openshift_test.go

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ import (
1212

1313
func TestReconcileArgoCD_reconcileApplicableClusterRole(t *testing.T) {
1414

15-
setClusterConfigNamespaces()
16-
defer unSetClusterConfigNamespaces()
15+
setClusterConfigNamespaces(t)
1716

1817
a := makeTestArgoCDForClusterConfig()
1918
testClusterRole := &rbacv1.ClusterRole{
@@ -30,8 +29,7 @@ func TestReconcileArgoCD_reconcileApplicableClusterRole(t *testing.T) {
3029

3130
func TestReconcileArgoCD_reconcileNotApplicableClusterRole(t *testing.T) {
3231

33-
setClusterConfigNamespaces()
34-
defer unSetClusterConfigNamespaces()
32+
setClusterConfigNamespaces(t)
3533

3634
a := makeTestArgoCDForClusterConfig()
3735
testClusterRole := makeTestClusterRole()
@@ -42,8 +40,7 @@ func TestReconcileArgoCD_reconcileNotApplicableClusterRole(t *testing.T) {
4240

4341
func TestReconcileArgoCD_reconcileMultipleClusterRoles(t *testing.T) {
4442

45-
setClusterConfigNamespaces()
46-
defer unSetClusterConfigNamespaces()
43+
setClusterConfigNamespaces(t)
4744

4845
a := makeTestArgoCDForClusterConfig()
4946
testApplicableClusterRole := &rbacv1.ClusterRole{
@@ -66,8 +63,7 @@ func TestReconcileArgoCD_reconcileMultipleClusterRoles(t *testing.T) {
6663

6764
func TestReconcileArgoCD_testDeployment(t *testing.T) {
6865

69-
setClusterConfigNamespaces()
70-
defer unSetClusterConfigNamespaces()
66+
setClusterConfigNamespaces(t)
7167

7268
a := makeTestArgoCDForClusterConfig()
7369
testDeployment := makeTestDeployment()
@@ -77,8 +73,7 @@ func TestReconcileArgoCD_testDeployment(t *testing.T) {
7773

7874
func TestReconcileArgoCD_notInClusterConfigNamespaces(t *testing.T) {
7975

80-
setClusterConfigNamespaces()
81-
defer unSetClusterConfigNamespaces()
76+
setClusterConfigNamespaces(t)
8277

8378
a := makeTestArgoCD()
8479
testClusterRole := &rbacv1.ClusterRole{
@@ -193,8 +188,7 @@ func TestReconcileArgoCD_reconcileRedisHaServerStatefulSet(t *testing.T) {
193188
}
194189

195190
func TestReconcileArgoCD_reconcileSecrets(t *testing.T) {
196-
setClusterConfigNamespaces()
197-
defer unSetClusterConfigNamespaces()
191+
setClusterConfigNamespaces(t)
198192

199193
a := makeTestArgoCDForClusterConfig()
200194
testSecret := &corev1.Secret{

controllers/argocd_controller_test.go

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ package controllers
1919
import (
2020
"context"
2121
"net/url"
22-
"os"
2322
"testing"
2423

2524
"github.com/argoproj-labs/argocd-operator/controllers/argocd"
@@ -77,33 +76,30 @@ func TestReconcile_create_consolelink(t *testing.T) {
7776
func TestReconcile_delete_consolelink(t *testing.T) {
7877
logf.SetLogger(argocd.ZapLogger(true))
7978

80-
restoreEnvFunc := func() {
81-
os.Unsetenv(disableArgoCDConsoleLink)
82-
}
8379
defer util.SetConsoleAPIFound(util.IsConsoleAPIFound())
8480
util.SetConsoleAPIFound(true)
8581

8682
tests := []struct {
8783
name string
88-
setEnvVarFunc func(string)
84+
setEnvVarFunc func(*testing.T, string)
8985
envVar string
9086
consoleLinkShouldExist bool
9187
wantErr bool
9288
Err error
9389
}{
9490
{
9591
name: "DISABLE_DEFAULT_ARGOCD_CONSOLELINK is set to true and consoleLink gets deleted",
96-
setEnvVarFunc: func(envVar string) {
97-
os.Setenv(disableArgoCDConsoleLink, envVar)
92+
setEnvVarFunc: func(t *testing.T, envVar string) {
93+
t.Setenv(disableArgoCDConsoleLink, envVar)
9894
},
9995
consoleLinkShouldExist: false,
10096
envVar: "true",
10197
wantErr: false,
10298
},
10399
{
104100
name: "DISABLE_DEFAULT_ARGOCD_CONSOLELINK is set to false and consoleLink doesn't get deleted",
105-
setEnvVarFunc: func(envVar string) {
106-
os.Setenv(disableArgoCDConsoleLink, envVar)
101+
setEnvVarFunc: func(t *testing.T, envVar string) {
102+
t.Setenv(disableArgoCDConsoleLink, envVar)
107103
},
108104
envVar: "false",
109105
consoleLinkShouldExist: true,
@@ -120,14 +116,12 @@ func TestReconcile_delete_consolelink(t *testing.T) {
120116

121117
for _, test := range tests {
122118
t.Run(test.name, func(t *testing.T) {
123-
defer restoreEnvFunc()
124-
125119
reconcileArgoCD, fakeClient := newFakeReconcileArgoCD(argoCDRoute, consoleLink)
126120
consoleLink := newConsoleLink("https://test.com", "Cluster Argo CD")
127121
fakeClient.Create(context.TODO(), consoleLink)
128122

129123
if test.setEnvVarFunc != nil {
130-
test.setEnvVarFunc(test.envVar)
124+
test.setEnvVarFunc(t, test.envVar)
131125
}
132126

133127
result, err := reconcileArgoCD.Reconcile(context.TODO(), newRequest(argocdNS, argocdInstanceName))

controllers/gitopsservice_controller_test.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ package controllers
1919
import (
2020
"context"
2121
"fmt"
22-
"os"
2322
"testing"
2423

2524
argoapp "github.com/argoproj-labs/argocd-operator/api/v1beta1"
@@ -54,8 +53,7 @@ func TestImageFromEnvVariable(t *testing.T) {
5453
ns := types.NamespacedName{Name: "test", Namespace: "test"}
5554
t.Run("Image present as env variable", func(t *testing.T) {
5655
image := "quay.io/org/test"
57-
os.Setenv(backendImageEnvName, image)
58-
defer os.Unsetenv(backendImageEnvName)
56+
t.Setenv(backendImageEnvName, image)
5957

6058
deployment := newBackendDeployment(ns)
6159

@@ -75,8 +73,7 @@ func TestImageFromEnvVariable(t *testing.T) {
7573

7674
t.Run("Kam Image present as env variable", func(t *testing.T) {
7775
image := "quay.io/org/test"
78-
os.Setenv(cliImageEnvName, image)
79-
defer os.Unsetenv(cliImageEnvName)
76+
t.Setenv(cliImageEnvName, image)
8077

8178
deployment := newDeploymentForCLI()
8279

0 commit comments

Comments
 (0)