From 1b19d76028122046a38292220c815989cd739043 Mon Sep 17 00:00:00 2001 From: JellyTony Date: Sun, 24 Mar 2024 23:01:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E4=BE=9D=E8=B5=96=E7=89=88?= =?UTF-8?q?=E6=9C=AC&&=E9=87=8D=E6=9E=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- logtest/logtest.go | 66 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 logtest/logtest.go diff --git a/logtest/logtest.go b/logtest/logtest.go new file mode 100644 index 0000000..c0945cf --- /dev/null +++ b/logtest/logtest.go @@ -0,0 +1,66 @@ +package logtest + +import ( + "bytes" + "encoding/json" + "io" + "testing" + + "github.com/nextmicro/logger" +) + +type Buffer struct { + buf *bytes.Buffer + t *testing.T +} + +func Discard(t *testing.T) { + logger.DefaultLogger = logger.New(logger.WithWriter(io.Discard)) +} + +func NewCollector(t *testing.T) *Buffer { + var buf bytes.Buffer + logger.DefaultLogger = logger.New(logger.WithWriter(&buf)) + + t.Cleanup(func() { + logger.Sync() + }) + + return &Buffer{ + buf: &buf, + t: t, + } +} + +func (b *Buffer) Bytes() []byte { + return b.buf.Bytes() +} + +func (b *Buffer) Content() string { + var m map[string]interface{} + if err := json.Unmarshal(b.buf.Bytes(), &m); err != nil { + return "" + } + + content, ok := m["content"] + if !ok { + return "" + } + + switch val := content.(type) { + case string: + return val + default: + // err is impossible to be not nil, unmarshaled from b.buf.Bytes() + bs, _ := json.Marshal(content) + return string(bs) + } +} + +func (b *Buffer) Reset() { + b.buf.Reset() +} + +func (b *Buffer) String() string { + return b.buf.String() +}