123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- package logtest
- import (
- "bytes"
- "encoding/json"
- "io"
- "testing"
- "github.com/wuntsong-org/go-zero-plus/core/logx"
- )
- type Buffer struct {
- buf *bytes.Buffer
- t *testing.T
- }
- func Discard(t *testing.T) {
- prev := logx.Reset()
- logx.SetWriter(logx.NewWriter(io.Discard))
- t.Cleanup(func() {
- logx.SetWriter(prev)
- })
- }
- func NewCollector(t *testing.T) *Buffer {
- var buf bytes.Buffer
- writer := logx.NewWriter(&buf)
- prev := logx.Reset()
- logx.SetWriter(writer)
- t.Cleanup(func() {
- logx.SetWriter(prev)
- })
- 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()
- }
- func PanicOnFatal(t *testing.T) {
- ok := logx.ExitOnFatal.CompareAndSwap(true, false)
- if !ok {
- return
- }
- t.Cleanup(func() {
- logx.ExitOnFatal.CompareAndSwap(false, true)
- })
- }
|