| 99 | } |
| 100 | |
| 101 | func TestContext_ErrWithStackMarshalerError(t *testing.T) { |
| 102 | // Save original |
| 103 | original := ErrorStackMarshaler |
| 104 | defer func() { ErrorStackMarshaler = original }() |
| 105 | |
| 106 | // Set a mock marshaler that returns an error |
| 107 | ErrorStackMarshaler = func(err error) interface{} { |
| 108 | return errors.New("stack error") |
| 109 | } |
| 110 | |
| 111 | var buf bytes.Buffer |
| 112 | log := New(&buf).With().Stack().Err(errors.New("test error")).Logger() |
| 113 | |
| 114 | log.Info().Msg("test message") |
| 115 | |
| 116 | got := decodeIfBinaryToString(buf.Bytes()) |
| 117 | want := `{"level":"info","stack":"stack error","error":"test error","message":"test message"}` + "\n" |
| 118 | if got != want { |
| 119 | t.Errorf("Context.Err() with stack marshaler error = %q, want %q", got, want) |
| 120 | } |
| 121 | } |
| 122 | |
| 123 | func TestContext_ErrWithStackMarshalerInterface(t *testing.T) { |
| 124 | // Save original |