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 }