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 }