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  }