Files
podman/libpod/lock/file/file_lock_test.go
Eng Zer Jun cf35168f0a 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>
2022-05-05 21:09:41 +08:00

70 lines
1.4 KiB
Go

package file
import (
"fmt"
"os"
"os/exec"
"path/filepath"
"testing"
"github.com/stretchr/testify/assert"
)
// Test that creating and destroying locks work
func TestCreateAndDeallocate(t *testing.T) {
d := t.TempDir()
_, err := OpenFileLock(filepath.Join(d, "locks"))
assert.Error(t, err)
l, err := CreateFileLock(filepath.Join(d, "locks"))
assert.NoError(t, err)
lock, err := l.AllocateLock()
assert.NoError(t, err)
err = l.AllocateGivenLock(lock)
assert.Error(t, err)
err = l.DeallocateLock(lock)
assert.NoError(t, err)
err = l.AllocateGivenLock(lock)
assert.NoError(t, err)
err = l.DeallocateAllLocks()
assert.NoError(t, err)
err = l.AllocateGivenLock(lock)
assert.NoError(t, err)
err = l.DeallocateAllLocks()
assert.NoError(t, err)
}
// Test that creating and destroying locks work
func TestLockAndUnlock(t *testing.T) {
d := t.TempDir()
l, err := CreateFileLock(filepath.Join(d, "locks"))
assert.NoError(t, err)
lock, err := l.AllocateLock()
assert.NoError(t, err)
err = l.LockFileLock(lock)
assert.NoError(t, err)
lslocks, err := exec.LookPath("lslocks")
if err == nil {
lockPath := l.getLockPath(lock)
out, err := exec.Command(lslocks, "--json", "-p", fmt.Sprintf("%d", os.Getpid())).CombinedOutput()
assert.NoError(t, err)
assert.Contains(t, string(out), lockPath)
}
err = l.UnlockFileLock(lock)
assert.NoError(t, err)
}