github.com/joselitofilho/goreleaser@v0.155.1-0.20210123221854-e4891856c593/cmd/release_test.go (about)

     1  package cmd
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/goreleaser/goreleaser/pkg/config"
     7  	"github.com/goreleaser/goreleaser/pkg/context"
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  func TestRelease(t *testing.T) {
    12  	setup(t)
    13  	var cmd = newReleaseCmd()
    14  	cmd.cmd.SetArgs([]string{"--snapshot", "--timeout=1m", "--parallelism=2", "--deprecated"})
    15  	require.NoError(t, cmd.cmd.Execute())
    16  }
    17  
    18  func TestReleaseInvalidConfig(t *testing.T) {
    19  	setup(t)
    20  	createFile(t, "goreleaser.yml", "foo: bar")
    21  	var cmd = newReleaseCmd()
    22  	cmd.cmd.SetArgs([]string{"--snapshot", "--timeout=1m", "--parallelism=2", "--deprecated"})
    23  	require.EqualError(t, cmd.cmd.Execute(), "yaml: unmarshal errors:\n  line 1: field foo not found in type config.Project")
    24  }
    25  
    26  func TestReleaseBrokenProject(t *testing.T) {
    27  	setup(t)
    28  	createFile(t, "main.go", "not a valid go file")
    29  	var cmd = newReleaseCmd()
    30  	cmd.cmd.SetArgs([]string{"--snapshot", "--timeout=1m", "--parallelism=2"})
    31  	require.EqualError(t, cmd.cmd.Execute(), "failed to parse dir: .: main.go:1:1: expected 'package', found not")
    32  }
    33  
    34  func TestReleaseFlags(t *testing.T) {
    35  	var setup = func(opts releaseOpts) *context.Context {
    36  		return setupReleaseContext(context.New(config.Project{}), opts)
    37  	}
    38  
    39  	t.Run("snapshot", func(t *testing.T) {
    40  		var ctx = setup(releaseOpts{
    41  			snapshot: true,
    42  		})
    43  		require.True(t, ctx.Snapshot)
    44  		require.True(t, ctx.SkipPublish)
    45  		require.True(t, ctx.SkipPublish)
    46  	})
    47  
    48  	t.Run("skips", func(t *testing.T) {
    49  		var ctx = setup(releaseOpts{
    50  			skipPublish:  true,
    51  			skipSign:     true,
    52  			skipValidate: true,
    53  		})
    54  		require.True(t, ctx.SkipSign)
    55  		require.True(t, ctx.SkipPublish)
    56  		require.True(t, ctx.SkipPublish)
    57  	})
    58  
    59  	t.Run("parallelism", func(t *testing.T) {
    60  		require.Equal(t, 1, setup(releaseOpts{
    61  			parallelism: 1,
    62  		}).Parallelism)
    63  	})
    64  
    65  	t.Run("notes", func(t *testing.T) {
    66  		var notes = "foo.md"
    67  		var header = "header.md"
    68  		var footer = "footer.md"
    69  		var ctx = setup(releaseOpts{
    70  			releaseNotes:  notes,
    71  			releaseHeader: header,
    72  			releaseFooter: footer,
    73  		})
    74  		require.Equal(t, notes, ctx.ReleaseNotes)
    75  		require.Equal(t, header, ctx.ReleaseHeader)
    76  		require.Equal(t, footer, ctx.ReleaseFooter)
    77  	})
    78  
    79  	t.Run("rm dist", func(t *testing.T) {
    80  		require.True(t, setup(releaseOpts{
    81  			rmDist: true,
    82  		}).RmDist)
    83  	})
    84  }