Skip to content

Commit 0e97d69

Browse files
kolyshkingopherbot
authored andcommitted
all: use t.TempDir in tests
This removes all usage of ioutil.TempDir in tests (and a few cases of os.TempDir as well, while we're at it), which simplifies test cleanup a lot. Compile tested (go test -c) for most platforms (except zos). Change-Id: I9178f5ec615c0a6cfef36e8de78c6b72e055b7cb Reviewed-on: https://go-review.googlesource.com/c/sys/+/526297 Reviewed-by: Tobias Klauser <[email protected]> Reviewed-by: Cherry Mui <[email protected]> LUCI-TryBot-Result: Go LUCI <[email protected]> Reviewed-by: Ian Lance Taylor <[email protected]> Reviewed-by: qiulaidongfeng <[email protected]> Auto-Submit: Ian Lance Taylor <[email protected]>
1 parent 0514fec commit 0e97d69

12 files changed

+35
-178
lines changed

execabs/execabs_test.go

+4-12
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,12 @@ func TestCommand(t *testing.T) {
5858
func(s string) *Cmd { return Command(s) },
5959
func(s string) *Cmd { return CommandContext(context.Background(), s) },
6060
} {
61-
tmpDir, err := ioutil.TempDir("", "execabs-test")
62-
if err != nil {
63-
t.Fatalf("ioutil.TempDir failed: %s", err)
64-
}
65-
defer os.RemoveAll(tmpDir)
61+
tmpDir := t.TempDir()
6662
executable := "execabs-test"
6763
if runtime.GOOS == "windows" {
6864
executable += ".exe"
6965
}
70-
if err = ioutil.WriteFile(filepath.Join(tmpDir, executable), []byte{1, 2, 3}, 0111); err != nil {
66+
if err := ioutil.WriteFile(filepath.Join(tmpDir, executable), []byte{1, 2, 3}, 0111); err != nil {
7167
t.Fatalf("ioutil.WriteFile failed: %s", err)
7268
}
7369
cwd, err := os.Getwd()
@@ -97,16 +93,12 @@ func TestCommand(t *testing.T) {
9793
func TestLookPath(t *testing.T) {
9894
mustHaveExec(t)
9995

100-
tmpDir, err := ioutil.TempDir("", "execabs-test")
101-
if err != nil {
102-
t.Fatalf("ioutil.TempDir failed: %s", err)
103-
}
104-
defer os.RemoveAll(tmpDir)
96+
tmpDir := t.TempDir()
10597
executable := "execabs-test"
10698
if runtime.GOOS == "windows" {
10799
executable += ".exe"
108100
}
109-
if err = ioutil.WriteFile(filepath.Join(tmpDir, executable), []byte{1, 2, 3}, 0111); err != nil {
101+
if err := ioutil.WriteFile(filepath.Join(tmpDir, executable), []byte{1, 2, 3}, 0111); err != nil {
110102
t.Fatalf("ioutil.WriteFile failed: %s", err)
111103
}
112104
cwd, err := os.Getwd()

unix/dirent_test.go

+4-13
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
"bytes"
1212
"fmt"
1313
"io/ioutil"
14-
"os"
1514
"path/filepath"
1615
"runtime"
1716
"sort"
@@ -29,16 +28,12 @@ func TestDirent(t *testing.T) {
2928
filenameMinSize = 11
3029
)
3130

32-
d, err := ioutil.TempDir("", "dirent-test")
33-
if err != nil {
34-
t.Fatalf("tempdir: %v", err)
35-
}
36-
defer os.RemoveAll(d)
31+
d := t.TempDir()
3732
t.Logf("tmpdir: %s", d)
3833

3934
for i, c := range []byte("0123456789") {
4035
name := string(bytes.Repeat([]byte{c}, filenameMinSize+i))
41-
err = ioutil.WriteFile(filepath.Join(d, name), nil, 0644)
36+
err := ioutil.WriteFile(filepath.Join(d, name), nil, 0644)
4237
if err != nil {
4338
t.Fatalf("writefile: %v", err)
4439
}
@@ -98,18 +93,14 @@ func TestDirentRepeat(t *testing.T) {
9893
}
9994

10095
// Make a directory containing N files
101-
d, err := ioutil.TempDir("", "direntRepeat-test")
102-
if err != nil {
103-
t.Fatalf("tempdir: %v", err)
104-
}
105-
defer os.RemoveAll(d)
96+
d := t.TempDir()
10697

10798
var files []string
10899
for i := 0; i < N; i++ {
109100
files = append(files, fmt.Sprintf("file%d", i))
110101
}
111102
for _, file := range files {
112-
err = ioutil.WriteFile(filepath.Join(d, file), []byte("contents"), 0644)
103+
err := ioutil.WriteFile(filepath.Join(d, file), []byte("contents"), 0644)
113104
if err != nil {
114105
t.Fatalf("writefile: %v", err)
115106
}

unix/getdirentries_test.go

+2-5
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,8 @@ func testGetdirentries(t *testing.T, count int) {
3030
if count > 100 && testing.Short() && os.Getenv("GO_BUILDER_NAME") == "" {
3131
t.Skip("skipping in -short mode")
3232
}
33-
d, err := ioutil.TempDir("", "getdirentries-test")
34-
if err != nil {
35-
t.Fatalf("Tempdir: %v", err)
36-
}
37-
defer os.RemoveAll(d)
33+
d := t.TempDir()
34+
3835
var names []string
3936
for i := 0; i < count; i++ {
4037
names = append(names, fmt.Sprintf("file%03d", i))

unix/mmap_zos_test.go

+5-15
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,16 @@ import (
2121
)
2222

2323
func TestMmap(t *testing.T) {
24-
tmpdir := mktmpdir(t)
25-
filename := filepath.Join(filepath.Join(tmpdir, "testdata"), "memmapped_file")
24+
tmpdir := filepath.Join(t.TempDir(), "testdata")
25+
if err := os.Mkdir(tmpdir, 0700); err != nil {
26+
t.Fatal(err)
27+
}
28+
filename := filepath.Join(tmpdir, "memmapped_file")
2629
destination, err := os.Create(filename)
2730
if err != nil {
2831
t.Fatal("os.Create:", err)
2932
return
3033
}
31-
defer os.RemoveAll(tmpdir)
3234

3335
fmt.Fprintf(destination, "%s\n", "0 <- Flipped between 0 and 1 when test runs successfully")
3436
fmt.Fprintf(destination, "%s\n", "//Do not change contents - mmap test relies on this")
@@ -73,15 +75,3 @@ func TestMmap(t *testing.T) {
7375
t.Fatalf("Munmap: %v", err)
7476
}
7577
}
76-
77-
func mktmpdir(t *testing.T) string {
78-
tmpdir, err := ioutil.TempDir("", "memmapped_file")
79-
if err != nil {
80-
t.Fatal("mktmpdir:", err)
81-
}
82-
if err := os.Mkdir(filepath.Join(tmpdir, "testdata"), 0700); err != nil {
83-
os.RemoveAll(tmpdir)
84-
t.Fatal("mktmpdir:", err)
85-
}
86-
return tmpdir
87-
}

unix/sendfile_test.go

+2-7
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,9 @@ import (
1919

2020
func TestSendfile(t *testing.T) {
2121
// Set up source data file.
22-
tempDir, err := ioutil.TempDir("", "TestSendfile")
23-
if err != nil {
24-
t.Fatal(err)
25-
}
26-
defer os.RemoveAll(tempDir)
27-
name := filepath.Join(tempDir, "source")
22+
name := filepath.Join(t.TempDir(), "source")
2823
const contents = "contents"
29-
err = ioutil.WriteFile(name, []byte(contents), 0666)
24+
err := ioutil.WriteFile(name, []byte(contents), 0666)
3025
if err != nil {
3126
t.Fatal(err)
3227
}

unix/syscall_darwin_test.go

+2-11
Original file line numberDiff line numberDiff line change
@@ -99,17 +99,8 @@ func TestClonefileatWithCwd(t *testing.T) {
9999
}
100100

101101
func TestClonefileatWithRelativePaths(t *testing.T) {
102-
srcDir, err := ioutil.TempDir("", "src")
103-
if err != nil {
104-
t.Fatal(err)
105-
}
106-
defer os.RemoveAll(srcDir)
107-
108-
dstDir, err := ioutil.TempDir("", "dest")
109-
if err != nil {
110-
t.Fatal(err)
111-
}
112-
defer os.RemoveAll(dstDir)
102+
srcDir := t.TempDir()
103+
dstDir := t.TempDir()
113104

114105
srcFd, err := unix.Open(srcDir, unix.O_RDONLY|unix.O_DIRECTORY, 0)
115106
if err != nil {

unix/syscall_freebsd_test.go

+3-35
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ package unix_test
1010
import (
1111
"flag"
1212
"fmt"
13-
"io/ioutil"
1413
"net"
1514
"os"
1615
"os/exec"
@@ -34,10 +33,8 @@ func TestSysctlUint64(t *testing.T) {
3433
// corresponding to the given key.
3534

3635
type testProc struct {
37-
fn func() // should always exit instead of returning
38-
arg func(t *testing.T) string // generate argument for test
39-
cleanup func(arg string) error // for instance, delete coredumps from testing pledge
40-
success bool // whether zero-exit means success or failure
36+
fn func() // should always exit instead of returning
37+
success bool // whether zero-exit means success or failure
4138
}
4239

4340
var (
@@ -71,16 +68,7 @@ func testCmd(procName string, procArg string) (*exec.Cmd, error) {
7168
// a testProc with a key.
7269
func ExitsCorrectly(t *testing.T, procName string) {
7370
s := testProcs[procName]
74-
arg := "-"
75-
if s.arg != nil {
76-
arg = s.arg(t)
77-
}
78-
c, err := testCmd(procName, arg)
79-
defer func(arg string) {
80-
if err := s.cleanup(arg); err != nil {
81-
t.Fatalf("Failed to run cleanup for %s %s %#v", procName, err, err)
82-
}
83-
}(arg)
71+
c, err := testCmd(procName, t.TempDir())
8472
if err != nil {
8573
t.Fatalf("Failed to construct command for %s", procName)
8674
}
@@ -134,27 +122,9 @@ func CapEnterTest() {
134122
os.Exit(0)
135123
}
136124

137-
func makeTempDir(t *testing.T) string {
138-
d, err := ioutil.TempDir("", "go_openat_test")
139-
if err != nil {
140-
t.Fatalf("TempDir failed: %s", err)
141-
}
142-
return d
143-
}
144-
145-
func removeTempDir(arg string) error {
146-
err := os.RemoveAll(arg)
147-
if err != nil && err.(*os.PathError).Err == unix.ENOENT {
148-
return nil
149-
}
150-
return err
151-
}
152-
153125
func init() {
154126
testProcs["cap_enter"] = testProc{
155127
CapEnterTest,
156-
makeTempDir,
157-
removeTempDir,
158128
true,
159129
}
160130
}
@@ -252,8 +222,6 @@ func OpenatTest() {
252222
func init() {
253223
testProcs["openat"] = testProc{
254224
OpenatTest,
255-
makeTempDir,
256-
removeTempDir,
257225
true,
258226
}
259227
}

unix/syscall_linux_test.go

+1-7
Original file line numberDiff line numberDiff line change
@@ -986,13 +986,7 @@ func TestOpenat2(t *testing.T) {
986986
}
987987

988988
// prepare
989-
tempDir, err := ioutil.TempDir("", t.Name())
990-
if err != nil {
991-
t.Fatal(err)
992-
}
993-
defer os.RemoveAll(tempDir)
994-
995-
subdir := filepath.Join(tempDir, "dir")
989+
subdir := filepath.Join(t.TempDir(), "dir")
996990
if err := os.Mkdir(subdir, 0755); err != nil {
997991
t.Fatal(err)
998992
}

unix/syscall_unix_test.go

+4-24
Original file line numberDiff line numberDiff line change
@@ -145,12 +145,11 @@ func TestFcntlInt(t *testing.T) {
145145
// TestFcntlFlock tests whether the file locking structure matches
146146
// the calling convention of each kernel.
147147
func TestFcntlFlock(t *testing.T) {
148-
name := filepath.Join(os.TempDir(), "TestFcntlFlock")
148+
name := filepath.Join(t.TempDir(), "TestFcntlFlock")
149149
fd, err := unix.Open(name, unix.O_CREAT|unix.O_RDWR|unix.O_CLOEXEC, 0)
150150
if err != nil {
151151
t.Fatalf("Open failed: %v", err)
152152
}
153-
defer unix.Unlink(name)
154153
defer unix.Close(fd)
155154
flock := unix.Flock_t{
156155
Type: unix.F_RDLCK,
@@ -199,12 +198,6 @@ func TestPassFD(t *testing.T) {
199198
}
200199
}
201200

202-
tempDir, err := ioutil.TempDir("", "TestPassFD")
203-
if err != nil {
204-
t.Fatal(err)
205-
}
206-
defer os.RemoveAll(tempDir)
207-
208201
fds, err := unix.Socketpair(unix.AF_LOCAL, unix.SOCK_STREAM, 0)
209202
if err != nil {
210203
t.Fatalf("Socketpair: %v", err)
@@ -214,7 +207,7 @@ func TestPassFD(t *testing.T) {
214207
defer writeFile.Close()
215208
defer readFile.Close()
216209

217-
cmd := exec.Command(os.Args[0], "-test.run=^TestPassFD$", "--", tempDir)
210+
cmd := exec.Command(os.Args[0], "-test.run=^TestPassFD$", "--", t.TempDir())
218211
cmd.Env = []string{"GO_WANT_HELPER_PROCESS=1"}
219212
if lp := os.Getenv("LD_LIBRARY_PATH"); lp != "" {
220213
cmd.Env = append(cmd.Env, "LD_LIBRARY_PATH="+lp)
@@ -659,15 +652,7 @@ func TestGetwd(t *testing.T) {
659652
case "android":
660653
dirs = []string{"/", "/system/bin"}
661654
case "ios":
662-
d1, err := ioutil.TempDir("", "d1")
663-
if err != nil {
664-
t.Fatalf("TempDir: %v", err)
665-
}
666-
d2, err := ioutil.TempDir("", "d2")
667-
if err != nil {
668-
t.Fatalf("TempDir: %v", err)
669-
}
670-
dirs = []string{d1, d2}
655+
dirs = []string{t.TempDir(), t.TempDir()}
671656
}
672657
oldwd := os.Getenv("PWD")
673658
for _, d := range dirs {
@@ -1166,17 +1151,12 @@ func chtmpdir(t *testing.T) func() {
11661151
if err != nil {
11671152
t.Fatalf("chtmpdir: %v", err)
11681153
}
1169-
d, err := ioutil.TempDir("", "test")
1170-
if err != nil {
1171-
t.Fatalf("chtmpdir: %v", err)
1172-
}
1173-
if err := os.Chdir(d); err != nil {
1154+
if err := os.Chdir(t.TempDir()); err != nil {
11741155
t.Fatalf("chtmpdir: %v", err)
11751156
}
11761157
return func() {
11771158
if err := os.Chdir(oldwd); err != nil {
11781159
t.Fatalf("chtmpdir: %v", err)
11791160
}
1180-
os.RemoveAll(d)
11811161
}
11821162
}

0 commit comments

Comments
 (0)