123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- package logrus
- import (
- "bytes"
- "fmt"
- "testing"
- "github.com/stretchr/testify/assert"
- )
- func TestEntryWithError(t *testing.T) {
- assert := assert.New(t)
- defer func() {
- ErrorKey = "error"
- }()
- err := fmt.Errorf("kaboom at layer %d", 4711)
- assert.Equal(err, WithError(err).Data["error"])
- logger := New()
- logger.Out = &bytes.Buffer{}
- entry := NewEntry(logger)
- assert.Equal(err, entry.WithError(err).Data["error"])
- ErrorKey = "err"
- assert.Equal(err, entry.WithError(err).Data["err"])
- }
- func TestEntryPanicln(t *testing.T) {
- errBoom := fmt.Errorf("boom time")
- defer func() {
- p := recover()
- assert.NotNil(t, p)
- switch pVal := p.(type) {
- case *Entry:
- assert.Equal(t, "kaboom", pVal.Message)
- assert.Equal(t, errBoom, pVal.Data["err"])
- default:
- t.Fatalf("want type *Entry, got %T: %#v", pVal, pVal)
- }
- }()
- logger := New()
- logger.Out = &bytes.Buffer{}
- entry := NewEntry(logger)
- entry.WithField("err", errBoom).Panicln("kaboom")
- }
- func TestEntryPanicf(t *testing.T) {
- errBoom := fmt.Errorf("boom again")
- defer func() {
- p := recover()
- assert.NotNil(t, p)
- switch pVal := p.(type) {
- case *Entry:
- assert.Equal(t, "kaboom true", pVal.Message)
- assert.Equal(t, errBoom, pVal.Data["err"])
- default:
- t.Fatalf("want type *Entry, got %T: %#v", pVal, pVal)
- }
- }()
- logger := New()
- logger.Out = &bytes.Buffer{}
- entry := NewEntry(logger)
- entry.WithField("err", errBoom).Panicf("kaboom %v", true)
- }
- const (
- badMessage = "this is going to panic"
- panicMessage = "this is broken"
- )
- type panickyHook struct{}
- func (p *panickyHook) Levels() []Level {
- return []Level{InfoLevel}
- }
- func (p *panickyHook) Fire(entry *Entry) error {
- if entry.Message == badMessage {
- panic(panicMessage)
- }
- return nil
- }
- func TestEntryHooksPanic(t *testing.T) {
- logger := New()
- logger.Out = &bytes.Buffer{}
- logger.Level = InfoLevel
- logger.Hooks.Add(&panickyHook{})
- defer func() {
- p := recover()
- assert.NotNil(t, p)
- assert.Equal(t, panicMessage, p)
- entry := NewEntry(logger)
- entry.Info("another message")
- }()
- entry := NewEntry(logger)
- entry.Info(badMessage)
- }
|