github.com/windmeup/goreleaser@v1.21.95/internal/middleware/errhandler/error_test.go (about)

     1  package errhandler
     2  
     3  import (
     4  	"errors"
     5  	"fmt"
     6  	"testing"
     7  
     8  	"github.com/hashicorp/go-multierror"
     9  	"github.com/stretchr/testify/require"
    10  	"github.com/windmeup/goreleaser/internal/pipe"
    11  	"github.com/windmeup/goreleaser/pkg/context"
    12  )
    13  
    14  func TestError(t *testing.T) {
    15  	t.Run("no errors", func(t *testing.T) {
    16  		require.NoError(t, Handle(func(ctx *context.Context) error {
    17  			return nil
    18  		})(nil))
    19  	})
    20  
    21  	t.Run("pipe skipped", func(t *testing.T) {
    22  		require.NoError(t, Handle(func(ctx *context.Context) error {
    23  			return pipe.ErrSkipValidateEnabled
    24  		})(nil))
    25  	})
    26  
    27  	t.Run("some err", func(t *testing.T) {
    28  		require.Error(t, Handle(func(ctx *context.Context) error {
    29  			return fmt.Errorf("pipe errored")
    30  		})(nil))
    31  	})
    32  }
    33  
    34  func TestErrorMemo(t *testing.T) {
    35  	memo := Memo{}
    36  	t.Run("no errors", func(t *testing.T) {
    37  		require.NoError(t, memo.Wrap(func(ctx *context.Context) error {
    38  			return nil
    39  		})(nil))
    40  	})
    41  
    42  	t.Run("pipe skipped", func(t *testing.T) {
    43  		require.NoError(t, memo.Wrap(func(ctx *context.Context) error {
    44  			return pipe.ErrSkipValidateEnabled
    45  		})(nil))
    46  	})
    47  
    48  	t.Run("some err", func(t *testing.T) {
    49  		require.NoError(t, memo.Wrap(func(ctx *context.Context) error {
    50  			return fmt.Errorf("pipe errored")
    51  		})(nil))
    52  	})
    53  
    54  	err := memo.Error()
    55  	merr := &multierror.Error{}
    56  	require.True(t, errors.As(err, &merr), "must be a multierror")
    57  	require.Len(t, merr.Errors, 1)
    58  }