github.com/nilium/gitlab-runner@v12.5.0+incompatible/commands/helpers/retry_helper_test.go (about) 1 package helpers 2 3 import ( 4 "errors" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestDoRetry(t *testing.T) { 11 cases := []struct { 12 name string 13 err error 14 expectedCount int 15 }{ 16 { 17 name: "Error is of type retryableErr", 18 err: retryableErr{err: errors.New("error")}, 19 expectedCount: 4, 20 }, 21 { 22 name: "Error is not type of retryableErr", 23 err: errors.New("error"), 24 expectedCount: 1, 25 }, 26 { 27 name: "Error is nil", 28 err: nil, 29 expectedCount: 1, 30 }, 31 } 32 33 for _, c := range cases { 34 t.Run(c.name, func(t *testing.T) { 35 r := retryHelper{ 36 Retry: 3, 37 } 38 39 retryCount := 0 40 err := r.doRetry(func() error { 41 retryCount++ 42 return c.err 43 }) 44 45 assert.Equal(t, c.err, err) 46 assert.Equal(t, c.expectedCount, retryCount) 47 }) 48 } 49 }