@@ -2,6 +2,7 @@ package fail
2
2
3
3
import (
4
4
"errors"
5
+ "strings"
5
6
"testing"
6
7
7
8
pkgerrors "github.com/pkg/errors"
@@ -20,6 +21,13 @@ func TestExtractPkgError(t *testing.T) {
20
21
assert .Nil (t , pkgErr )
21
22
})
22
23
24
+ t .Run ("slice error" , func (t * testing.T ) {
25
+ err := errorSlice {errors .New ("error" )}
26
+
27
+ pkgErr := extractPkgError (err )
28
+ assert .Nil (t , pkgErr )
29
+ })
30
+
23
31
t .Run ("pkg/errors.New" , func (t * testing.T ) {
24
32
err := pkgErrorsNew ("message" )
25
33
@@ -84,6 +92,16 @@ func TestExtractPkgError(t *testing.T) {
84
92
assert .NotEmpty (t , pkgErr .StackTrace )
85
93
assert .Equal (t , "pkgErrorsWrap" , pkgErr .StackTrace [0 ].Func )
86
94
})
95
+
96
+ t .Run ("with slice error" , func (t * testing.T ) {
97
+ err0 := errorSlice {errors .New ("error" )}
98
+ err1 := pkgErrorsWrap (err0 , "message" )
99
+
100
+ pkgErr := extractPkgError (err1 )
101
+ assert .NotNil (t , pkgErr )
102
+ assert .Equal (t , err0 , pkgErr .Err )
103
+ assert .NotEmpty (t , pkgErr .StackTrace )
104
+ })
87
105
})
88
106
89
107
t .Run ("pkg/errors.WithMessage" , func (t * testing.T ) {
@@ -156,3 +174,13 @@ func pkgErrorsNew(msg string) error {
156
174
func pkgErrorsWrap (err error , msg string ) error {
157
175
return pkgerrors .Wrap (err , msg )
158
176
}
177
+
178
+ type errorSlice []error
179
+
180
+ func (s errorSlice ) Error () string {
181
+ msg := make ([]string , len (s ))
182
+ for i , e := range s {
183
+ msg [i ] = e .Error ()
184
+ }
185
+ return strings .Join (msg , ": " )
186
+ }
0 commit comments