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 }