...
1 package testutil
2
3 import (
4 "context"
5 "strings"
6 "sync"
7 "testing"
8
9 "github.com/cybertec-postgresql/pgwatch/v6/internal/log"
10 "github.com/sirupsen/logrus"
11 )
12
13
14
15 type SafeBuffer struct {
16 mu sync.Mutex
17 sb strings.Builder
18 }
19
20 func (b *SafeBuffer) Write(p []byte) (int, error) {
21 b.mu.Lock()
22 defer b.mu.Unlock()
23 return b.sb.Write(p)
24 }
25
26
27 func (b *SafeBuffer) String() string {
28 b.mu.Lock()
29 defer b.mu.Unlock()
30 return b.sb.String()
31 }
32
33
34
35
36
37
38
39
40 func NewTestLogger(t *testing.T, level logrus.Level) (context.Context, *SafeBuffer) {
41 t.Helper()
42 var out SafeBuffer
43 l := logrus.New()
44 l.SetOutput(&out)
45 l.SetLevel(level)
46 return log.WithLogger(t.Context(), l), &out
47 }
48