github.com/joselitofilho/goreleaser@v0.155.1-0.20210123221854-e4891856c593/cmd/build_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 TestBuild(t *testing.T) {
    12  	setup(t)
    13  	var cmd = newBuildCmd()
    14  	cmd.cmd.SetArgs([]string{"--snapshot", "--timeout=1m", "--parallelism=2", "--deprecated"})
    15  	require.NoError(t, cmd.cmd.Execute())
    16  }
    17  
    18  func TestBuildWithSpecifcId(t *testing.T) {
    19  	setup(t)
    20  	var cmd = newBuildCmd()
    21  	cmd.cmd.SetArgs([]string{"--snapshot", "--timeout=1m", "--parallelism=2", "--deprecated", "--build-id=fake"})
    22  	require.NoError(t, cmd.cmd.Execute())
    23  }
    24  
    25  func TestBuildWithSpecifcIdNotExists(t *testing.T) {
    26  	setup(t)
    27  	var cmd = newBuildCmd()
    28  	cmd.cmd.SetArgs([]string{"--snapshot", "--timeout=1m", "--parallelism=2", "--deprecated", "--build-id=notexists"})
    29  	require.NoError(t, cmd.cmd.Execute())
    30  }
    31  
    32  func TestBuildInvalidConfig(t *testing.T) {
    33  	setup(t)
    34  	createFile(t, "goreleaser.yml", "foo: bar")
    35  	var cmd = newBuildCmd()
    36  	cmd.cmd.SetArgs([]string{"--snapshot", "--timeout=1m", "--parallelism=2", "--deprecated"})
    37  	require.EqualError(t, cmd.cmd.Execute(), "yaml: unmarshal errors:\n  line 1: field foo not found in type config.Project")
    38  }
    39  
    40  func TestBuildBrokenProject(t *testing.T) {
    41  	setup(t)
    42  	createFile(t, "main.go", "not a valid go file")
    43  	var cmd = newBuildCmd()
    44  	cmd.cmd.SetArgs([]string{"--snapshot", "--timeout=1m", "--parallelism=2"})
    45  	require.EqualError(t, cmd.cmd.Execute(), "failed to parse dir: .: main.go:1:1: expected 'package', found not")
    46  }
    47  
    48  func TestBuildFlags(t *testing.T) {
    49  	var setup = func(opts buildOpts) *context.Context {
    50  		return setupBuildContext(context.New(config.Project{}), opts)
    51  	}
    52  
    53  	t.Run("snapshot", func(t *testing.T) {
    54  		var ctx = setup(buildOpts{
    55  			snapshot: true,
    56  		})
    57  		require.True(t, ctx.Snapshot)
    58  		require.True(t, ctx.SkipValidate)
    59  		require.True(t, ctx.SkipTokenCheck)
    60  	})
    61  
    62  	t.Run("skips", func(t *testing.T) {
    63  		var ctx = setup(buildOpts{
    64  			skipValidate:  true,
    65  			skipPostHooks: true,
    66  		})
    67  		require.True(t, ctx.SkipValidate)
    68  		require.True(t, ctx.SkipPostBuildHooks)
    69  		require.True(t, ctx.SkipTokenCheck)
    70  	})
    71  
    72  	t.Run("parallelism", func(t *testing.T) {
    73  		require.Equal(t, 1, setup(buildOpts{
    74  			parallelism: 1,
    75  		}).Parallelism)
    76  	})
    77  
    78  	t.Run("rm dist", func(t *testing.T) {
    79  		require.True(t, setup(buildOpts{
    80  			rmDist: true,
    81  		}).RmDist)
    82  	})
    83  
    84  	t.Run("build-id", func(t *testing.T) {
    85  		ctx := setup(buildOpts{
    86  			buildIDs: []string{"id1", "id2"},
    87  		})
    88  
    89  		require.Equal(t, ctx.BuildIDs[0], "id1")
    90  		require.Equal(t, ctx.BuildIDs[1], "id2")
    91  	})
    92  }