//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() } }