123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- package errwrap
- import (
- "errors"
- "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,
- },
- {
- fmt.Errorf("foo: %w", fmt.Errorf("bar")),
- "foo: bar",
- 1,
- },
- {
- fmt.Errorf("foo: %w", fmt.Errorf("bar")),
- "bar",
- 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,
- },
- {
- fmt.Errorf("one: %w", fmt.Errorf("two: %w", fmt.Errorf("three"))),
- fmt.Errorf("%w", errors.New("")),
- 2,
- },
- }
- for i, tc := range cases {
- actual := GetAllType(tc.Err, tc.Type)
- if len(actual) != tc.Len {
- t.Fatalf("%d: bad: %#v", i, actual)
- }
- }
- }
- func TestWrappedError_IsCompatibleWithErrorsUnwrap(t *testing.T) {
- inner := errors.New("inner error")
- err := Wrap(errors.New("outer"), inner)
- actual := errors.Unwrap(err)
- if actual != inner {
- t.Fatal("wrappedError did not unwrap to inner")
- }
- }
|