github.com/windmeup/goreleaser@v1.21.95/internal/pipe/announce/announce_test.go (about)

     1  package announce
     2  
     3  import (
     4  	"errors"
     5  	"testing"
     6  
     7  	"github.com/hashicorp/go-multierror"
     8  	"github.com/stretchr/testify/require"
     9  	"github.com/windmeup/goreleaser/internal/skips"
    10  	"github.com/windmeup/goreleaser/internal/testctx"
    11  	"github.com/windmeup/goreleaser/pkg/config"
    12  )
    13  
    14  func TestDescription(t *testing.T) {
    15  	require.NotEmpty(t, Pipe{}.String())
    16  }
    17  
    18  func TestAnnounce(t *testing.T) {
    19  	ctx := testctx.NewWithCfg(config.Project{
    20  		Announce: config.Announce{
    21  			Twitter: config.Twitter{
    22  				Enabled: true,
    23  			},
    24  			Mastodon: config.Mastodon{
    25  				Enabled: true,
    26  				Server:  "https://localhost:1234/",
    27  			},
    28  		},
    29  	})
    30  	err := Pipe{}.Run(ctx)
    31  	require.Error(t, err)
    32  	merr := &multierror.Error{}
    33  	require.True(t, errors.As(err, &merr), "must be a multierror")
    34  	require.Len(t, merr.Errors, 2)
    35  }
    36  
    37  func TestAnnounceAllDisabled(t *testing.T) {
    38  	ctx := testctx.New()
    39  	require.NoError(t, Pipe{}.Run(ctx))
    40  }
    41  
    42  func TestSkip(t *testing.T) {
    43  	t.Run("skip", func(t *testing.T) {
    44  		ctx := testctx.New(testctx.Skip(skips.Announce))
    45  		b, err := Pipe{}.Skip(ctx)
    46  		require.NoError(t, err)
    47  		require.True(t, b)
    48  	})
    49  
    50  	t.Run("skip on patches", func(t *testing.T) {
    51  		ctx := testctx.NewWithCfg(config.Project{
    52  			Announce: config.Announce{
    53  				Skip: "{{gt .Patch 0}}",
    54  			},
    55  		}, testctx.WithSemver(0, 0, 1, ""))
    56  		b, err := Pipe{}.Skip(ctx)
    57  		require.NoError(t, err)
    58  		require.True(t, b)
    59  	})
    60  
    61  	t.Run("invalid template", func(t *testing.T) {
    62  		ctx := testctx.NewWithCfg(config.Project{
    63  			Announce: config.Announce{
    64  				Skip: "{{if eq .Patch 123}",
    65  			},
    66  		}, testctx.WithSemver(0, 0, 1, ""))
    67  		_, err := Pipe{}.Skip(ctx)
    68  		require.Error(t, err)
    69  	})
    70  
    71  	t.Run("dont skip", func(t *testing.T) {
    72  		b, err := Pipe{}.Skip(testctx.New())
    73  		require.NoError(t, err)
    74  		require.False(t, b)
    75  	})
    76  
    77  	t.Run("dont skip based on template", func(t *testing.T) {
    78  		ctx := testctx.NewWithCfg(config.Project{
    79  			Announce: config.Announce{
    80  				Skip: "{{gt .Patch 0}}",
    81  			},
    82  		})
    83  		b, err := Pipe{}.Skip(ctx)
    84  		require.NoError(t, err)
    85  		require.False(t, b)
    86  	})
    87  }