github.com/gobuffalo/buffalo-cli/v2@v2.0.0-alpha.15.0.20200919213536-a7350c8e6799/cli/cmds/test/test_test.go (about) 1 package test 2 3 import ( 4 "context" 5 "fmt" 6 "testing" 7 8 "github.com/gobuffalo/plugins" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func Test_Cmd_Main(t *testing.T) { 13 r := require.New(t) 14 15 bc := &Cmd{} 16 17 exp := []string{"go", "test", "./..."} 18 19 br := &bladeRunner{} 20 bc.WithPlugins(func() []plugins.Plugin { 21 return []plugins.Plugin{br} 22 }) 23 24 var args []string 25 err := bc.Main(context.Background(), ".", args) 26 r.NoError(err) 27 r.NotNil(br.cmd) 28 r.Equal(exp, br.cmd.Args) 29 } 30 31 func Test_Cmd_Main_SubCommand(t *testing.T) { 32 r := require.New(t) 33 34 p := &tester{name: "foo"} 35 plugs := plugins.Plugins{p, &bladeRunner{}} 36 37 bc := &Cmd{ 38 pluginsFn: func() []plugins.Plugin { 39 return plugs 40 }, 41 } 42 43 args := []string{p.name, "a", "b", "c"} 44 45 err := bc.Main(context.Background(), ".", args) 46 r.NoError(err) 47 r.Equal([]string{"a", "b", "c"}, p.args) 48 } 49 50 func Test_Cmd_Main_SubCommand_err(t *testing.T) { 51 r := require.New(t) 52 53 p := &tester{name: "foo", err: fmt.Errorf("error")} 54 plugs := plugins.Plugins{p, &bladeRunner{}} 55 56 bc := &Cmd{ 57 pluginsFn: func() []plugins.Plugin { 58 return plugs 59 }, 60 } 61 62 args := []string{p.name, "a", "b", "c"} 63 64 err := bc.Main(context.Background(), ".", args) 65 r.Error(err) 66 } 67 68 func Test_Cmd_Main_BeforeTesters(t *testing.T) { 69 r := require.New(t) 70 71 p := &beforeTester{} 72 plugs := plugins.Plugins{p, &bladeRunner{}} 73 74 bc := &Cmd{ 75 pluginsFn: func() []plugins.Plugin { 76 return plugs 77 }, 78 } 79 80 var args []string 81 82 err := bc.Main(context.Background(), ".", args) 83 r.NoError(err) 84 } 85 86 func Test_Cmd_Main_BeforeTesters_err(t *testing.T) { 87 r := require.New(t) 88 89 p := &beforeTester{err: fmt.Errorf("error")} 90 plugs := plugins.Plugins{p, &bladeRunner{}} 91 92 bc := &Cmd{ 93 pluginsFn: func() []plugins.Plugin { 94 return plugs 95 }, 96 } 97 98 var args []string 99 100 err := bc.Main(context.Background(), ".", args) 101 r.Error(err) 102 } 103 104 func Test_Cmd_Main_AfterTesters(t *testing.T) { 105 r := require.New(t) 106 107 p := &afterTester{} 108 plugs := plugins.Plugins{p, &bladeRunner{}} 109 110 bc := &Cmd{ 111 pluginsFn: func() []plugins.Plugin { 112 return plugs 113 }, 114 } 115 116 var args []string 117 118 err := bc.Main(context.Background(), ".", args) 119 r.NoError(err) 120 } 121 122 func Test_Cmd_Main_AfterTesters_err(t *testing.T) { 123 r := require.New(t) 124 125 b := &beforeTester{err: fmt.Errorf("science fiction twin")} 126 a := &afterTester{} 127 plugs := plugins.Plugins{a, b, &bladeRunner{}} 128 129 bc := &Cmd{ 130 pluginsFn: func() []plugins.Plugin { 131 return plugs 132 }, 133 } 134 135 var args []string 136 137 err := bc.Main(context.Background(), ".", args) 138 r.Error(err) 139 r.Contains(err.Error(), b.err.Error()) 140 }