Compare commits

..

2 Commits

Author SHA1 Message Date
viktor d30e778bd4 fixed test
Build Docker and Deploy / Run goext test-suite (push) Successful in 1m35s
2026-04-21 16:54:52 +02:00
viktor 73e867f75a fixed test to properly wait for goroutine completion 2026-04-21 16:54:28 +02:00
3 changed files with 27 additions and 6 deletions
+11 -1
View File
@@ -90,15 +90,17 @@ func TestBroadcast_SubscribeByIter(t *testing.T) {
// Channel to communicate when message is received
done := make(chan bool)
goroutineDone := make(chan struct{})
received := false
// Start a goroutine to use the iterator
go func() {
defer close(goroutineDone)
for msg := range iterSeq {
if msg == "hello" {
received = true
done <- true
return // Stop iteration
return // Stop iteration — triggers Unsubscribe via yield returning false
}
}
}()
@@ -119,6 +121,14 @@ func TestBroadcast_SubscribeByIter(t *testing.T) {
t.Fatal("Timed out waiting for message")
}
// Wait for the goroutine to fully exit so Unsubscribe (triggered by the
// iterator cleanup when yield returns false) has completed.
select {
case <-goroutineDone:
case <-time.After(time.Second):
t.Fatal("Timed out waiting for goroutine to finish")
}
subCount := bb.SubscriberCount()
if subCount != 0 {
t.Fatalf("Expected 0 receivers, got %d", subCount)
+11 -1
View File
@@ -129,15 +129,17 @@ func TestPubSub_SubscribeByIter(t *testing.T) {
// Channel to communicate when message is received
done := make(chan bool)
goroutineDone := make(chan struct{})
received := false
// Start a goroutine to use the iterator
go func() {
defer close(goroutineDone)
for msg := range iterSeq {
if msg == "hello" {
received = true
done <- true
return // Stop iteration
return // Stop iteration — triggers Unsubscribe via yield returning false
}
}
}()
@@ -158,6 +160,14 @@ func TestPubSub_SubscribeByIter(t *testing.T) {
t.Fatal("Timed out waiting for message")
}
// Wait for the goroutine to fully exit so Unsubscribe (triggered by the
// iterator cleanup when yield returns false) has completed.
select {
case <-goroutineDone:
case <-time.After(time.Second):
t.Fatal("Timed out waiting for goroutine to finish")
}
subCount := ps.SubscriberCount("test-ns")
if subCount != 0 {
t.Fatalf("Expected 0 receivers, got %d", subCount)
+5 -4
View File
@@ -2,12 +2,13 @@ package exerr
import (
"fmt"
"git.blackforestbytes.com/BlackForestBytes/goext/langext"
"github.com/rs/xid"
"github.com/rs/zerolog"
"reflect"
"strings"
"time"
"git.blackforestbytes.com/BlackForestBytes/goext/langext"
"github.com/rs/xid"
"github.com/rs/zerolog"
)
type ExErr struct {
@@ -136,7 +137,7 @@ func (ee *ExErr) FormatLog(lvl LogPrintLevel) string {
for curr := ee; curr != nil; curr = curr.OriginalError {
indent.WriteString(" ")
str.WriteString(indent).String()
str.WriteString(indent.String())
str.WriteString("-> ")
strmsg := strings.Trim(curr.Message, " \r\n\t")
if lbidx := strings.Index(curr.Message, "\n"); lbidx >= 0 {