github.com/cilium/cilium@v1.16.2/pkg/resiliency/errorset_test.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package resiliency_test 5 6 import ( 7 "errors" 8 "testing" 9 10 "github.com/stretchr/testify/assert" 11 12 "github.com/cilium/cilium/pkg/resiliency" 13 ) 14 15 func TestErrorJoin(t *testing.T) { 16 uu := map[string]struct { 17 errs []error 18 total int 19 e string 20 }{ 21 "none": {}, 22 "nils": { 23 errs: []error{nil, nil}, 24 }, 25 "plain": { 26 errs: []error{errors.New("e1"), errors.New("e2"), errors.New("e3")}, 27 total: 3, 28 e: "test (3/3) failed\ne1\ne2\ne3", 29 }, 30 "dups": { 31 errs: []error{errors.New("e1"), errors.New("e2"), errors.New("e1")}, 32 total: 3, 33 e: "test (2/3) failed\ne1\ne2", 34 }, 35 "mix": { 36 errs: []error{errors.New("e1"), errors.New("e2"), errors.New("e1"), nil, errors.New("e2")}, 37 total: 5, 38 e: "test (2/5) failed\ne1\ne2", 39 }, 40 } 41 42 for k := range uu { 43 u := uu[k] 44 t.Run(k, func(t *testing.T) { 45 es := resiliency.NewErrorSet("test", len(u.errs)) 46 es.Add(u.errs...) 47 if es.Error() != nil { 48 assert.Equal(t, u.e, errors.Join(es.Error()).Error()) 49 } 50 }) 51 } 52 } 53 54 func TestErrorSetAdd(t *testing.T) { 55 uu := map[string]struct { 56 errs []error 57 e string 58 }{ 59 "none": {}, 60 "nils": { 61 errs: []error{nil, nil}, 62 }, 63 "plain": { 64 errs: []error{errors.New("e1"), errors.New("e2"), errors.New("e3")}, 65 e: "test (3/3) failed\ne1\ne2\ne3", 66 }, 67 "dups": { 68 errs: []error{errors.New("e1"), errors.New("e2"), errors.New("e1")}, 69 e: "test (2/3) failed\ne1\ne2", 70 }, 71 "mix": { 72 errs: []error{errors.New("e1"), errors.New("e2"), errors.New("e1"), nil, errors.New("e2")}, 73 e: "test (2/5) failed\ne1\ne2", 74 }, 75 } 76 77 for k := range uu { 78 u := uu[k] 79 t.Run(k, func(t *testing.T) { 80 es := resiliency.NewErrorSet("test", len(u.errs)) 81 es.Add(u.errs...) 82 if es.Error() != nil { 83 assert.Equal(t, u.e, es.Error().Error()) 84 } 85 }) 86 } 87 }