Skip to content

Commit 3a44c1b

Browse files
eddycharlykensipe
andauthored
refactor: use t.Cleanup instead of defer (#402)
Using `testing.T.Cleanup` instead of `defer` where appropriate Co-authored-by: Ken Sipe <[email protected]> Signed-off-by: Charles-Edouard Brétéché <[email protected]>
1 parent a9b9189 commit 3a44c1b

File tree

7 files changed

+45
-34
lines changed

7 files changed

+45
-34
lines changed

pkg/env/env_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ import (
99

1010
func TestExpandWithMap(t *testing.T) {
1111
os.Setenv("KUTTL_TEST_123", "hello")
12-
defer func() {
12+
t.Cleanup(func() {
1313
os.Unsetenv("KUTTL_TEST_123")
14-
}()
14+
})
1515
assert.Equal(t, "hello $ world", ExpandWithMap("$KUTTL_TEST_123 $$ $DOES_NOT_EXIST_1234 ${EXPAND_ME}", map[string]string{
1616
"EXPAND_ME": "world",
1717
}))

pkg/test/case.go

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ func (t *Case) DeleteNamespace(cl client.Client, ns *namespace) error {
8080
}
8181

8282
// CreateNamespace creates a namespace in Kubernetes to use for a test.
83-
func (t *Case) CreateNamespace(cl client.Client, ns *namespace) error {
83+
func (t *Case) CreateNamespace(test *testing.T, cl client.Client, ns *namespace) error {
8484
if !ns.AutoCreated {
8585
t.Logger.Log("Skipping creation of user-supplied namespace:", ns.Name)
8686
return nil
@@ -94,6 +94,14 @@ func (t *Case) CreateNamespace(cl client.Client, ns *namespace) error {
9494
defer cancel()
9595
}
9696

97+
if !t.SkipDelete {
98+
test.Cleanup(func() {
99+
if err := t.DeleteNamespace(cl, ns); err != nil {
100+
test.Error(err)
101+
}
102+
})
103+
}
104+
97105
return cl.Create(ctx, &corev1.Namespace{
98106
ObjectMeta: metav1.ObjectMeta{
99107
Name: ns.Name,
@@ -290,6 +298,17 @@ func shortString(obj *corev1.ObjectReference) string {
290298
fieldRef)
291299
}
292300

301+
func runStep(test *testing.T, testCase *Case, testStep *Step, ns *namespace) []error {
302+
if !testCase.SkipDelete {
303+
test.Cleanup(func() {
304+
if err := testStep.Clean(ns.Name); err != nil {
305+
test.Error(err)
306+
}
307+
})
308+
}
309+
return testStep.Run(ns.Name)
310+
}
311+
293312
// Run runs a test case including all of its steps.
294313
func (t *Case) Run(test *testing.T, tc *report.Testcase) {
295314
ns := t.determineNamespace()
@@ -317,22 +336,12 @@ func (t *Case) Run(test *testing.T, tc *report.Testcase) {
317336
}
318337

319338
for _, c := range clients {
320-
if err := t.CreateNamespace(c, ns); err != nil {
339+
if err := t.CreateNamespace(test, c, ns); err != nil {
321340
tc.Failure = report.NewFailure(err.Error(), nil)
322341
test.Fatal(err)
323342
}
324343
}
325344

326-
if !t.SkipDelete {
327-
defer func() {
328-
for _, c := range clients {
329-
if err := t.DeleteNamespace(c, ns); err != nil {
330-
test.Error(err)
331-
}
332-
}
333-
}()
334-
}
335-
336345
for _, testStep := range t.Steps {
337346
testStep.Client = t.Client
338347
if testStep.Kubeconfig != "" {
@@ -346,15 +355,7 @@ func (t *Case) Run(test *testing.T, tc *report.Testcase) {
346355
tc.Assertions += len(testStep.Asserts)
347356
tc.Assertions += len(testStep.Errors)
348357

349-
if !t.SkipDelete {
350-
defer func(step *Step) {
351-
if err := step.Clean(ns.Name); err != nil {
352-
test.Error(err)
353-
}
354-
}(testStep)
355-
}
356-
357-
if errs := testStep.Run(ns.Name); len(errs) > 0 {
358+
if errs := runStep(test, t, testStep, ns); len(errs) > 0 {
358359
caseErr := fmt.Errorf("failed in step %s", testStep.String())
359360
tc.Failure = report.NewFailure(caseErr.Error(), errs)
360361

pkg/test/case_integration_test.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,22 @@ func TestMultiClusterCase(t *testing.T) {
2121
t.Error(err)
2222
return
2323
}
24-
defer testenv.Environment.Stop()
24+
t.Cleanup(func() {
25+
if err := testenv.Environment.Stop(); err != nil {
26+
t.Error(err)
27+
}
28+
})
2529

2630
testenv2, err := testutils.StartTestEnvironment(testutils.APIServerDefaultArgs, false)
2731
if err != nil {
2832
t.Error(err)
2933
return
3034
}
31-
defer testenv2.Environment.Stop()
35+
t.Cleanup(func() {
36+
if err := testenv2.Environment.Stop(); err != nil {
37+
t.Error(err)
38+
}
39+
})
3240

3341
podSpec := map[string]interface{}{
3442
"restartPolicy": "Never",
@@ -45,7 +53,9 @@ func TestMultiClusterCase(t *testing.T) {
4553
t.Error(err)
4654
return
4755
}
48-
defer os.Remove(tmpfile.Name())
56+
t.Cleanup(func() {
57+
os.Remove(tmpfile.Name())
58+
})
4959
if err := testutils.Kubeconfig(testenv2.Config, tmpfile); err != nil {
5060
t.Error(err)
5161
return

pkg/test/harness.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ func (h *Harness) DockerClient() (testutils.DockerClient, error) {
351351
// tests at dir.
352352
func (h *Harness) RunTests() {
353353
// cleanup after running tests
354-
defer h.Stop()
354+
h.T.Cleanup(h.Stop)
355355
h.T.Log("running tests")
356356

357357
testDirs := h.testPreProcessing()

pkg/test/harness_integration_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ func TestRunBackgroundCommands(t *testing.T) {
6363
h.TestSuite.Commands = commands
6464

6565
h.Setup()
66-
defer h.Stop()
66+
t.Cleanup(h.Stop)
6767

6868
// setup creates bg processes
6969
assert.Equal(t, 1, len(h.bgProcesses))

pkg/test/kind_integration_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,11 @@ func TestAddContainers(t *testing.T) {
3636
t.Fatalf("failed to start KIND cluster: %v", err)
3737
}
3838

39-
defer func() {
39+
t.Cleanup(func() {
4040
if err := kind.Stop(); err != nil {
4141
t.Fatalf("failed to stop KIND cluster: %v", err)
4242
}
43-
}()
43+
})
4444

4545
docker, err := dockerClient.NewClientWithOpts(dockerClient.FromEnv)
4646
if err != nil {

pkg/test/step_integration_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -347,9 +347,9 @@ func TestCheckedTypeAssertions(t *testing.T) {
347347

348348
func TestApplyExpansion(t *testing.T) {
349349
os.Setenv("TEST_FOO", "test")
350-
defer func() {
350+
t.Cleanup(func() {
351351
os.Unsetenv("TEST_FOO")
352-
}()
352+
})
353353

354354
step := Step{Dir: "step_integration_test_data/assert_expand/"}
355355
path := "step_integration_test_data/assert_expand/00-step1.yaml"
@@ -361,9 +361,9 @@ func TestApplyExpansion(t *testing.T) {
361361

362362
func TestOverriddenKubeconfigPathResolution(t *testing.T) {
363363
os.Setenv("SUBPATH", "test")
364-
defer func() {
364+
t.Cleanup(func() {
365365
os.Unsetenv("SUBPATH")
366-
}()
366+
})
367367
stepRelativePath := &Step{Dir: "step_integration_test_data/kubeconfig_path_resolution/"}
368368
err := stepRelativePath.LoadYAML("step_integration_test_data/kubeconfig_path_resolution/00-step1.yaml")
369369
assert.NoError(t, err)

0 commit comments

Comments
 (0)