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 }