Added Errors.Is

This commit is contained in:
Quentin Renard
2023-05-28 09:59:13 +02:00
parent c867970934
commit aeca2b332f
2 changed files with 36 additions and 0 deletions

View File

@@ -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 {

View File

@@ -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) {