github.com/tilotech/tilores-cli@v0.28.0/internal/pkg/step/plugininstall_test.go (about) 1 package step 2 3 import ( 4 "fmt" 5 "os" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestPluginInstall(t *testing.T) { 13 if testing.Short() { 14 t.Skip("skipping test in short mode") 15 } 16 17 dir, err := os.MkdirTemp("", "") 18 require.NoError(t, err) 19 defer os.RemoveAll(dir) 20 fmt.Printf("tmpmmmm %v", dir) 21 err = os.Chdir(dir) 22 require.NoError(t, err) 23 24 cases := map[string]struct { 25 pkg string 26 version string 27 target string 28 expectFile []string 29 expectError bool 30 }{ 31 "install plugin": { 32 pkg: "github.com/tilotech/tilores-plugin-fake-dispatcher", 33 version: "latest", 34 target: "dispatcher", 35 expectFile: []string{dir + "/dispatcher", dir + "/dispatcher-linux-arm64"}, 36 }, 37 "invalid package": { 38 pkg: "this is not a valid package", 39 version: "latest", 40 target: "dispatcher", 41 expectError: true, 42 }, 43 "invalid target": { 44 pkg: "github.com/tilotech/tilores-plugin-fake-dispatcher", 45 version: "latest", 46 target: "..", 47 expectError: true, 48 }, 49 } 50 51 for name, c := range cases { 52 t.Run(name, func(t *testing.T) { 53 err := PluginInstall(c.pkg, c.version, c.target)() 54 55 if c.expectError { 56 assert.Error(t, err) 57 } else { 58 assert.NoError(t, err) 59 for _, expectedFile := range c.expectFile { 60 assert.FileExists(t, expectedFile) 61 } 62 } 63 //verify cleanup 64 assert.NoFileExists(t, dir+"/plugins") 65 }) 66 } 67 }