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  }