2025-03-09 19:58:25 +01:00

44 lines
725 B
Go

package testhelpers
import (
"log/slog"
"testing"
"github.com/stretchr/testify/require"
)
// ChanDiscard consumes a channel and discards all values.
func ChanDiscard[T any](ch <-chan T) {
go func() {
for range ch {
// no-op
}
}()
}
// ChanRequireNoError consumes a channel and asserts that no error is received.
func ChanRequireNoError(t testing.TB, ch <-chan error) {
t.Helper()
go func() {
for {
select {
case err := <-ch:
require.NoError(t, err)
return
case <-t.Context().Done():
return
}
}
}()
}
// ChanLog logs a channel's values.
func ChanLog[T any](ch <-chan T, logger *slog.Logger) {
go func() {
for v := range ch {
logger.Info("Channel", "value", v)
}
}()
}