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

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