65 lines
1.3 KiB
Go
65 lines
1.3 KiB
Go
|
|
package logger
|
||
|
|
|
||
|
|
import (
|
||
|
|
"bytes"
|
||
|
|
"context"
|
||
|
|
"io"
|
||
|
|
"os"
|
||
|
|
"log/slog"
|
||
|
|
"testing"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestNew(t *testing.T) {
|
||
|
|
// Test non-verbose logger
|
||
|
|
var buf bytes.Buffer
|
||
|
|
oldStderr := os.Stderr
|
||
|
|
r, w, _ := os.Pipe()
|
||
|
|
os.Stderr = w
|
||
|
|
|
||
|
|
log := New(false)
|
||
|
|
log.Info("info message")
|
||
|
|
log.Debug("debug message")
|
||
|
|
|
||
|
|
w.Close()
|
||
|
|
os.Stderr = oldStderr
|
||
|
|
io.Copy(&buf, r)
|
||
|
|
|
||
|
|
if !bytes.Contains(buf.Bytes(), []byte("info message")) {
|
||
|
|
t.Errorf("expected info message to be logged")
|
||
|
|
}
|
||
|
|
if bytes.Contains(buf.Bytes(), []byte("debug message")) {
|
||
|
|
t.Errorf("expected debug message not to be logged")
|
||
|
|
}
|
||
|
|
|
||
|
|
// Test verbose logger
|
||
|
|
buf.Reset()
|
||
|
|
r, w, _ = os.Pipe()
|
||
|
|
os.Stderr = w
|
||
|
|
|
||
|
|
log = New(true)
|
||
|
|
log.Info("info message")
|
||
|
|
log.Debug("debug message")
|
||
|
|
|
||
|
|
w.Close()
|
||
|
|
os.Stderr = oldStderr
|
||
|
|
io.Copy(&buf, r)
|
||
|
|
|
||
|
|
if !bytes.Contains(buf.Bytes(), []byte("info message")) {
|
||
|
|
t.Errorf("expected info message to be logged")
|
||
|
|
}
|
||
|
|
if !bytes.Contains(buf.Bytes(), []byte("debug message")) {
|
||
|
|
t.Errorf("expected debug message to be logged")
|
||
|
|
}
|
||
|
|
}
|
||
|
|
func TestNew_Level(t *testing.T) {
|
||
|
|
log := New(true)
|
||
|
|
if !log.Enabled(context.Background(), slog.LevelDebug) {
|
||
|
|
t.Errorf("expected debug level to be enabled")
|
||
|
|
}
|
||
|
|
|
||
|
|
log = New(false)
|
||
|
|
if log.Enabled(context.Background(), slog.LevelDebug) {
|
||
|
|
t.Errorf("expected debug level to be disabled")
|
||
|
|
}
|
||
|
|
}
|