github.com/joselitofilho/goreleaser@v0.155.1-0.20210123221854-e4891856c593/cmd/root_test.go (about) 1 package cmd 2 3 import ( 4 "bytes" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 ) 9 10 func TestRootCmd(t *testing.T) { 11 var mem = &exitMemento{} 12 Execute("1.2.3", mem.Exit, []string{"-h"}) 13 require.Equal(t, 0, mem.code) 14 } 15 16 func TestRootCmdHelp(t *testing.T) { 17 var mem = &exitMemento{} 18 var cmd = newRootCmd("", mem.Exit).cmd 19 cmd.SetArgs([]string{"-h"}) 20 require.NoError(t, cmd.Execute()) 21 require.Equal(t, 0, mem.code) 22 } 23 24 func TestRootCmdVersion(t *testing.T) { 25 var b bytes.Buffer 26 var mem = &exitMemento{} 27 var cmd = newRootCmd("1.2.3", mem.Exit).cmd 28 cmd.SetOut(&b) 29 cmd.SetArgs([]string{"-v"}) 30 require.NoError(t, cmd.Execute()) 31 require.Equal(t, "goreleaser version 1.2.3\n", b.String()) 32 require.Equal(t, 0, mem.code) 33 } 34 35 func TestRootCmdExitCode(t *testing.T) { 36 var mem = &exitMemento{} 37 var cmd = newRootCmd("", mem.Exit) 38 var args = []string{"check", "--deprecated", "-f", "testdata/good.yml"} 39 cmd.Execute(args) 40 require.Equal(t, 2, mem.code) 41 } 42 43 func TestRootRelease(t *testing.T) { 44 setup(t) 45 var mem = &exitMemento{} 46 var cmd = newRootCmd("", mem.Exit) 47 cmd.Execute([]string{}) 48 require.Equal(t, 1, mem.code) 49 } 50 51 func TestRootReleaseDebug(t *testing.T) { 52 setup(t) 53 var mem = &exitMemento{} 54 var cmd = newRootCmd("", mem.Exit) 55 cmd.Execute([]string{"r", "--debug"}) 56 require.Equal(t, 1, mem.code) 57 } 58 59 func TestShouldPrependRelease(t *testing.T) { 60 var result = func(args []string) bool { 61 return shouldPrependRelease(newRootCmd("1", func(_ int) {}).cmd, args) 62 } 63 64 t.Run("no args", func(t *testing.T) { 65 require.True(t, result([]string{})) 66 }) 67 68 t.Run("release args", func(t *testing.T) { 69 require.True(t, result([]string{"--skip-validate"})) 70 }) 71 72 t.Run("several release args", func(t *testing.T) { 73 require.True(t, result([]string{"--skip-validate", "--snapshot"})) 74 }) 75 76 for _, s := range []string{"--help", "-h", "-v", "--version"} { 77 t.Run(s, func(t *testing.T) { 78 require.False(t, result([]string{s})) 79 }) 80 } 81 82 t.Run("check", func(t *testing.T) { 83 require.False(t, result([]string{"check", "-f", "testdata/good.yml"})) 84 }) 85 86 t.Run("help", func(t *testing.T) { 87 require.False(t, result([]string{"help"})) 88 }) 89 90 t.Run("__complete", func(t *testing.T) { 91 require.False(t, result([]string{"__complete"})) 92 }) 93 94 t.Run("__completeNoDesc", func(t *testing.T) { 95 require.False(t, result([]string{"__completeNoDesc"})) 96 }) 97 }