github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/internal/errs/errs_private_test.go (about)

     1  package errs
     2  
     3  import (
     4  	"reflect"
     5  	"testing"
     6  )
     7  
     8  func TestEncodeError(t *testing.T) {
     9  	tests := []struct {
    10  		name string
    11  		err  error
    12  		want interface{}
    13  	}{
    14  		{
    15  			"Single",
    16  			New("error1"),
    17  			"error1",
    18  		},
    19  		{
    20  			"Wrapped",
    21  			Wrap(New("error1"), "error2"),
    22  			map[string]interface{}{
    23  				"error2": "error1",
    24  			},
    25  		},
    26  		{
    27  			"Stacked",
    28  			Pack(New("error1"), New("error2"), New("error3")),
    29  			[]interface{}{
    30  				"error1",
    31  				"error2",
    32  				"error3",
    33  			},
    34  		},
    35  		{
    36  			"Stacked and Wrapped",
    37  			Pack(
    38  				New("error1"),
    39  				Wrap(New("error2"), "error2-wrap"),
    40  				New("error3"),
    41  			),
    42  			[]interface{}{
    43  				"error1",
    44  				map[string]interface{}{
    45  					"error2-wrap": "error2",
    46  				},
    47  				"error3",
    48  			},
    49  		},
    50  		{
    51  			"Stacked, Wrapped and Stacked",
    52  			Pack(
    53  				New("error1"),
    54  				Wrap(
    55  					Pack(New("error2a"), New("error2b")),
    56  					"error2-wrap",
    57  				),
    58  				New("error3")),
    59  			[]interface{}{
    60  				"error1",
    61  				map[string]interface{}{
    62  					"error2-wrap": []interface{}{"error2a", "error2b"},
    63  				},
    64  				"error3",
    65  			},
    66  		},
    67  	}
    68  	for _, tt := range tests {
    69  		t.Run(tt.name, func(t *testing.T) {
    70  			encoded := encodeErrorForJoin(tt.err)
    71  			if !reflect.DeepEqual(encoded, tt.want) {
    72  				t.Fatalf("got %v, want %v", encoded, tt.want)
    73  			}
    74  		})
    75  	}
    76  }