mirror of
https://github.com/asticode/go-astikit.git
synced 2025-12-24 11:50:53 +08:00
Added Errors.Is
This commit is contained in:
11
errors.go
11
errors.go
@@ -59,6 +59,17 @@ func (errs *Errors) Error() string {
|
||||
return strings.Join(ss, " && ")
|
||||
}
|
||||
|
||||
func (errs *Errors) Is(target error) bool {
|
||||
errs.m.Lock()
|
||||
defer errs.m.Unlock()
|
||||
for _, v := range errs.p {
|
||||
if errors.Is(v, target) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// ErrorCause returns the cause of an error
|
||||
func ErrorCause(err error) error {
|
||||
for {
|
||||
|
||||
@@ -26,6 +26,31 @@ func TestErrors(t *testing.T) {
|
||||
}
|
||||
return false
|
||||
})
|
||||
err1 := errors.New("1")
|
||||
err2 := errors.New("2")
|
||||
err3 := errors.New("3")
|
||||
errs = NewErrors(err1, err3)
|
||||
for _, v := range []struct {
|
||||
err error
|
||||
expected bool
|
||||
}{
|
||||
{
|
||||
err: err1,
|
||||
expected: true,
|
||||
},
|
||||
{
|
||||
err: err2,
|
||||
expected: false,
|
||||
},
|
||||
{
|
||||
err: err3,
|
||||
expected: true,
|
||||
},
|
||||
} {
|
||||
if g := errors.Is(errs, v.err); g != v.expected {
|
||||
t.Errorf("expected %v, got %v", v.expected, g)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestErrorCause(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user