Scert/backend/internal/processlock/lock_test.go

31 lines
732 B
Go

package processlock
import (
"errors"
"path/filepath"
"testing"
)
func TestAcquirePreventsConcurrentProcessAccess(t *testing.T) {
path := filepath.Join(t.TempDir(), "scert.lock")
first, err := Acquire(path)
if err != nil {
t.Fatalf("获取第一个进程锁失败:%v", err)
}
defer first.Close()
if _, err := Acquire(path); !errors.Is(err, ErrLocked) {
t.Fatalf("并发进程锁未被拒绝:%v", err)
}
if err := first.Close(); err != nil {
t.Fatalf("释放第一个进程锁失败:%v", err)
}
second, err := Acquire(path)
if err != nil {
t.Fatalf("释放后无法重新获取进程锁:%v", err)
}
if err := second.Close(); err != nil {
t.Fatalf("释放第二个进程锁失败:%v", err)
}
}