github.com/markbates/grift@v1.5.0/cli/main_test.go (about)

     1  package cli
     2  
     3  import (
     4  	"bytes"
     5  	"context"
     6  	"os"
     7  	"path/filepath"
     8  	"strings"
     9  	"testing"
    10  
    11  	"github.com/stretchr/testify/require"
    12  )
    13  
    14  func Test_Main_Help(t *testing.T) {
    15  	table := [][]string{
    16  		{},
    17  		{"-h"},
    18  	}
    19  
    20  	for _, tt := range table {
    21  		t.Run(strings.Join(tt, " "), func(st *testing.T) {
    22  			r := require.New(st)
    23  			bb := &bytes.Buffer{}
    24  			ctx := WithStderr(bb, context.Background())
    25  			r.NoError(Main(ctx, tt))
    26  
    27  			r.Contains(bb.String(), "grift <task name> [task arguments]")
    28  		})
    29  	}
    30  }
    31  
    32  func Test_Main_Version(t *testing.T) {
    33  	r := require.New(t)
    34  
    35  	bb := &bytes.Buffer{}
    36  	ctx := WithStdout(bb, context.Background())
    37  	r.NoError(Main(ctx, []string{"-v"}))
    38  
    39  	r.Equal(Version, strings.TrimSpace(bb.String()))
    40  }
    41  
    42  func Test_Main_Task(t *testing.T) {
    43  	r := require.New(t)
    44  
    45  	pwd, err := os.Getwd()
    46  	r.NoError(err)
    47  	defer os.Chdir(pwd)
    48  	os.Chdir(filepath.Dir(pwd))
    49  
    50  	bb := &bytes.Buffer{}
    51  	ctx := WithStdout(bb, context.Background())
    52  
    53  	args := []string{"db:seed", "1", "2", "3"}
    54  	r.NoError(Main(ctx, args))
    55  
    56  	act := strings.TrimSpace(bb.String())
    57  
    58  	r.Equal("Seeding DB [1 2 3]", act)
    59  }