Skip to content

Commit 197604d

Browse files
committed
Add examples/testing/tepmdir/
1 parent 9ca9657 commit 197604d

File tree

3 files changed

+61
-1
lines changed

3 files changed

+61
-1
lines changed

examples/testing/short_feature/lib/lib_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package lib_test
33
import (
44
"testing"
55

6-
"github.com/devlights/try-golang/examples/testing/testing_short_feature/lib"
6+
"github.com/devlights/try-golang/examples/testing/short_feature/lib"
77
)
88

99
func TestAdd(t *testing.T) {
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# https://taskfile.dev
2+
3+
version: '3'
4+
5+
tasks:
6+
default:
7+
cmds:
8+
- go test -v .
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"os"
6+
"path/filepath"
7+
"testing"
8+
)
9+
10+
var (
11+
tmpDir string
12+
)
13+
14+
func TestMain(m *testing.M) {
15+
ret := m.Run()
16+
17+
// テスト終了後に一時ディレクトリが削除されているか確認
18+
if tmpDir != "" {
19+
_, err := os.Stat(tmpDir)
20+
fmt.Printf("[teardown] os.Stat() ==> %v", err)
21+
}
22+
23+
os.Exit(ret)
24+
}
25+
26+
func TestTempDir(t *testing.T) {
27+
//
28+
// t.TempDir() にてテスト時に利用できる一時ディレクトリの
29+
// パスが取得出来る。この一時ディレクトリはテスト時に作成されて
30+
// テスト終了後に自動的に消去される。テスト時に手動で一時ディレクトリを
31+
// 確保しておく手間が無くなるため、とても便利。
32+
//
33+
tmpDir = t.TempDir()
34+
t.Logf("tmpDir=%s", tmpDir)
35+
36+
fi, err := os.Stat(tmpDir)
37+
t.Logf("IsDir=%v, Name=%s, Err=%v", fi.IsDir(), fi.Name(), err)
38+
39+
// ディレクトリが存在しているだけでは何なので
40+
// 何かのファイルを書き込んでおく
41+
p := filepath.Join(tmpDir, "hello.txt")
42+
os.WriteFile(p, []byte("hello world"), 0777)
43+
44+
fi, err = os.Stat(p)
45+
t.Logf("IsDir=%v, Name=%s, Err=%v", fi.IsDir(), fi.Name(), err)
46+
47+
// t.TempDir() の呼び出しは何回でも良い
48+
// その度に、異なるディレクトリが返る
49+
for i := 0; i < 10; i++ {
50+
t.Logf("tmpDir=%s", t.TempDir())
51+
}
52+
}

0 commit comments

Comments
 (0)