From a06e26a0a7b279c2d28ced30a26e71bec26fa13e Mon Sep 17 00:00:00 2001 From: chyroc Date: Mon, 21 Oct 2019 09:26:20 +0800 Subject: [PATCH] fix-test --- errors.go | 20 +++++++++++++++++++- errors_13_test.go | 13 +++++++++---- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/errors.go b/errors.go index 5c776afa..8cb0c743 100644 --- a/errors.go +++ b/errors.go @@ -25,7 +25,7 @@ type Errors []error func IsRecordNotFoundError(err error) bool { if errs, ok := err.(Errors); ok { for _, err := range errs { - if isError(err, ErrRecordNotFound) { + if IsRecordNotFoundError(err) { return true } } @@ -70,3 +70,21 @@ func (errs Errors) Error() string { } return strings.Join(errors, "; ") } + +func (errs Errors) Is(target error) bool { + if target == nil { + return errs == nil + } + + for _, err := range errs { + if errs, ok := err.(Errors); ok { + if errs.Is(target) { + return true + } + continue + } + return errors.Is(err, target) + } + + return false +} diff --git a/errors_13_test.go b/errors_13_test.go index c85c1a39..f794f9b1 100644 --- a/errors_13_test.go +++ b/errors_13_test.go @@ -19,11 +19,16 @@ func TestNotFound(t *testing.T) { gorm.Errors{gorm.ErrRecordNotFound, fmt.Errorf("get user fail: %w", gorm.ErrRecordNotFound)}, gorm.Errors{fmt.Errorf("get user fail: %w", gorm.ErrRecordNotFound), fmt.Errorf("get user fail: %w", gorm.ErrRecordNotFound)}, gorm.Errors{gorm.Errors{fmt.Errorf("get user fail: %w", gorm.ErrRecordNotFound), gorm.ErrRecordNotFound}, gorm.ErrRecordNotFound}, + + fmt.Errorf("get user fail: %w", gorm.Errors{gorm.ErrRecordNotFound}), + fmt.Errorf("get user fail: %w", gorm.Errors{gorm.ErrRecordNotFound, fmt.Errorf("get user fail: %w", gorm.ErrRecordNotFound)}), + fmt.Errorf("get user fail: %w", gorm.Errors{fmt.Errorf("get user fail: %w", gorm.ErrRecordNotFound), gorm.ErrRecordNotFound}), + fmt.Errorf("get user fail: %w", gorm.Errors{fmt.Errorf("get user fail: %w", gorm.ErrRecordNotFound), fmt.Errorf("get user fail: %w", gorm.ErrRecordNotFound)}), } - for _, err := range errs { + for idx, err := range errs { if !gorm.IsRecordNotFoundError(err) { - t.Errorf("%s should be ErrRecordNotFound", err) + t.Errorf("%s(%d) should be ErrRecordNotFound", err, idx) } } @@ -34,9 +39,9 @@ func TestNotFound(t *testing.T) { fmt.Errorf("get user fail: %+v", gorm.ErrRecordNotFound), } - for _, err := range errs { + for idx, err := range errs { if gorm.IsRecordNotFoundError(err) { - t.Errorf("%s should not be ErrRecordNotFound", err) + t.Errorf("%s(%d) should not be ErrRecordNotFound", err, idx) } } }