github.com/kcmvp/gob@v1.0.17/cmd/gbc/command/plugin_test.go (about) 1 package command 2 3 import ( 4 "github.com/kcmvp/gob/cmd/gbc/artifact" 5 "github.com/kcmvp/gob/utils" 6 "github.com/stretchr/testify/assert" 7 "github.com/stretchr/testify/suite" 8 "os" 9 "path/filepath" 10 "strings" 11 "testing" 12 ) 13 14 const v6 = "golang.org/x/tools/cmd/digraph@v0.16.0" 15 const v7 = "golang.org/x/tools/cmd/digraph@v0.16.1" 16 17 type PluginTestSuit struct { 18 suite.Suite 19 } 20 21 func TestPluginSuite(t *testing.T) { 22 suite.Run(t, &PluginTestSuit{}) 23 } 24 25 func (suite *PluginTestSuit) TearDownSuite() { 26 _, method := utils.TestCaller() 27 TearDownSuite(strings.TrimRight(method, "TearDownSuite")) 28 29 } 30 func (suite *PluginTestSuit) TestInstallPlugin() { 31 err := install(nil, v6) 32 assert.NoError(suite.T(), err) 33 plugins := artifact.CurProject().Plugins() 34 _, err = os.Stat(filepath.Join(artifact.GoPath(), plugins[0].Binary())) 35 assert.NoError(suite.T(), err) 36 assert.Equal(suite.T(), 1, len(plugins)) 37 assert.Equal(suite.T(), "digraph", plugins[0].Name()) 38 assert.Equal(suite.T(), "v0.16.0", plugins[0].Version()) 39 assert.Equal(suite.T(), "golang.org/x/tools/cmd/digraph", plugins[0].Module()) 40 err = install(nil, v7) 41 assert.NoError(suite.T(), err) 42 assert.Equal(suite.T(), 1, len(plugins)) 43 _, err = os.Stat(filepath.Join(artifact.GoPath(), plugins[0].Binary())) 44 assert.NoError(suite.T(), err) 45 } 46 47 func (suite *PluginTestSuit) TestInstallPluginWithVersion() { 48 tests := []struct { 49 name string 50 url string 51 wantErr bool 52 }{ 53 {"no version", "github.com/hhatto/gocloc/cmd/gocloc", false}, 54 {"latest version", "github.com/hhatto/gocloc/cmd/gocloc@latest", false}, 55 {"incorrect version", "github.com/hhatto/gocloc/cmd/gocloc@abc", true}, 56 } 57 for _, test := range tests { 58 err := install(nil, test.url) 59 assert.True(suite.T(), test.wantErr == (err != nil)) 60 } 61 } 62 63 func (suite *PluginTestSuit) TestList() { 64 err := list(nil, "") 65 assert.NoError(suite.T(), err) 66 } 67 68 func (suite *PluginTestSuit) TestPluginArgs() { 69 tests := []struct { 70 name string 71 args []string 72 wantErr bool 73 }{ 74 { 75 "no args", 76 []string{}, 77 true, 78 }, 79 { 80 "first not match", 81 []string{"def", "list"}, 82 true, 83 }, 84 { 85 "install without url", 86 []string{"install", ""}, 87 true, 88 }, 89 { 90 "install with url", 91 []string{"install", v6}, 92 false, 93 }, 94 } 95 for _, test := range tests { 96 err := pluginCmd.Args(nil, test.args) 97 assert.True(suite.T(), test.wantErr == (err != nil)) 98 } 99 } 100 101 func (suite *PluginTestSuit) TestRunE() { 102 err := pluginCmd.RunE(pluginCmd, []string{"list"}) 103 assert.NoErrorf(suite.T(), err, "should list iinstalled plugin successfully") 104 } 105 106 func (suite *PluginTestSuit) TestPluginHelpTemplate() { 107 rootCmd.SetArgs([]string{"plugin", "--help"}) 108 rootCmd.Execute() 109 }