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 }