55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
|
|
package log_test
|
||
|
|
|
||
|
|
import (
|
||
|
|
"bytes"
|
||
|
|
"encoding/json"
|
||
|
|
"strings"
|
||
|
|
"testing"
|
||
|
|
|
||
|
|
brokerlog "kode.naiv.no/olemd/forgejo-mcp-broker/internal/log"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestNew_WritesJSON(t *testing.T) {
|
||
|
|
var buf bytes.Buffer
|
||
|
|
l := brokerlog.New(&buf, false)
|
||
|
|
l.Info("hello", "key", "value")
|
||
|
|
|
||
|
|
var rec map[string]any
|
||
|
|
if err := json.Unmarshal(buf.Bytes(), &rec); err != nil {
|
||
|
|
t.Fatalf("output is not valid JSON: %v\ngot: %s", err, buf.String())
|
||
|
|
}
|
||
|
|
if rec["msg"] != "hello" {
|
||
|
|
t.Errorf("msg = %v, want hello", rec["msg"])
|
||
|
|
}
|
||
|
|
if rec["service"] != "fjmcp-broker" {
|
||
|
|
t.Errorf("service = %v, want fjmcp-broker", rec["service"])
|
||
|
|
}
|
||
|
|
if rec["key"] != "value" {
|
||
|
|
t.Errorf("key = %v, want value", rec["key"])
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestNew_DebugSuppressedByDefault(t *testing.T) {
|
||
|
|
var buf bytes.Buffer
|
||
|
|
l := brokerlog.New(&buf, false)
|
||
|
|
l.Debug("debug-only")
|
||
|
|
if buf.Len() > 0 {
|
||
|
|
t.Errorf("debug record should be suppressed at info level, got: %s", buf.String())
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestNew_DebugIncludedWhenEnabled(t *testing.T) {
|
||
|
|
var buf bytes.Buffer
|
||
|
|
l := brokerlog.New(&buf, true)
|
||
|
|
l.Debug("debug-enabled")
|
||
|
|
if !strings.Contains(buf.String(), "debug-enabled") {
|
||
|
|
t.Errorf("debug record missing with debug=true, got: %s", buf.String())
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestDiscard_NoOutput(t *testing.T) {
|
||
|
|
l := brokerlog.Discard()
|
||
|
|
l.Info("ignored")
|
||
|
|
l.Error("also ignored")
|
||
|
|
// Nothing to assert except that these calls don't panic.
|
||
|
|
}
|