github.com/julianthome/gore@v0.0.0-20231109011145-b3a6bbe6fe55/cli/cli_test.go (about)

     1  package cli
     2  
     3  import (
     4  	"strings"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  	"github.com/stretchr/testify/require"
     9  
    10  	"github.com/x-motemen/gore"
    11  )
    12  
    13  func TestCliRun_Version(t *testing.T) {
    14  	var stdout, stderr strings.Builder
    15  	c := &cli{&stdout, &stderr}
    16  	code := c.run([]string{"-version"})
    17  	require.Equal(t, exitCodeOK, code)
    18  
    19  	assert.Contains(t, stdout.String(), "gore "+gore.Version)
    20  	assert.Equal(t, "", stderr.String())
    21  }
    22  
    23  func TestCliRun_Help(t *testing.T) {
    24  	var stdout, stderr strings.Builder
    25  	c := &cli{&stdout, &stderr}
    26  	code := c.run([]string{"-help"})
    27  	require.Equal(t, exitCodeOK, code)
    28  
    29  	assert.Contains(t, stdout.String(), "gore -")
    30  	assert.Contains(t, stdout.String(), "Options:")
    31  	assert.Equal(t, "", stderr.String())
    32  }
    33  
    34  func TestCliRun_Unknown(t *testing.T) {
    35  	var stdout, stderr strings.Builder
    36  	c := &cli{&stdout, &stderr}
    37  	code := c.run([]string{"-foobar"})
    38  	require.Equal(t, exitCodeErr, code)
    39  
    40  	assert.Contains(t, stdout.String(), "gore -")
    41  	assert.Contains(t, stderr.String(), "flag provided but not defined: -foobar")
    42  }