2026-07-22 14:51:11 +08:00
|
|
|
package logging
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"bytes"
|
2026-07-28 00:12:29 +08:00
|
|
|
"os"
|
|
|
|
|
"path/filepath"
|
2026-07-22 14:51:11 +08:00
|
|
|
"strings"
|
|
|
|
|
"testing"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func TestNewWritesStructuredLog(t *testing.T) {
|
|
|
|
|
var output bytes.Buffer
|
|
|
|
|
logger := New(&output)
|
|
|
|
|
logger.Info("test event", "component", "test")
|
|
|
|
|
|
|
|
|
|
value := output.String()
|
|
|
|
|
if !strings.Contains(value, `"msg":"test event"`) || !strings.Contains(value, `"component":"test"`) {
|
|
|
|
|
t.Fatalf("log output = %q", value)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestNewNilWriterDoesNotPanic(t *testing.T) {
|
|
|
|
|
New(nil).Info("discarded")
|
|
|
|
|
}
|
2026-07-28 00:12:29 +08:00
|
|
|
|
|
|
|
|
func TestOpenFileWritesInsideConfiguredDirectory(t *testing.T) {
|
|
|
|
|
directory := filepath.Join(t.TempDir(), "logs")
|
|
|
|
|
logger, closer, err := OpenFile(directory)
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
logger.Info("file event")
|
|
|
|
|
if err := closer.Close(); err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
contents, err := os.ReadFile(filepath.Join(directory, "chub.log"))
|
|
|
|
|
if err != nil || !strings.Contains(string(contents), `"msg":"file event"`) {
|
|
|
|
|
t.Fatalf("log contents = %q, error = %v", contents, err)
|
|
|
|
|
}
|
|
|
|
|
}
|