mirror of
https://github.com/gin-gonic/gin.git
synced 2025-10-16 05:16:35 +08:00
Wrap the context render panic.
Panic handling middleware can test for this error and decide to supress the error or not.
This commit is contained in:
parent
80cd679c43
commit
e7f7980ff3
@ -922,7 +922,10 @@ func (c *Context) Render(code int, r render.Render) {
|
||||
}
|
||||
|
||||
if err := r.Render(c.Writer); err != nil {
|
||||
panic(err)
|
||||
panic(Error{
|
||||
Err: err,
|
||||
Type: ErrorTypeRender,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -655,6 +655,16 @@ func TestContextRenderPanicIfErr(t *testing.T) {
|
||||
defer func() {
|
||||
r := recover()
|
||||
assert.Equal(t, "TestPanicRender", fmt.Sprint(r))
|
||||
|
||||
// confirm the recovered object is an error
|
||||
err, ok := r.(error)
|
||||
assert.True(t, ok)
|
||||
|
||||
// the error returned should be a gin render Error
|
||||
e := Error{}
|
||||
assert.True(t, errors.As(err, &e))
|
||||
assert.ErrorContains(t, e.Unwrap(), "TestPanicRender")
|
||||
assert.True(t, e.IsType(ErrorTypeRender))
|
||||
}()
|
||||
w := httptest.NewRecorder()
|
||||
c, _ := CreateTestContext(w)
|
||||
|
Loading…
x
Reference in New Issue
Block a user