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  }