Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 47b5d28

Browse files
committed
test: Add testutil.TempFile and cleanup tests relying on temp file
1 parent 635cadc commit 47b5d28

File tree

2 files changed

+38
-27
lines changed

2 files changed

+38
-27
lines changed

cli/server_test.go

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ import (
3535
"github.com/coder/coder/coderd/database/postgres"
3636
"github.com/coder/coder/coderd/telemetry"
3737
"github.com/coder/coder/codersdk"
38-
"github.com/coder/coder/cryptorand"
3938
"github.com/coder/coder/pty/ptytest"
4039
"github.com/coder/coder/testutil"
4140
)
@@ -1132,10 +1131,7 @@ func TestServer(t *testing.T) {
11321131
ctx, cancelFunc := context.WithCancel(context.Background())
11331132
defer cancelFunc()
11341133

1135-
random, err := cryptorand.String(5)
1136-
require.NoError(t, err)
1137-
tmpdir := t.TempDir()
1138-
fiName := fmt.Sprint(tmpdir, "/coder-logging-test-", random)
1134+
fiName := testutil.TempFile(t, "", "coder-logging-test-*")
11391135

11401136
root, _ := clitest.New(t,
11411137
"server",
@@ -1163,23 +1159,23 @@ func TestServer(t *testing.T) {
11631159
ctx, cancelFunc := context.WithCancel(context.Background())
11641160
defer cancelFunc()
11651161

1166-
fi := testutil.CreateTemp(t, "", "coder-logging-test-*")
1162+
fi := testutil.TempFile(t, "", "coder-logging-test-*")
11671163

11681164
root, _ := clitest.New(t,
11691165
"server",
11701166
"--verbose",
11711167
"--in-memory",
11721168
"--http-address", ":0",
11731169
"--access-url", "http://example.com",
1174-
"--log-human", fi.Name(),
1170+
"--log-human", fi,
11751171
)
11761172
serverErr := make(chan error, 1)
11771173
go func() {
11781174
serverErr <- root.ExecuteContext(ctx)
11791175
}()
11801176

11811177
assert.Eventually(t, func() bool {
1182-
stat, err := os.Stat(fi.Name())
1178+
stat, err := os.Stat(fi)
11831179
return err == nil && stat.Size() > 0
11841180
}, testutil.WaitShort, testutil.IntervalFast)
11851181
cancelFunc()
@@ -1191,23 +1187,23 @@ func TestServer(t *testing.T) {
11911187
ctx, cancelFunc := context.WithCancel(context.Background())
11921188
defer cancelFunc()
11931189

1194-
fi := testutil.CreateTemp(t, "", "coder-logging-test-*")
1190+
fi := testutil.TempFile(t, "", "coder-logging-test-*")
11951191

11961192
root, _ := clitest.New(t,
11971193
"server",
11981194
"--verbose",
11991195
"--in-memory",
12001196
"--http-address", ":0",
12011197
"--access-url", "http://example.com",
1202-
"--log-json", fi.Name(),
1198+
"--log-json", fi,
12031199
)
12041200
serverErr := make(chan error, 1)
12051201
go func() {
12061202
serverErr <- root.ExecuteContext(ctx)
12071203
}()
12081204

12091205
assert.Eventually(t, func() bool {
1210-
stat, err := os.Stat(fi.Name())
1206+
stat, err := os.Stat(fi)
12111207
return err == nil && stat.Size() > 0
12121208
}, testutil.WaitShort, testutil.IntervalFast)
12131209
cancelFunc()
@@ -1219,15 +1215,15 @@ func TestServer(t *testing.T) {
12191215
ctx, cancelFunc := context.WithCancel(context.Background())
12201216
defer cancelFunc()
12211217

1222-
fi := testutil.CreateTemp(t, "", "coder-logging-test-*")
1218+
fi := testutil.TempFile(t, "", "coder-logging-test-*")
12231219

12241220
root, _ := clitest.New(t,
12251221
"server",
12261222
"--verbose",
12271223
"--in-memory",
12281224
"--http-address", ":0",
12291225
"--access-url", "http://example.com",
1230-
"--log-stackdriver", fi.Name(),
1226+
"--log-stackdriver", fi,
12311227
)
12321228
// Attach pty so we get debug output from the command if this test
12331229
// fails.
@@ -1250,7 +1246,7 @@ func TestServer(t *testing.T) {
12501246
}, testutil.WaitLong*2, testutil.IntervalMedium, "wait for server to listen on http")
12511247

12521248
require.Eventually(t, func() bool {
1253-
stat, err := os.Stat(fi.Name())
1249+
stat, err := os.Stat(fi)
12541250
return err == nil && stat.Size() > 0
12551251
}, testutil.WaitLong, testutil.IntervalMedium)
12561252
})
@@ -1260,9 +1256,9 @@ func TestServer(t *testing.T) {
12601256
ctx, cancelFunc := context.WithCancel(context.Background())
12611257
defer cancelFunc()
12621258

1263-
fi1 := testutil.CreateTemp(t, "", "coder-logging-test-*")
1264-
fi2 := testutil.CreateTemp(t, "", "coder-logging-test-*")
1265-
fi3 := testutil.CreateTemp(t, "", "coder-logging-test-*")
1259+
fi1 := testutil.TempFile(t, "", "coder-logging-test-*")
1260+
fi2 := testutil.TempFile(t, "", "coder-logging-test-*")
1261+
fi3 := testutil.TempFile(t, "", "coder-logging-test-*")
12661262

12671263
// NOTE(mafredri): This test might end up downloading Terraform
12681264
// which can take a long time and end up failing the test.
@@ -1274,9 +1270,9 @@ func TestServer(t *testing.T) {
12741270
"--in-memory",
12751271
"--http-address", ":0",
12761272
"--access-url", "http://example.com",
1277-
"--log-human", fi1.Name(),
1278-
"--log-json", fi2.Name(),
1279-
"--log-stackdriver", fi3.Name(),
1273+
"--log-human", fi1,
1274+
"--log-json", fi2,
1275+
"--log-stackdriver", fi3,
12801276
)
12811277
// Attach pty so we get debug output from the command if this test
12821278
// fails.
@@ -1299,15 +1295,15 @@ func TestServer(t *testing.T) {
12991295
}, testutil.WaitLong*2, testutil.IntervalMedium, "wait for server to listen on http")
13001296

13011297
require.Eventually(t, func() bool {
1302-
stat, err := os.Stat(fi1.Name())
1298+
stat, err := os.Stat(fi1)
13031299
return err == nil && stat.Size() > 0
13041300
}, testutil.WaitShort, testutil.IntervalMedium, "log human size > 0")
13051301
require.Eventually(t, func() bool {
1306-
stat, err := os.Stat(fi2.Name())
1302+
stat, err := os.Stat(fi2)
13071303
return err == nil && stat.Size() > 0
13081304
}, testutil.WaitShort, testutil.IntervalMedium, "log json size > 0")
13091305
require.Eventually(t, func() bool {
1310-
stat, err := os.Stat(fi3.Name())
1306+
stat, err := os.Stat(fi3)
13111307
return err == nil && stat.Size() > 0
13121308
}, testutil.WaitShort, testutil.IntervalMedium, "log stackdriver size > 0")
13131309
})

testutil/temp.go

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,24 @@ import (
77
"github.com/stretchr/testify/require"
88
)
99

10+
// TempFile returns the name of a temporary file that does not exist.
11+
func TempFile(t *testing.T, dir, pattern string) string {
12+
t.Helper()
13+
14+
if dir == "" {
15+
dir = t.TempDir()
16+
}
17+
f, err := os.CreateTemp(dir, pattern)
18+
require.NoError(t, err, "create temp file")
19+
name := f.Name()
20+
err = f.Close()
21+
require.NoError(t, err, "close temp file")
22+
err = os.Remove(name)
23+
require.NoError(t, err, "remove temp file")
24+
25+
return name
26+
}
27+
1028
// CreateTemp is a convenience function for creating a temporary file, like
1129
// os.CreateTemp, but it also registers a cleanup function to close and remove
1230
// the file.
@@ -19,10 +37,7 @@ func CreateTemp(t *testing.T, dir, pattern string) *os.File {
1937
f, err := os.CreateTemp(dir, pattern)
2038
require.NoError(t, err, "create temp file")
2139
t.Cleanup(func() {
22-
err = f.Close()
23-
if err != nil {
24-
t.Logf("CreateTemp: Cleanup: close failed for %q: %v", f.Name(), err)
25-
}
40+
_ = f.Close()
2641
err = os.Remove(f.Name())
2742
if err != nil {
2843
t.Logf("CreateTemp: Cleanup: remove failed for %q: %v", f.Name(), err)

0 commit comments

Comments
 (0)