26f897c1ec
release / release-please (push) Failing after 1m49s
docs / build (push) Failing after 6m34s
release / build-and-upload (arm64, linux) (push) Has been cancelled
release / build-and-upload (arm64, windows) (push) Has been cancelled
release / build-darwin (amd64, darwin) (push) Has been cancelled
release / checksums (push) Has been cancelled
release / finalize (push) Has been cancelled
release / build-darwin (arm64, darwin) (push) Has been cancelled
release / build-and-upload (amd64, linux) (push) Has been cancelled
release / build-and-upload (amd64, windows) (push) Has been cancelled
docs / deploy (push) Has been cancelled
47 lines
926 B
Go
47 lines
926 B
Go
package ipc_test
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/kunchenguid/no-mistakes/internal/ipc"
|
|
)
|
|
|
|
// socketPath returns a short socket path to stay within macOS 104-byte limit.
|
|
func socketPath(t *testing.T) string {
|
|
t.Helper()
|
|
dir, err := os.MkdirTemp("", "ipc")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Cleanup(func() { os.RemoveAll(dir) })
|
|
return filepath.Join(dir, "s.sock")
|
|
}
|
|
|
|
func startServer(t *testing.T, sock string) *ipc.Server {
|
|
t.Helper()
|
|
srv := ipc.NewServer()
|
|
errCh := make(chan error, 1)
|
|
go func() { errCh <- srv.Serve(sock) }()
|
|
|
|
// wait for server to be ready
|
|
deadline := time.Now().Add(2 * time.Second)
|
|
for time.Now().Before(deadline) {
|
|
c, err := ipc.Dial(sock)
|
|
if err == nil {
|
|
c.Close()
|
|
break
|
|
}
|
|
time.Sleep(10 * time.Millisecond)
|
|
}
|
|
t.Cleanup(func() {
|
|
srv.Close()
|
|
if err := <-errCh; err != nil {
|
|
// server returns nil on clean close
|
|
}
|
|
})
|
|
return srv
|
|
}
|