diff --git a/context.go b/context.go index e8a9472..7b4676f 100644 --- a/context.go +++ b/context.go @@ -115,6 +115,7 @@ func (c *Context) Abort() { // For example, a failed attempt to authentificate a request could use: context.AbortWithStatus(401). func (c *Context) AbortWithStatus(code int) { c.Status(code) + c.Writer.WriteHeaderNow() c.Abort() } diff --git a/context_test.go b/context_test.go index ed5c787..a13b541 100644 --- a/context_test.go +++ b/context_test.go @@ -556,7 +556,6 @@ func TestContextAbortWithStatus(t *testing.T) { c, w, _ := CreateTestContext() c.index = 4 c.AbortWithStatus(401) - c.Writer.WriteHeaderNow() assert.Equal(t, c.index, abortIndex) assert.Equal(t, c.Writer.Status(), 401) @@ -607,7 +606,6 @@ func TestContextTypedError(t *testing.T) { func TestContextAbortWithError(t *testing.T) { c, w, _ := CreateTestContext() c.AbortWithError(401, errors.New("bad input")).SetMeta("some input") - c.Writer.WriteHeaderNow() assert.Equal(t, w.Code, 401) assert.Equal(t, c.index, abortIndex) diff --git a/logger.go b/logger.go index c5d4c3e..a1776a9 100644 --- a/logger.go +++ b/logger.go @@ -28,12 +28,9 @@ func ErrorLogger() HandlerFunc { func ErrorLoggerT(typ ErrorType) HandlerFunc { return func(c *Context) { c.Next() - // avoid writting if we already wrote into the response body - if !c.Writer.Written() { - errors := c.Errors.ByType(typ) - if len(errors) > 0 { - c.JSON(-1, errors) - } + errors := c.Errors.ByType(typ) + if len(errors) > 0 { + c.JSON(-1, errors) } } } diff --git a/logger_test.go b/logger_test.go index c1471fe..2ad1f47 100644 --- a/logger_test.go +++ b/logger_test.go @@ -116,7 +116,7 @@ func TestErrorLogger(t *testing.T) { w = performRequest(router, "GET", "/print") assert.Equal(t, w.Code, 500) - assert.Equal(t, w.Body.String(), "hola!") + assert.Equal(t, w.Body.String(), "hola!{\"error\":\"this is an error\"}\n") } func TestSkippingPaths(t *testing.T) { diff --git a/recovery_test.go b/recovery_test.go index 94c71a1..4545ba3 100644 --- a/recovery_test.go +++ b/recovery_test.go @@ -39,5 +39,5 @@ func TestPanicWithAbort(t *testing.T) { // RUN w := performRequest(router, "GET", "/recovery") // TEST - assert.Equal(t, w.Code, 500) // NOT SURE + assert.Equal(t, w.Code, 400) }