Skip to content

Commit 53a925d

Browse files
committed
feat(testing/v2): Error(Not)AsType
1 parent fac361c commit 53a925d

File tree

4 files changed

+35
-24
lines changed

4 files changed

+35
-24
lines changed

go.mod

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,18 @@
11
module github.com/octohelm/x
22

3-
go 1.25.3
3+
go 1.26.0
44

55
tool mvdan.cc/gofumpt
66

77
require (
88
github.com/go-json-experiment/json v0.0.0-20251027170946-4849db3c2f7e
99
github.com/google/go-cmp v0.7.0
1010
golang.org/x/sync v0.19.0
11-
golang.org/x/text v0.33.0
12-
golang.org/x/tools v0.41.0
11+
golang.org/x/text v0.34.0
12+
golang.org/x/tools v0.42.0
1313
)
1414

1515
require (
16-
github.com/mattn/go-colorable v0.1.14 // indirect
17-
github.com/mattn/go-isatty v0.0.20 // indirect
18-
golang.org/x/mod v0.32.0 // indirect
19-
golang.org/x/sys v0.40.0 // indirect
16+
golang.org/x/mod v0.33.0 // indirect
2017
mvdan.cc/gofumpt v0.9.2 // indirect
2118
)

go.sum

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,32 +8,24 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
88
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
99
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
1010
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
11-
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
12-
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
13-
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
14-
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
1511
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
1612
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
17-
golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA=
18-
golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w=
1913
golang.org/x/mod v0.32.0 h1:9F4d3PHLljb6x//jOyokMv3eX+YDeepZSEo3mFJy93c=
2014
golang.org/x/mod v0.32.0/go.mod h1:SgipZ/3h2Ci89DlEtEXWUk/HteuRin+HHhN+WbNhguU=
21-
golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug=
22-
golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
15+
golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8=
16+
golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w=
2317
golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=
2418
golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
25-
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
26-
golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ=
27-
golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
2819
golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ=
2920
golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
30-
golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k=
31-
golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM=
21+
golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k=
3222
golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE=
3323
golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8=
34-
golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ=
35-
golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs=
24+
golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk=
25+
golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA=
3626
golang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc=
3727
golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg=
28+
golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k=
29+
golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0=
3830
mvdan.cc/gofumpt v0.9.2 h1:zsEMWL8SVKGHNztrx6uZrXdp7AX8r421Vvp23sz7ik4=
3931
mvdan.cc/gofumpt v0.9.2/go.mod h1:iB7Hn+ai8lPvofHd9ZFGVg2GOr8sBUw1QUWjNbmIL/s=

testing/v2/apis_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,12 @@ func TestAPIs(t *testing.T) {
8383
t.Run("期望特定错误", func(t *testing.T) {
8484
testErr := &ErrTest{Message: "something wrong"}
8585

86-
Then(t, "应该返回ErrTest类型错误",
86+
Then(t, "应该返回 ErrTest 类型错误",
8787
ExpectDo(
8888
func() error {
8989
return testErr
9090
},
91-
ErrorAs(ptr.Ptr(&ErrTest{})),
91+
ErrorAsType[*ErrTest](),
9292
),
9393
)
9494
})

testing/v2/checker__error.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,28 @@ func ErrorNotMatch(re *regexp.Regexp) ValueChecker[error] {
3535
})
3636
}
3737

38+
func ErrorAsType[E error]() ValueChecker[error] {
39+
return internal.Helper(1, &beChecker[error]{
40+
be: func(actual error) error {
41+
if _, ok := errors.AsType[E](actual); ok {
42+
return nil
43+
}
44+
return &ErrNotEqual{Expect: new(E), Got: actual}
45+
},
46+
})
47+
}
48+
49+
func ErrorNotAsType[E error]() ValueChecker[error] {
50+
return internal.Helper(1, &beChecker[error]{
51+
be: func(actual error) error {
52+
if _, ok := errors.AsType[E](actual); !ok {
53+
return nil
54+
}
55+
return &ErrEqual{NotExpect: new(E), Got: actual}
56+
},
57+
})
58+
}
59+
3860
func ErrorAs[E error](expect *E) ValueChecker[error] {
3961
return internal.Helper(1, &beChecker[error]{
4062
be: func(actual error) error {

0 commit comments

Comments
 (0)