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

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