package operationlock_test import ( "context" "testing" "time" "proxyctl/internal/operationlock" ) func TestLockSerializesIndependentInstancesAndHonorsContext(t *testing.T) { path := t.TempDir() + "/proxyctl.lock" first := operationlock.New(path) second := operationlock.New(path) unlock, err := first.Lock(context.Background()) if err != nil { t.Fatal(err) } ctx, cancel := context.WithTimeout(context.Background(), 30*time.Millisecond) defer cancel() if _, err := second.Lock(ctx); err == nil { t.Fatal("second lock acquired while first held") } unlock() unlockSecond, err := second.Lock(context.Background()) if err != nil { t.Fatal(err) } unlockSecond() }