github.com/goreleaser/goreleaser@v1.25.1/internal/middleware/skip/skip_test.go (about) 1 package skip 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/goreleaser/goreleaser/pkg/context" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestSkip(t *testing.T) { 12 fakeErr := fmt.Errorf("fake error") 13 action := func(_ *context.Context) error { 14 return fakeErr 15 } 16 17 t.Run("not a skipper", func(t *testing.T) { 18 require.EqualError(t, Maybe(action, action)(nil), fakeErr.Error()) 19 }) 20 21 t.Run("skip", func(t *testing.T) { 22 require.NoError(t, Maybe(skipper{true}, action)(nil)) 23 }) 24 25 t.Run("do not skip", func(t *testing.T) { 26 require.EqualError(t, Maybe(skipper{false}, action)(nil), fakeErr.Error()) 27 }) 28 } 29 30 func TestSkipErr(t *testing.T) { 31 fakeErr := fmt.Errorf("fake error") 32 action := func(_ *context.Context) error { 33 return fakeErr 34 } 35 36 t.Run("no err", func(t *testing.T) { 37 require.NoError(t, Maybe(errSkipper{true, nil}, action)(nil)) 38 }) 39 40 t.Run("with err", func(t *testing.T) { 41 require.EqualError(t, Maybe( 42 errSkipper{false, fmt.Errorf("skip err")}, 43 action, 44 )(nil), "skip blah: skip err") 45 }) 46 } 47 48 var ( 49 _ Skipper = skipper{} 50 _ ErrSkipper = errSkipper{} 51 ) 52 53 type skipper struct { 54 skip bool 55 } 56 57 func (s skipper) String() string { return "blah" } 58 59 func (s skipper) Skip(_ *context.Context) bool { 60 return s.skip 61 } 62 63 type errSkipper struct { 64 skip bool 65 err error 66 } 67 68 func (s errSkipper) String() string { return "blah" } 69 70 func (s errSkipper) Skip(_ *context.Context) (bool, error) { 71 return s.skip, s.err 72 }