fix: make embedded NATS opt-in so tests don't hang
All checks were successful
CI / Build and Test (push) Successful in 31s

Move NATS startup from New() to Start(), so tests that don't use
pubsub never block on server initialization. Add a 10s timeout to
WaitForServer() and skip NATS tests gracefully when unavailable.
This commit is contained in:
Ryan Hamamura
2026-02-18 08:45:03 -10:00
parent 08b7dbd17f
commit 5d61149fa3
5 changed files with 49 additions and 25 deletions

14
nats.go
View File

@@ -56,7 +56,19 @@ func startDefaultNATS() (dn *defaultNATS, err error) {
os.RemoveAll(dataDir)
return nil, fmt.Errorf("start embedded nats: %w", err)
}
ns.WaitForServer()
ready := make(chan struct{})
go func() {
ns.WaitForServer()
close(ready)
}()
select {
case <-ready:
case <-time.After(10 * time.Second):
ns.Close()
cancel()
os.RemoveAll(dataDir)
return nil, fmt.Errorf("embedded nats server did not start within 10s")
}
nc, err := ns.Client()
if err != nil {