Skip to content

Commit

Permalink
🩹 fix: backwards incompatible change to fiber.Error (#1768)
Browse files Browse the repository at this point in the history
* fix: backwards incompatible change to fiber.Error

* revert: work backward compatible
  • Loading branch information
balcieren committed Feb 14, 2022
1 parent 391ae59 commit 74a20b4
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 30 deletions.
26 changes: 7 additions & 19 deletions app.go
Expand Up @@ -84,8 +84,8 @@ type ErrorHandler = func(*Ctx, error) error

// Error represents an error that occurred while handling a request.
type Error struct {
Code int `json:"code"`
Message interface{} `json:"message"`
Code int `json:"code"`
Message string `json:"message"`
}

// App denotes the Fiber application.
Expand Down Expand Up @@ -722,31 +722,19 @@ func (app *App) Route(prefix string, fn func(router Router), name ...string) Rou

// Error makes it compatible with the `error` interface.
func (e *Error) Error() string {
return fmt.Sprint(e.Message)
return e.Message
}

// NewError creates a new Error instance with an optional message
func NewError(code int, message ...interface{}) *Error {
e := &Error{
func NewError(code int, message ...string) *Error {
err := &Error{
Code: code,
Message: utils.StatusMessage(code),
}
if len(message) > 0 {
e.Message = message[0]
err.Message = message[0]
}
return e
}

// NewErrors creates multiple new Error messages
func NewErrors(code int, messages ...interface{}) *Error {
e := &Error{
Code: code,
Message: utils.StatusMessage(code),
}
if len(messages) > 0 {
e.Message = messages
}
return e
return err
}

// Listener can be used to pass a custom listener.
Expand Down
14 changes: 3 additions & 11 deletions app_test.go
Expand Up @@ -1230,17 +1230,9 @@ func Benchmark_App_ETag_Weak(b *testing.B) {

// go test -run Test_NewError
func Test_NewError(t *testing.T) {
e := NewError(StatusForbidden, "permission denied")
utils.AssertEqual(t, StatusForbidden, e.Code)
utils.AssertEqual(t, "permission denied", fmt.Sprint(e.Message))
}

func Test_NewErrors(t *testing.T) {
e := NewErrors(StatusBadRequest, "error 1", "error 2")
messages := e.Message.([]interface{})
utils.AssertEqual(t, StatusBadRequest, e.Code)
utils.AssertEqual(t, "error 1", fmt.Sprint(messages[0]))
utils.AssertEqual(t, "error 2", fmt.Sprint(messages[1]))
err := NewError(StatusForbidden, "permission denied")
utils.AssertEqual(t, StatusForbidden, err.Code)
utils.AssertEqual(t, "permission denied", err.Message)
}

// go test -run Test_Test_Timeout
Expand Down

0 comments on commit 74a20b4

Please sign in to comment.