95 lines
1.3 KiB
Go
95 lines
1.3 KiB
Go
package errwrap
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
func TestWrappedError_impl(t *testing.T) {
|
|
var _ error = new(wrappedError)
|
|
}
|
|
|
|
func TestGetAll(t *testing.T) {
|
|
cases := []struct {
|
|
Err error
|
|
Msg string
|
|
Len int
|
|
}{
|
|
{},
|
|
{
|
|
fmt.Errorf("foo"),
|
|
"foo",
|
|
1,
|
|
},
|
|
{
|
|
fmt.Errorf("bar"),
|
|
"foo",
|
|
0,
|
|
},
|
|
{
|
|
Wrapf("bar", fmt.Errorf("foo")),
|
|
"foo",
|
|
1,
|
|
},
|
|
{
|
|
Wrapf("{{err}}", fmt.Errorf("foo")),
|
|
"foo",
|
|
2,
|
|
},
|
|
{
|
|
Wrapf("bar", Wrapf("baz", fmt.Errorf("foo"))),
|
|
"foo",
|
|
1,
|
|
},
|
|
}
|
|
|
|
for i, tc := range cases {
|
|
actual := GetAll(tc.Err, tc.Msg)
|
|
if len(actual) != tc.Len {
|
|
t.Fatalf("%d: bad: %#v", i, actual)
|
|
}
|
|
for _, v := range actual {
|
|
if v.Error() != tc.Msg {
|
|
t.Fatalf("%d: bad: %#v", i, actual)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestGetAllType(t *testing.T) {
|
|
cases := []struct {
|
|
Err error
|
|
Type interface{}
|
|
Len int
|
|
}{
|
|
{},
|
|
{
|
|
fmt.Errorf("foo"),
|
|
"foo",
|
|
0,
|
|
},
|
|
{
|
|
fmt.Errorf("bar"),
|
|
fmt.Errorf("foo"),
|
|
1,
|
|
},
|
|
{
|
|
Wrapf("bar", fmt.Errorf("foo")),
|
|
fmt.Errorf("baz"),
|
|
2,
|
|
},
|
|
{
|
|
Wrapf("bar", Wrapf("baz", fmt.Errorf("foo"))),
|
|
Wrapf("", nil),
|
|
0,
|
|
},
|
|
}
|
|
|
|
for i, tc := range cases {
|
|
actual := GetAllType(tc.Err, tc.Type)
|
|
if len(actual) != tc.Len {
|
|
t.Fatalf("%d: bad: %#v", i, actual)
|
|
}
|
|
}
|
|
}
|