72 lines
1.4 KiB
Go
72 lines
1.4 KiB
Go
package logfrog
|
|
|
|
import (
|
|
"bufio"
|
|
"io"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
type TestHandler struct {
|
|
*BaseLogHandler
|
|
writer io.Writer
|
|
}
|
|
|
|
func newTestHandler(w io.Writer) *TestHandler {
|
|
b := NewBaseLogHandler()
|
|
s := &TestHandler{b, w}
|
|
b.LogHandler = s
|
|
return s
|
|
}
|
|
|
|
func (s *TestHandler) Write(value []byte) error {
|
|
_, err := s.writer.Write(value)
|
|
return err
|
|
}
|
|
|
|
func TestLogger(t *testing.T) {
|
|
|
|
t.Run("handler-processor-is-isolated", func(t *testing.T) {
|
|
testProcessor := func (r *LogRecord) *LogRecord {
|
|
r.Message = "<redacted>"
|
|
return r
|
|
}
|
|
|
|
pr1, pw1 := io.Pipe()
|
|
pr2, pw2 := io.Pipe()
|
|
defer pr1.Close()
|
|
defer pr2.Close()
|
|
|
|
bw1 := bufio.NewWriter(pw1)
|
|
bw2 := bufio.NewWriter(pw2)
|
|
|
|
handler1 := newTestHandler(bw1)
|
|
handler1.AddProcessorFn(testProcessor)
|
|
|
|
handler2 := newTestHandler(bw2)
|
|
|
|
logger := NewLogger("test", DEBUG)
|
|
logger.AddHandler(handler1)
|
|
logger.AddHandler(handler2)
|
|
|
|
go func() {
|
|
logger.Info("Hello world!")
|
|
|
|
bw1.Flush()
|
|
pw1.Close()
|
|
|
|
bw2.Flush()
|
|
pw2.Close()
|
|
}()
|
|
|
|
buf, err := io.ReadAll(pr1)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, "<redacted>", string(buf))
|
|
|
|
buf, err = io.ReadAll(pr2)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, "Hello world!", string(buf))
|
|
})
|
|
|
|
} |