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 }