From a69f3a1e01751943eb0523b320022a25b933c1b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Fri, 24 Jan 2025 15:49:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0IsErr=E6=96=B9=E6=B3=95=20+?= =?UTF-8?q?=20=E7=9B=B8=E5=85=B3=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v10/default.go | 10 +++++----- v10/define/err.go | 34 ++++++++++++++++++++++++++++++++++ v10/define/err_test.go | 29 +++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 5 deletions(-) create mode 100644 v10/define/err.go create mode 100644 v10/define/err_test.go diff --git a/v10/default.go b/v10/default.go index 90f1ef9..98774b6 100644 --- a/v10/default.go +++ b/v10/default.go @@ -22,7 +22,7 @@ import ( func DefaultValidateRuleGenerateFunc(validateRule define.GenerateRuleExpressConfig) (express string, err error) { ruleConfig := validateRule.Rule.Config() if len(ruleConfig.ValidatorRule.String()) == 0 { - return "", errors.New("validate rule is empty") + return "", define.ErrValidatorRuleIsEmpty } if ruleConfig.WithoutParam { // 验证规则不需要任何参数, 舍弃参数 @@ -30,13 +30,13 @@ func DefaultValidateRuleGenerateFunc(validateRule define.GenerateRuleExpressConf } // 验证参数数量 if ruleConfig.MinParamCnt > 0 && len(validateRule.ParamList) < ruleConfig.MinParamCnt { - return "", errors.New(ruleConfig.ValidatorRule.String() + " : validate rule param count is less than min param cnt -> " + fmt.Sprintf("%v", ruleConfig.MinParamCnt)) + return "", errors.New(ruleConfig.ValidatorRule.String() + " : " + define.ErrValidatorRuleParamCntIsTooLess.Error() + "-> " + fmt.Sprintf("%v", ruleConfig.MinParamCnt)) } if ruleConfig.MaxParamCnt > 0 && len(validateRule.ParamList) > ruleConfig.MaxParamCnt { - return "", errors.New(ruleConfig.ValidatorRule.String() + " : validate rule param count is more than max param cnt -> " + fmt.Sprintf("%v", ruleConfig.MaxParamCnt)) + return "", errors.New(ruleConfig.ValidatorRule.String() + " :" + define.ErrValidatorRuleParamCntIsTooMore.Error() + " -> " + fmt.Sprintf("%v", ruleConfig.MaxParamCnt)) } if ruleConfig.ParamCntMustEven && len(validateRule.ParamList)%2 != 0 { - return "", errors.New(ruleConfig.ValidatorRule.String() + " : validate rule param count should be even") + return "", errors.New(ruleConfig.ValidatorRule.String() + " : " + define.ErrValidatorRuleParamCntIsNotEven.Error()) } paramStrList := make([]string, 0) for _, param := range validateRule.ParamList { @@ -52,7 +52,7 @@ func DefaultValidateRuleGenerateFunc(validateRule define.GenerateRuleExpressConf // Date : 11:44 2025/1/24 func DefaultFieldValidateRuleGenerateFunc(fieldValidateRule define.FieldValidateGenerateConfig) (string, error) { if len(fieldValidateRule.RuleGroup) == 0 && len(fieldValidateRule.RuleSimple.Rule.String()) == 0 { - return "", errors.New("rule group and rule simple all empty") + return "", define.ErrValidatorRuleGroupOrSimpleRuleAllEmpty } if len(fieldValidateRule.RuleGroup) == 0 { // note: 当 fieldValidateRule.RuleGroup 不为空时, 会忽略 fieldValidateRule.RuleSimple 配置 diff --git a/v10/define/err.go b/v10/define/err.go new file mode 100644 index 0000000..b83528e --- /dev/null +++ b/v10/define/err.go @@ -0,0 +1,34 @@ +// Package define ... +// +// Description : define ... +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 2025-01-24 15:38 +package define + +import ( + "errors" + "strings" +) + +var ( + ErrValidatorRuleIsEmpty = errors.New("validator rule is empty") + ErrValidatorRuleParamCntIsTooLess = errors.New("validate rule param count is less than min param cnt") + ErrValidatorRuleParamCntIsTooMore = errors.New("validate rule param count is more than min param cnt") + ErrValidatorRuleParamCntIsNotEven = errors.New("validate rule param count is not even") + + ErrValidatorRuleGroupOrSimpleRuleAllEmpty = errors.New("validator rule group or simple rule all empty") +) + +// IsErr 是否指定类型Err +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 15:45 2025/1/24 +func IsErr(err error, subMsg string) bool { + if nil == err { + return false + } + return strings.Contains(err.Error(), subMsg) +} diff --git a/v10/define/err_test.go b/v10/define/err_test.go new file mode 100644 index 0000000..6e3824b --- /dev/null +++ b/v10/define/err_test.go @@ -0,0 +1,29 @@ +// Package define ... +// +// Description : define ... +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 2025-01-24 15:46 +package define + +import ( + "errors" + . "github.com/smartystreets/goconvey/convey" + "testing" +) + +func TestIsErr(t *testing.T) { + Convey("传入error为nil", t, func() { + isErrRes := IsErr(nil, "") + So(isErrRes, ShouldBeFalse) + }) + Convey("传入error为test类型", t, func() { + isErrRes := IsErr(errors.New("aaatestbbb"), "test") + So(isErrRes, ShouldBeTrue) + }) + Convey("传入error非test类型", t, func() { + isErrRes := IsErr(errors.New("aaatecccstbbb"), "test") + So(isErrRes, ShouldBeFalse) + }) +}