test: use T.TempDir to create temporary test directory

This commit replaces `ioutil.TempDir` with `t.TempDir` in tests. The
directory created by `t.TempDir` is automatically removed when the test
and all its subtests complete.

Prior to this commit, temporary directory created using `ioutil.TempDir`
needs to be removed manually by calling `os.RemoveAll`, which is omitted
in some tests. The error handling boilerplate e.g.
	defer func() {
		if err := os.RemoveAll(dir); err != nil {
			t.Fatal(err)
		}
	}
is also tedious, but `t.TempDir` handles this for us nicely.

Reference: https://pkg.go.dev/testing#T.TempDir
Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
This commit is contained in:
Eng Zer Jun
2022-05-05 21:09:41 +08:00
parent b1e9ea38e5
commit cf35168f0a
8 changed files with 27 additions and 100 deletions

View File

@ -4,8 +4,6 @@
package libpod package libpod
import ( import (
"io/ioutil"
"os"
"testing" "testing"
spec "github.com/opencontainers/runtime-spec/specs-go" spec "github.com/opencontainers/runtime-spec/specs-go"
@ -13,12 +11,6 @@ import (
) )
func TestGenerateUserPasswdEntry(t *testing.T) { func TestGenerateUserPasswdEntry(t *testing.T) {
dir, err := ioutil.TempDir("", "libpod_test_")
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(dir)
c := Container{ c := Container{
config: &ContainerConfig{ config: &ContainerConfig{
Spec: &spec.Spec{}, Spec: &spec.Spec{},

View File

@ -19,11 +19,7 @@ var hookPath string
func TestPostDeleteHooks(t *testing.T) { func TestPostDeleteHooks(t *testing.T) {
ctx := context.Background() ctx := context.Background()
dir, err := ioutil.TempDir("", "libpod_test_") dir := t.TempDir()
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(dir)
statePath := filepath.Join(dir, "state") statePath := filepath.Join(dir, "state")
copyPath := filepath.Join(dir, "copy") copyPath := filepath.Join(dir, "copy")
@ -57,7 +53,7 @@ func TestPostDeleteHooks(t *testing.T) {
}, },
}, },
} }
err = c.postDeleteHooks(ctx) err := c.postDeleteHooks(ctx)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@ -2,7 +2,6 @@ package file
import ( import (
"fmt" "fmt"
"io/ioutil"
"os" "os"
"os/exec" "os/exec"
"path/filepath" "path/filepath"
@ -13,11 +12,9 @@ import (
// Test that creating and destroying locks work // Test that creating and destroying locks work
func TestCreateAndDeallocate(t *testing.T) { func TestCreateAndDeallocate(t *testing.T) {
d, err := ioutil.TempDir("", "filelock") d := t.TempDir()
assert.NoError(t, err)
defer os.RemoveAll(d)
_, err = OpenFileLock(filepath.Join(d, "locks")) _, err := OpenFileLock(filepath.Join(d, "locks"))
assert.Error(t, err) assert.Error(t, err)
l, err := CreateFileLock(filepath.Join(d, "locks")) l, err := CreateFileLock(filepath.Join(d, "locks"))
@ -47,9 +44,7 @@ func TestCreateAndDeallocate(t *testing.T) {
// Test that creating and destroying locks work // Test that creating and destroying locks work
func TestLockAndUnlock(t *testing.T) { func TestLockAndUnlock(t *testing.T) {
d, err := ioutil.TempDir("", "filelock") d := t.TempDir()
assert.NoError(t, err)
defer os.RemoveAll(d)
l, err := CreateFileLock(filepath.Join(d, "locks")) l, err := CreateFileLock(filepath.Join(d, "locks"))
assert.NoError(t, err) assert.NoError(t, err)

View File

@ -4,7 +4,6 @@ import (
"context" "context"
"fmt" "fmt"
"io/ioutil" "io/ioutil"
"os"
"path/filepath" "path/filepath"
"runtime" "runtime"
"testing" "testing"
@ -20,11 +19,7 @@ var path string
func TestGoodNew(t *testing.T) { func TestGoodNew(t *testing.T) {
ctx := context.Background() ctx := context.Background()
dir, err := ioutil.TempDir("", "hooks-test-") dir := t.TempDir()
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(dir)
for i, name := range []string{ for i, name := range []string{
"01-my-hook.json", "01-my-hook.json",
@ -36,7 +31,7 @@ func TestGoodNew(t *testing.T) {
if i == 0 { if i == 0 {
extraStages = ", \"poststart\", \"poststop\"" extraStages = ", \"poststart\", \"poststop\""
} }
err = ioutil.WriteFile(jsonPath, []byte(fmt.Sprintf("{\"version\": \"1.0.0\", \"hook\": {\"path\": \"%s\", \"timeout\": %d}, \"when\": {\"always\": true}, \"stages\": [\"prestart\"%s]}", path, i+1, extraStages)), 0644) err := ioutil.WriteFile(jsonPath, []byte(fmt.Sprintf("{\"version\": \"1.0.0\", \"hook\": {\"path\": \"%s\", \"timeout\": %d}, \"when\": {\"always\": true}, \"stages\": [\"prestart\"%s]}", path, i+1, extraStages)), 0644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -92,14 +87,10 @@ func TestGoodNew(t *testing.T) {
func TestBadNew(t *testing.T) { func TestBadNew(t *testing.T) {
ctx := context.Background() ctx := context.Background()
dir, err := ioutil.TempDir("", "hooks-test-") dir := t.TempDir()
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(dir)
jsonPath := filepath.Join(dir, "a.json") jsonPath := filepath.Join(dir, "a.json")
err = ioutil.WriteFile(jsonPath, []byte("{\"version\": \"-1\"}"), 0644) err := ioutil.WriteFile(jsonPath, []byte("{\"version\": \"-1\"}"), 0644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@ -15,11 +15,7 @@ import (
func TestMonitorOneDirGood(t *testing.T) { func TestMonitorOneDirGood(t *testing.T) {
ctx, cancel := context.WithCancel(context.Background()) ctx, cancel := context.WithCancel(context.Background())
dir, err := ioutil.TempDir("", "hooks-test-") dir := t.TempDir()
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(dir)
manager, err := New(ctx, []string{dir}, []string{}) manager, err := New(ctx, []string{dir}, []string{})
if err != nil { if err != nil {
@ -114,17 +110,8 @@ func TestMonitorOneDirGood(t *testing.T) {
func TestMonitorTwoDirGood(t *testing.T) { func TestMonitorTwoDirGood(t *testing.T) {
ctx, cancel := context.WithCancel(context.Background()) ctx, cancel := context.WithCancel(context.Background())
primaryDir, err := ioutil.TempDir("", "hooks-test-primary-") primaryDir := t.TempDir()
if err != nil { fallbackDir := t.TempDir()
t.Fatal(err)
}
defer os.RemoveAll(primaryDir)
fallbackDir, err := ioutil.TempDir("", "hooks-test-fallback-")
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(fallbackDir)
manager, err := New(ctx, []string{fallbackDir, primaryDir}, []string{}) manager, err := New(ctx, []string{fallbackDir, primaryDir}, []string{})
if err != nil { if err != nil {

View File

@ -29,14 +29,10 @@ func TestUnknownPath(t *testing.T) {
} }
func TestGoodFile(t *testing.T) { func TestGoodFile(t *testing.T) {
dir, err := ioutil.TempDir("", "hooks-test-") dir := t.TempDir()
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(dir)
jsonPath := filepath.Join(dir, "hook.json") jsonPath := filepath.Join(dir, "hook.json")
err = ioutil.WriteFile(jsonPath, []byte(fmt.Sprintf("{\"version\": \"1.0.0\", \"hook\": {\"path\": \"%s\"}, \"when\": {\"always\": true}, \"stages\": [\"prestart\"]}", path)), 0644) err := ioutil.WriteFile(jsonPath, []byte(fmt.Sprintf("{\"version\": \"1.0.0\", \"hook\": {\"path\": \"%s\"}, \"when\": {\"always\": true}, \"stages\": [\"prestart\"]}", path)), 0644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -59,14 +55,10 @@ func TestGoodFile(t *testing.T) {
} }
func TestBadFile(t *testing.T) { func TestBadFile(t *testing.T) {
dir, err := ioutil.TempDir("", "hooks-test-") dir := t.TempDir()
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(dir)
path := filepath.Join(dir, "hook.json") path := filepath.Join(dir, "hook.json")
err = ioutil.WriteFile(path, []byte("{\"version\": \"1.0.0\", \"hook\": \"not-a-string\"}"), 0644) err := ioutil.WriteFile(path, []byte("{\"version\": \"1.0.0\", \"hook\": \"not-a-string\"}"), 0644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -121,13 +113,9 @@ func TestInvalidCurrentJSON(t *testing.T) {
} }
func TestGoodDir(t *testing.T) { func TestGoodDir(t *testing.T) {
dir, err := ioutil.TempDir("", "hooks-test-") dir := t.TempDir()
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(dir)
err = ioutil.WriteFile(filepath.Join(dir, "README"), []byte("not a hook"), 0644) err := ioutil.WriteFile(filepath.Join(dir, "README"), []byte("not a hook"), 0644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -172,14 +160,10 @@ func TestUnknownDir(t *testing.T) {
} }
func TestBadDir(t *testing.T) { func TestBadDir(t *testing.T) {
dir, err := ioutil.TempDir("", "hooks-test-") dir := t.TempDir()
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(dir)
jsonPath := filepath.Join(dir, "a.json") jsonPath := filepath.Join(dir, "a.json")
err = ioutil.WriteFile(jsonPath, []byte("{\"version\": \"-1\"}"), 0644) err := ioutil.WriteFile(jsonPath, []byte("{\"version\": \"-1\"}"), 0644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -193,14 +177,10 @@ func TestBadDir(t *testing.T) {
} }
func TestHookExecutableDoesNotExit(t *testing.T) { func TestHookExecutableDoesNotExit(t *testing.T) {
dir, err := ioutil.TempDir("", "hooks-test-") dir := t.TempDir()
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(dir)
jsonPath := filepath.Join(dir, "hook.json") jsonPath := filepath.Join(dir, "hook.json")
err = ioutil.WriteFile(jsonPath, []byte("{\"version\": \"1.0.0\", \"hook\": {\"path\": \"/does/not/exist\"}, \"when\": {\"always\": true}, \"stages\": [\"prestart\"]}"), 0644) err := ioutil.WriteFile(jsonPath, []byte("{\"version\": \"1.0.0\", \"hook\": {\"path\": \"/does/not/exist\"}, \"when\": {\"always\": true}, \"stages\": [\"prestart\"]}"), 0644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@ -52,23 +52,15 @@ func TestMachineFile_GetPath(t *testing.T) {
func TestNewMachineFile(t *testing.T) { func TestNewMachineFile(t *testing.T) {
empty := "" empty := ""
homedir, err := os.MkdirTemp("/tmp", "homedir") homedir := t.TempDir()
if err != nil { longTemp := t.TempDir()
panic(err)
}
defer os.RemoveAll(homedir)
longTemp, err := os.MkdirTemp("/tmp", "tmpdir")
if err != nil {
panic(err)
}
defer os.RemoveAll(longTemp)
oldhome := os.Getenv("HOME") oldhome := os.Getenv("HOME")
os.Setenv("HOME", homedir) //nolint: tenv os.Setenv("HOME", homedir) //nolint: tenv
defer os.Setenv("HOME", oldhome) defer os.Setenv("HOME", oldhome)
p := "/var/tmp/podman/my.sock" p := "/var/tmp/podman/my.sock"
longp := filepath.Join(longTemp, utils.RandomString(100), "my.sock") longp := filepath.Join(longTemp, utils.RandomString(100), "my.sock")
err = os.MkdirAll(filepath.Dir(longp), 0755) err := os.MkdirAll(filepath.Dir(longp), 0755)
if err != nil { if err != nil {
panic(err) panic(err)
} }

View File

@ -3,9 +3,7 @@ package kube
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"io/ioutil"
"math" "math"
"os"
"runtime" "runtime"
"strconv" "strconv"
"testing" "testing"
@ -39,9 +37,7 @@ func createSecrets(t *testing.T, d string) *secrets.SecretsManager {
} }
func TestEnvVarsFrom(t *testing.T) { func TestEnvVarsFrom(t *testing.T) {
d, err := ioutil.TempDir("", "secrets") d := t.TempDir()
assert.NoError(t, err)
defer os.RemoveAll(d)
secretsManager := createSecrets(t, d) secretsManager := createSecrets(t, d)
tests := []struct { tests := []struct {
@ -191,9 +187,7 @@ func TestEnvVarsFrom(t *testing.T) {
} }
func TestEnvVarValue(t *testing.T) { func TestEnvVarValue(t *testing.T) {
d, err := ioutil.TempDir("", "secrets") d := t.TempDir()
assert.NoError(t, err)
defer os.RemoveAll(d)
secretsManager := createSecrets(t, d) secretsManager := createSecrets(t, d)
stringNumCPUs := strconv.Itoa(runtime.NumCPU()) stringNumCPUs := strconv.Itoa(runtime.NumCPU())