test: use T.TempDir to create temporary test directory

The directory created by `T.TempDir` is automatically removed when the
test and all its subtests complete.

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-03-09 22:23:04 +08:00 committed by Ondřej Budai
parent c9a08da29f
commit 00ea3eb285
12 changed files with 104 additions and 392 deletions

View file

@ -11,13 +11,7 @@ import (
)
func TestWriteFileAtomically(t *testing.T) {
dir, err := ioutil.TempDir("", "jsondb-test-")
require.NoError(t, err)
defer func() {
err := os.RemoveAll(dir)
require.NoError(t, err)
}()
dir := t.TempDir()
t.Run("success", func(t *testing.T) {
octopus := []byte("🐙\n")
@ -25,7 +19,7 @@ func TestWriteFileAtomically(t *testing.T) {
// use an uncommon mode to check it's set correctly
perm := os.FileMode(0750)
err = writeFileAtomically(dir, "octopus", perm, func(f *os.File) error {
err := writeFileAtomically(dir, "octopus", perm, func(f *os.File) error {
_, err := f.Write(octopus)
return err
})
@ -48,12 +42,12 @@ func TestWriteFileAtomically(t *testing.T) {
})
t.Run("error", func(t *testing.T) {
err = writeFileAtomically(dir, "no-octopus", 0750, func(f *os.File) error {
err := writeFileAtomically(dir, "no-octopus", 0750, func(f *os.File) error {
return errors.New("something went wrong")
})
require.Error(t, err)
_, err := os.Stat(path.Join(dir, "no-octopus"))
_, err = os.Stat(path.Join(dir, "no-octopus"))
require.Error(t, err)
// ensure there are no stray temporary files

View file

@ -17,11 +17,6 @@ type document struct {
CanSwim bool `json:"can-swim"`
}
func cleanupTempDir(t *testing.T, dir string) {
err := os.RemoveAll(dir)
require.NoError(t, err)
}
// If the passed directory is not readable (writable), we should notice on the
// first read (write).
func TestDegenerate(t *testing.T) {
@ -42,14 +37,12 @@ func TestDegenerate(t *testing.T) {
})
t.Run("invalid-json", func(t *testing.T) {
dir, err := ioutil.TempDir("", "jsondb-test-")
require.NoError(t, err)
defer cleanupTempDir(t, dir)
dir := t.TempDir()
db := jsondb.New(dir, 0755)
// write-only file
err = ioutil.WriteFile(path.Join(dir, "one.json"), []byte("{"), 0600)
err := ioutil.WriteFile(path.Join(dir, "one.json"), []byte("{"), 0600)
require.NoError(t, err)
var d document
@ -59,11 +52,9 @@ func TestDegenerate(t *testing.T) {
}
func TestCorrupt(t *testing.T) {
dir, err := ioutil.TempDir("", "jsondb-test-")
require.NoError(t, err)
defer cleanupTempDir(t, dir)
dir := t.TempDir()
err = ioutil.WriteFile(path.Join(dir, "one.json"), []byte("{"), 0600)
err := ioutil.WriteFile(path.Join(dir, "one.json"), []byte("{"), 0600)
require.NoError(t, err)
db := jsondb.New(dir, 0755)
@ -73,11 +64,9 @@ func TestCorrupt(t *testing.T) {
}
func TestRead(t *testing.T) {
dir, err := ioutil.TempDir("", "jsondb-test-")
require.NoError(t, err)
defer cleanupTempDir(t, dir)
dir := t.TempDir()
err = ioutil.WriteFile(path.Join(dir, "one.json"), []byte("true"), 0600)
err := ioutil.WriteFile(path.Join(dir, "one.json"), []byte("true"), 0600)
require.NoError(t, err)
db := jsondb.New(dir, 0755)
@ -106,9 +95,7 @@ func TestRead(t *testing.T) {
}
func TestMultiple(t *testing.T) {
dir, err := ioutil.TempDir("", "jsondb-test-")
require.NoError(t, err)
defer cleanupTempDir(t, dir)
dir := t.TempDir()
perm := os.FileMode(0600)
documents := map[string]document{
@ -120,7 +107,7 @@ func TestMultiple(t *testing.T) {
db := jsondb.New(dir, perm)
for name, doc := range documents {
err = db.Write(name, doc)
err := db.Write(name, doc)
require.NoError(t, err)
}
names, err := db.List()