//go:build unix
package spindle
import (
"path/filepath"
"strings"
"testing"
)
func TestSecondSpindleOnTheSameDatabaseIsRefused(t *testing.T) {
dbPath := filepath.Join(t.TempDir(), "spindle.db")
release, err := lockInstance(dbPath)
if err != nil {
t.Fatal(err)
}
if _, err := lockInstance(dbPath); err == nil || !strings.Contains(err.Error(), "another spindle") {
t.Fatalf("second lock = %v, want a refusal while the first holds it", err)
}
release()
again, err := lockInstance(dbPath)
if err != nil {
t.Fatalf("the lock was not given back: %v", err)
}
again()
}
func TestNoDatabasePathMeansNoLock(t *testing.T) {
for range 2 {
release, err := lockInstance("")
if err != nil {
t.Fatal(err)
}
defer release()
}
}