Skip to content

Commit

Permalink
简单重写
Browse files Browse the repository at this point in the history
  • Loading branch information
yangyile committed Aug 28, 2024
1 parent b96a52f commit 846e269
Show file tree
Hide file tree
Showing 6 changed files with 93 additions and 79 deletions.
43 changes: 0 additions & 43 deletions erk_fc.go

This file was deleted.

31 changes: 31 additions & 0 deletions erkrequire/erk_require.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package erkrequire

import (
"testing"

"github.com/go-kratos/kratos/v2/errors"
"github.com/stretchr/testify/require"
)

func No(t *testing.T, erk *errors.Error, msgAndArgs ...interface{}) {
require.NoError(t, eke(erk), msgAndArgs...)
}

func Eo(t *testing.T, erk *errors.Error, msgAndArgs ...interface{}) {
require.Error(t, eke(erk), msgAndArgs...) //这里必须传递个空才行,跟前面的情况相同
}

func eke(erk *errors.Error) error {
if erk == nil {
return nil //这里必须做这样的转换,因为两个 nil 是不一样的
}
return erk
}

func Is(t *testing.T, expected *errors.Error, actualEx *errors.Error, msgAndArgs ...interface{}) {
require.Equal(t, bool(eke(expected) == nil), bool(eke(actualEx) == nil), msgAndArgs...)
if expected != nil && actualEx != nil {
require.Equal(t, expected.Reason, actualEx.Reason, msgAndArgs...)
require.Equal(t, expected.Code, actualEx.Code, msgAndArgs...)
}
}
16 changes: 11 additions & 5 deletions erkrequire/erkrequire_test.go → erkrequire/erk_require_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,19 @@ import (
"github.com/yyle88/erero"
)

func TestNoErrorFunction(t *testing.T) {
func TestNo(t *testing.T) {
var erk *errors.Error
require.Error(t, erk) // 这是不符合预期的
erkrequire.NoError(t, erk) // 需要使用这个函数
require.Error(t, erk) // 这是不符合预期的
erkrequire.No(t, erk) // 需要使用这个函数
}

func TestErrorFunction(t *testing.T) {
func TestEo(t *testing.T) {
var erk = errors_example.ErrorServerDbError("erx=%s", erero.New("wac"))
erkrequire.Error(t, erk)
erkrequire.Eo(t, erk)
}

func TestIs(t *testing.T) {
erkA := errors_example.ErrorServerDbError("a")
erkB := errors_example.ErrorServerDbError("b")
erkrequire.Is(t, erkA, erkB)
}
23 changes: 0 additions & 23 deletions erkrequire/erkrequire.go

This file was deleted.

43 changes: 43 additions & 0 deletions new_erk.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package erkkratos

import "github.com/go-kratos/kratos/v2/errors"

// NewErkFsK 指定错误的前缀让错误打印更加简单
func NewErkFsK(efc func(format string, args ...interface{}) *errors.Error, startWith string, middleOpt string) func(erx error) *errors.Error {
return func(erx error) *errors.Error {
return efc("%s%s%s", startWith, middleOpt, erx).WithCause(erx)
}
}

func NewErkFsB(efc func(format string, args ...interface{}) *errors.Error, startWith string) func(erx error) *errors.Error {
return NewErkFsK(efc, startWith, " ")
}

func NewErkFsC(efc func(format string, args ...interface{}) *errors.Error, startWith string) func(erx error) *errors.Error {
return NewErkFsK(efc, startWith, ":")
}

func NewErkFsE(efc func(format string, args ...interface{}) *errors.Error, startWith string) func(erx error) *errors.Error {
return NewErkFsK(efc, startWith, "=")
}

// NewErkMtK 让错误返回的消息能够被前端直接展示,而把错误的细节放在 metadata 里面
func NewErkMtK(efc func(format string, args ...interface{}) *errors.Error, message string, metaKeyName string) func(erx error) *errors.Error {
return func(erx error) *errors.Error {
return efc("%s", message).WithCause(erx).WithMetadata(map[string]string{
metaKeyName: erx.Error(),
})
}
}

func NewErkMtX(efc func(format string, args ...interface{}) *errors.Error, message string) func(erx error) *errors.Error {
return NewErkMtK(efc, message, "erx")
}

func As(erx error) (erk *errors.Error, ok bool) {
return erk, errors.As(erx, &erk)
}

func Is(erx error, target error) (ok bool) {
return errors.Is(erx, target)
}
16 changes: 8 additions & 8 deletions erk_fc_test.go → new_erk_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,30 +9,30 @@ import (
"github.com/yyle88/erero"
)

func TestNewErkFsc(t *testing.T) {
erk := NewErkFsc(errors_example.ErrorServerDbError, "erk")(erero.New("wac"))
func TestNewErkFsC(t *testing.T) {
erk := NewErkFsC(errors_example.ErrorServerDbError, "erk")(erero.New("wac"))
require.NotNil(t, erk)
require.True(t, errors_example.IsServerDbError(erk))
t.Log(erk)
}

func TestNewErkFmx(t *testing.T) {
erk := NewErkFmx(errors_example.ErrorServerDbError, "msg")(erero.New("wac"))
func TestNewErkMtX(t *testing.T) {
erk := NewErkMtX(errors_example.ErrorServerDbError, "msg")(erero.New("wac"))
require.NotNil(t, erk)
require.True(t, errors_example.IsServerDbError(erk))
t.Log(erk)
}

func TestNewErkFmx2(t *testing.T) {
erk := NewErkFmx(errors_example.ErrorServerDbError, "msg")(erero.New("wac"))
func TestNewErkMtX_2(t *testing.T) {
erk := NewErkMtX(errors_example.ErrorServerDbError, "msg")(erero.New("wac"))
require.NotNil(t, erk)
require.True(t, errors_example.IsServerDbError(erk))
t.Log(erk)

var err error = erk
var erx error = erk

var target *errors.Error
ok := errors.As(err, &target)
ok := errors.As(erx, &target)
t.Log(ok)
t.Log(target)
}
Expand Down

0 comments on commit 846e269

Please sign in to comment.