github.com/gobuffalo/buffalo-cli/v2@v2.0.0-alpha.15.0.20200919213536-a7350c8e6799/cli/cmds/test/test.go (about) 1 package test 2 3 import ( 4 "github.com/gobuffalo/plugins" 5 "github.com/gobuffalo/plugins/plugprint" 6 ) 7 8 var _ plugins.Plugin = &Cmd{} 9 var _ plugins.Needer = &Cmd{} 10 var _ plugins.Scoper = &Cmd{} 11 var _ plugprint.Describer = &Cmd{} 12 var _ plugprint.SubCommander = &Cmd{} 13 14 func Plugins() []plugins.Plugin { 15 return []plugins.Plugin{ 16 &Cmd{}, 17 &Setup{}, 18 &GoEnv{}, 19 } 20 } 21 22 type Cmd struct { 23 pluginsFn plugins.Feeder 24 } 25 26 func (Cmd) PluginName() string { 27 return "test" 28 } 29 30 func (Cmd) Description() string { 31 return "Run the tests for the Buffalo app." 32 } 33 34 func (b *Cmd) WithPlugins(f plugins.Feeder) { 35 b.pluginsFn = f 36 } 37 38 func (bc *Cmd) ScopedPlugins() []plugins.Plugin { 39 var plugs []plugins.Plugin 40 if bc.pluginsFn != nil { 41 plugs = bc.pluginsFn() 42 } 43 44 var builders []plugins.Plugin 45 for _, p := range plugs { 46 switch p.(type) { 47 case Tester: 48 builders = append(builders, p) 49 case BeforeTester: 50 builders = append(builders, p) 51 case AfterTester: 52 builders = append(builders, p) 53 case Runner: 54 builders = append(builders, p) 55 case Argumenter: 56 builders = append(builders, p) 57 case Stdouter: 58 builders = append(builders, p) 59 case Namer: 60 builders = append(builders, p) 61 case Aliaser: 62 builders = append(builders, p) 63 } 64 } 65 return builders 66 } 67 68 func (bc *Cmd) SubCommands() []plugins.Plugin { 69 var plugs []plugins.Plugin 70 for _, p := range bc.ScopedPlugins() { 71 if _, ok := p.(Tester); ok { 72 plugs = append(plugs, p) 73 } 74 } 75 return plugs 76 }