logfrog-go/handlers/stream_test.go

81 lines
1.9 KiB
Go

package handlers
import (
"io"
"os"
"testing"
"codeark.it/Bithero-Agency-Go/logfrog-go"
"github.com/stretchr/testify/assert"
)
func TestStreamLogger(t *testing.T) {
t.Run("NewStreamHandlerFile", func(t *testing.T) {
logger := logfrog.NewLogger("main", logfrog.TRACE)
t.Cleanup(func() {
os.Remove("./test.log");
})
handler, err := NewStreamHandlerFile("test.log")
assert.NoError(t, err)
logger.AddHandler(handler)
assert.NotPanics(t, func() {
logger.Info("Hello world!")
}, "logger.Info panics!")
buf, err := os.ReadFile("./test.log")
assert.NoError(t, err)
assert.Equal(t, "Hello world!", string(buf))
})
t.Run("NewStreamHandler with os.File", func(t *testing.T) {
logger := logfrog.NewLogger("main", logfrog.TRACE)
t.Cleanup(func() {
os.Remove("./test.log");
})
f, err := os.Create("test.log")
assert.NoError(t, err)
defer f.Close()
logger.AddHandler(NewStreamHandler(f))
logger.Info("Hello world!")
buf, err := os.ReadFile("./test.log")
assert.NoError(t, err)
assert.Equal(t, "Hello world!", string(buf))
})
t.Run("NewStreamHandler with os.Stdout", func(t *testing.T) {
logger := logfrog.NewLogger("main", logfrog.TRACE)
logger.AddHandler(NewStreamHandler(os.Stdout))
logger.Info("Hello world!\n")
// cannot really test if was successfull or not...
})
t.Run("NewStreamHandler with pipe", func(t *testing.T) {
logger := logfrog.NewLogger("main", logfrog.TRACE)
r, w := io.Pipe()
defer r.Close()
logger.AddHandler(NewStreamHandler(w))
go func() {
defer w.Close()
logger.Info("Hello world!")
}()
buf, err := io.ReadAll(r)
assert.NoError(t, err)
assert.Equal(t, "Hello world!", string(buf))
})
}