github.com/mgoltzsche/ctnr@v0.7.1-alpha/pkg/errors/append_test.go (about)

     1  package errors
     2  
     3  import (
     4  	"testing"
     5  
     6  	orgerrors "github.com/pkg/errors"
     7  )
     8  
     9  func TestAppend(t *testing.T) {
    10  	a := orgerrors.New("a")
    11  	b := orgerrors.New("b")
    12  	c := orgerrors.Wrap(b, "c")
    13  	d := &multiError{a, []error{c}}
    14  	e := orgerrors.Wrap(d, "e")
    15  	for _, c := range []struct {
    16  		a        error
    17  		b        error
    18  		expected error
    19  		cause    error
    20  	}{
    21  		{nil, nil, nil, nil},
    22  		{a, nil, a, a},
    23  		{nil, b, b, b},
    24  		{c, nil, c, b},
    25  		{nil, c, c, b},
    26  		{a, c, d, a},
    27  		{d, b, &multiError{a, []error{c, b}}, a},
    28  		{e, b, &multiError{e, []error{b}}, a},
    29  	} {
    30  		actual := Append(c.a, c.b)
    31  		if actual == nil && c.expected != nil || actual != nil && c.expected == nil || actual != nil && actual.Error() != c.expected.Error() {
    32  			t.Errorf("Append(%q, %q) != %q but %q", c.a, c.b, c.expected, actual)
    33  		}
    34  		if cause := orgerrors.Cause(actual); cause != c.cause {
    35  			t.Errorf("cause not preserved for Append(%q, %q): expected %q but was %q", c.a, c.b, c.cause, cause)
    36  		}
    37  		if c.a != nil && c.b != nil {
    38  			if len(actual.(*multiError).Additional()) == 0 {
    39  				t.Errorf("Append(%q, %q).Additional() did return 0 entries", c.a, c.b)
    40  			}
    41  		}
    42  	}
    43  }