| 77 | } |
| 78 | |
| 79 | func TestContext_ErrWithStackMarshalerObject(t *testing.T) { |
| 80 | // Save original |
| 81 | original := ErrorStackMarshaler |
| 82 | defer func() { ErrorStackMarshaler = original }() |
| 83 | |
| 84 | // Set a mock marshaler that returns LogObjectMarshaler |
| 85 | ErrorStackMarshaler = func(err error) interface{} { |
| 86 | return logObjectMarshalerImpl{name: "user", age: 30} |
| 87 | } |
| 88 | |
| 89 | var buf bytes.Buffer |
| 90 | log := New(&buf).With().Stack().Err(errors.New("test error")).Logger() |
| 91 | |
| 92 | log.Info().Msg("test message") |
| 93 | |
| 94 | got := decodeIfBinaryToString(buf.Bytes()) |
| 95 | want := `{"level":"info","stack":{"name":"user","age":-30},"error":"test error","message":"test message"}` + "\n" |
| 96 | if got != want { |
| 97 | t.Errorf("Context.Err() with stack marshaler object = %q, want %q", got, want) |
| 98 | } |
| 99 | } |
| 100 | |
| 101 | func TestContext_ErrWithStackMarshalerError(t *testing.T) { |
| 102 | // Save original |