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 }