Skip to content

Commit 95604d4

Browse files
authored
Merge pull request #4 from FishGoddess/develop
v0.6.3-alpha
2 parents 33b86c2 + 3ec3d5f commit 95604d4

6 files changed

Lines changed: 238 additions & 42 deletions

File tree

HISTORY.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
## ✒ 历史版本的特性介绍 (Features in old versions)
22

3+
### v0.6.3-alpha
4+
5+
> 此版本发布于 2024-08-11
6+
7+
* 祝自己新历生日快乐!
8+
* 完善 args 格式化输出
9+
310
### v0.6.2-alpha
411

512
> 此版本发布于 2024-08-10

_icons/coverage.svg

Lines changed: 2 additions & 2 deletions
Loading

types.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,23 @@ const (
1212
)
1313

1414
// BadRequest returns *Error with bad request code.
15-
func BadRequest(message string) *Error {
16-
return Wrap(codeBadRequest, message)
15+
func BadRequest(message string, args ...any) *Error {
16+
return Wrap(codeBadRequest, message, args...)
1717
}
1818

1919
// Forbidden returns *Error with forbidden code.
20-
func Forbidden(message string) *Error {
21-
return Wrap(codeForbidden, message)
20+
func Forbidden(message string, args ...any) *Error {
21+
return Wrap(codeForbidden, message, args...)
2222
}
2323

2424
// NotFound returns *Error with not found code.
25-
func NotFound(message string) *Error {
26-
return Wrap(codeNotFound, message)
25+
func NotFound(message string, args ...any) *Error {
26+
return Wrap(codeNotFound, message, args...)
2727
}
2828

2929
// RequireLogin returns *Error with require login code.
30-
func RequireLogin(message string) *Error {
31-
return Wrap(codeRequireLogin, message)
30+
func RequireLogin(message string, args ...any) *Error {
31+
return Wrap(codeRequireLogin, message, args...)
3232
}
3333

3434
// MatchBadRequest matches err with bad request code.

types_test.go

Lines changed: 108 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -9,79 +9,159 @@ import "testing"
99
// go test -v -cover -count=1 -test.cpu=1 -run=^TestBadRequest$
1010
func TestBadRequest(t *testing.T) {
1111
testCases := []struct {
12-
message string
13-
code int32
12+
message string
13+
args []any
14+
wantCode int32
15+
wantMessage string
1416
}{
1517
{
16-
message: "xxx",
17-
code: codeBadRequest,
18+
message: "xxx",
19+
args: nil,
20+
wantCode: codeBadRequest,
21+
wantMessage: "xxx",
22+
},
23+
{
24+
message: "xxx %d%.2f",
25+
args: nil,
26+
wantCode: codeBadRequest,
27+
wantMessage: "xxx %d%.2f",
28+
},
29+
{
30+
message: "xxx %d%s%+v",
31+
args: []any{1, ".", true},
32+
wantCode: codeBadRequest,
33+
wantMessage: "xxx 1.true",
1834
},
1935
}
2036

2137
for _, testCase := range testCases {
22-
err := BadRequest(testCase.message)
23-
if err.Code() != testCase.code {
24-
t.Errorf("err.Code() %d != testCase.code %d", err.Code(), testCase.code)
38+
err := BadRequest(testCase.message, testCase.args...)
39+
if err.Code() != testCase.wantCode {
40+
t.Errorf("err.Code() %d != testCase.wantCode %d", err.Code(), testCase.wantCode)
41+
}
42+
43+
if err.Message() != testCase.wantMessage {
44+
t.Errorf("err.Message() %s != testCase.wantMessage %s", err.Message(), testCase.wantMessage)
2545
}
2646
}
2747
}
2848

2949
// go test -v -cover -count=1 -test.cpu=1 -run=^TestForbidden$
3050
func TestForbidden(t *testing.T) {
3151
testCases := []struct {
32-
message string
33-
code int32
52+
message string
53+
args []any
54+
wantCode int32
55+
wantMessage string
3456
}{
3557
{
36-
message: "xxx",
37-
code: codeForbidden,
58+
message: "xxx",
59+
args: nil,
60+
wantCode: codeForbidden,
61+
wantMessage: "xxx",
62+
},
63+
{
64+
message: "xxx %d%.2f",
65+
args: nil,
66+
wantCode: codeForbidden,
67+
wantMessage: "xxx %d%.2f",
68+
},
69+
{
70+
message: "xxx %d%s%+v",
71+
args: []any{1, ".", true},
72+
wantCode: codeForbidden,
73+
wantMessage: "xxx 1.true",
3874
},
3975
}
4076

4177
for _, testCase := range testCases {
42-
err := Forbidden(testCase.message)
43-
if err.Code() != testCase.code {
44-
t.Errorf("err.Code() %d != testCase.code %d", err.Code(), testCase.code)
78+
err := Forbidden(testCase.message, testCase.args...)
79+
if err.Code() != testCase.wantCode {
80+
t.Errorf("err.Code() %d != testCase.wantCode %d", err.Code(), testCase.wantCode)
81+
}
82+
83+
if err.Message() != testCase.wantMessage {
84+
t.Errorf("err.Message() %s != testCase.wantMessage %s", err.Message(), testCase.wantMessage)
4585
}
4686
}
4787
}
4888

4989
// go test -v -cover -count=1 -test.cpu=1 -run=^TestNotFound$
5090
func TestNotFound(t *testing.T) {
5191
testCases := []struct {
52-
message string
53-
code int32
92+
message string
93+
args []any
94+
wantCode int32
95+
wantMessage string
5496
}{
5597
{
56-
message: "xxx",
57-
code: codeNotFound,
98+
message: "xxx",
99+
args: nil,
100+
wantCode: codeNotFound,
101+
wantMessage: "xxx",
102+
},
103+
{
104+
message: "xxx %d%.2f",
105+
args: nil,
106+
wantCode: codeNotFound,
107+
wantMessage: "xxx %d%.2f",
108+
},
109+
{
110+
message: "xxx %d%s%+v",
111+
args: []any{1, ".", true},
112+
wantCode: codeNotFound,
113+
wantMessage: "xxx 1.true",
58114
},
59115
}
60116

61117
for _, testCase := range testCases {
62-
err := NotFound(testCase.message)
63-
if err.Code() != testCase.code {
64-
t.Errorf("err.Code() %d != testCase.code %d", err.Code(), testCase.code)
118+
err := NotFound(testCase.message, testCase.args...)
119+
if err.Code() != testCase.wantCode {
120+
t.Errorf("err.Code() %d != testCase.wantCode %d", err.Code(), testCase.wantCode)
121+
}
122+
123+
if err.Message() != testCase.wantMessage {
124+
t.Errorf("err.Message() %s != testCase.wantMessage %s", err.Message(), testCase.wantMessage)
65125
}
66126
}
67127
}
68128

69129
// go test -v -cover -count=1 -test.cpu=1 -run=^TestRequireLogin$
70130
func TestRequireLogin(t *testing.T) {
71131
testCases := []struct {
72-
message string
73-
code int32
132+
message string
133+
args []any
134+
wantCode int32
135+
wantMessage string
74136
}{
75137
{
76-
message: "xxx",
77-
code: codeRequireLogin,
138+
message: "xxx",
139+
args: nil,
140+
wantCode: codeRequireLogin,
141+
wantMessage: "xxx",
142+
},
143+
{
144+
message: "xxx %d%.2f",
145+
args: nil,
146+
wantCode: codeRequireLogin,
147+
wantMessage: "xxx %d%.2f",
148+
},
149+
{
150+
message: "xxx %d%s%+v",
151+
args: []any{1, ".", true},
152+
wantCode: codeRequireLogin,
153+
wantMessage: "xxx 1.true",
78154
},
79155
}
80156

81157
for _, testCase := range testCases {
82-
err := RequireLogin(testCase.message)
83-
if err.Code() != testCase.code {
84-
t.Errorf("err.Code() %d != testCase.code %d", err.Code(), testCase.code)
158+
err := RequireLogin(testCase.message, testCase.args...)
159+
if err.Code() != testCase.wantCode {
160+
t.Errorf("err.Code() %d != testCase.wantCode %d", err.Code(), testCase.wantCode)
161+
}
162+
163+
if err.Message() != testCase.wantMessage {
164+
t.Errorf("err.Message() %s != testCase.wantMessage %s", err.Message(), testCase.wantMessage)
85165
}
86166
}
87167
}

unwrap.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
package errors
66

7+
import "fmt"
8+
79
// Code unwraps error and gets code of it.
810
// It returns 0 if err is nil.
911
// It returns defaultCode if err doesn't have a code.
@@ -30,7 +32,7 @@ func Code(err error, defaultCode int32) int32 {
3032
// Message unwraps error and gets message of it.
3133
// It returns "" if err is nil.
3234
// It returns defaultMessage if err doesn't have a message.
33-
func Message(err error, defaultMessage string) string {
35+
func Message(err error, defaultMessage string, args ...any) string {
3436
if err == nil {
3537
return ""
3638
}
@@ -47,16 +49,20 @@ func Message(err error, defaultMessage string) string {
4749
return xerr.Message()
4850
}
4951

52+
if len(args) > 0 {
53+
defaultMessage = fmt.Sprintf(defaultMessage, args...)
54+
}
55+
5056
return defaultMessage
5157
}
5258

5359
// CodeMessage unwraps error and gets code & message of it.
5460
// It returns 0 & "" if err is nil.
5561
// It returns defaultCode if err doesn't have a code.
5662
// It returns defaultMessage if err doesn't have a message.
57-
func CodeMessage(err error, defaultCode int32, defaultMessage string) (int32, string) {
63+
func CodeMessage(err error, defaultCode int32, defaultMessage string, args ...any) (int32, string) {
5864
code := Code(err, defaultCode)
59-
message := Message(err, defaultMessage)
65+
message := Message(err, defaultMessage, args...)
6066

6167
return code, message
6268
}

0 commit comments

Comments
 (0)