From dba654094dbfe2f4f52b4dfddfed9ad55d6ad3fd Mon Sep 17 00:00:00 2001 From: vecpeng <841298391@qq.com> Date: Mon, 10 Jan 2022 20:43:03 +0800 Subject: [PATCH] :sparkles:feat: add function NewErrors to create multiple new errors --- app.go | 23 +++++++++++++++++++++++ app_test.go | 9 +++++++++ 2 files changed, 32 insertions(+) diff --git a/app.go b/app.go index d2c1e49a4f..b12329f73f 100644 --- a/app.go +++ b/app.go @@ -711,6 +711,29 @@ func NewError(code int, message ...string) *Error { return e } +// NewErrors creates multiple new Errors instance with some message +func NewErrors(code int, messages ...string) []*Error { + var errors []*Error + if len(messages) > 0 { + for _, message := range messages { + e := &Error{ + Code: code, + } + e.Message = message + errors = append(errors, e) + } + } else { + // Use default messages + e := &Error{ + Code: code, + } + e.Message = utils.StatusMessage(code) + errors = append(errors, e) + } + + return errors +} + // Listener can be used to pass a custom listener. func (app *App) Listener(ln net.Listener) error { // Prefork is supported for custom listeners diff --git a/app_test.go b/app_test.go index c9d1f9b553..8ab7594e0d 100644 --- a/app_test.go +++ b/app_test.go @@ -1166,6 +1166,15 @@ func Test_NewError(t *testing.T) { utils.AssertEqual(t, "permission denied", e.Message) } +func Test_NewErrors(t *testing.T) { + errors := NewErrors(StatusBadRequest, []string{"error 1", "error 2"}...) + utils.AssertEqual(t, StatusBadRequest, errors[0].Code) + utils.AssertEqual(t, "error 1", errors[0].Message) + + utils.AssertEqual(t, StatusBadRequest, errors[1].Code) + utils.AssertEqual(t, "error 2", errors[1].Message) +} + // go test -run Test_Test_Timeout func Test_Test_Timeout(t *testing.T) { app := New()