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  }