github.com/turbot/steampipe@v1.7.0-rc.0.0.20240517123944-7cef272d4458/pkg/steampipeconfig/shared_test.go (about) 1 package steampipeconfig 2 3 import ( 4 "os" 5 "path/filepath" 6 "testing" 7 8 filehelpers "github.com/turbot/go-kit/files" 9 "github.com/turbot/steampipe/pkg/filepaths" 10 ) 11 12 type findPluginFolderTest struct { 13 schema string 14 expected string 15 } 16 17 var testCasesFindPluginFolderTest map[string]findPluginFolderTest 18 19 func setupTestData() { 20 21 testCasesFindPluginFolderTest = map[string]findPluginFolderTest{ 22 "truncated 1": { 23 "hub.steampipe.io/plugins/test/test@sha256-a5ec85d93329-32c3ed1c", 24 filepath.Join(filepaths.EnsurePluginDir(), "hub.steampipe.io/plugins/test/test@sha256-a5ec85d9332910f42a2a9dd44d646eba95f77a0236289a1a14a14abbbdea7a42"), 25 }, 26 "truncated 2 - 2 folders with same prefix": { 27 "hub.steampipe.io/plugins/test/test@sha256-5f77a0236289-94a0eea6", 28 filepath.Join(filepaths.EnsurePluginDir(), "hub.steampipe.io/plugins/test/test@sha256-5f77a0236289a1a14a14abbbdea7a42a5ec85d9332910f42a2a9dd44d646eba9"), 29 }, 30 "no truncation needed": { 31 "hub.steampipe.io/plugins/test/test@latest", 32 filepath.Join(filepaths.EnsurePluginDir(), "hub.steampipe.io/plugins/test/test@latest"), 33 }, 34 } 35 } 36 37 func TestFindPluginFolderTest(t *testing.T) { 38 39 filepaths.SteampipeDir, _ = filehelpers.Tildefy("~/.steampipe") 40 setupTestData() 41 42 directories := []string{ 43 "hub.steampipe.io/plugins/test/test@sha256-a5ec85d9332910f42a2a9dd44d646eba95f77a0236289a1a14a14abbbdea7a42", 44 "hub.steampipe.io/plugins/test/test@sha256-5f77a0236289a1a14a14abbbdea7a42a5ec85d9332910f42a2a9dd44d646eb00", 45 "hub.steampipe.io/plugins/test/test@sha256-5f77a0236289a1a14a14abbbdea7a42a5ec85d9332910f42a2a9dd44d646eba9", 46 "hub.steampipe.io/plugins/test/test@latest", 47 } 48 49 setupFindPluginFolderTest(directories) 50 for name, test := range testCasesFindPluginFolderTest { 51 path, err := filepaths.FindPluginFolder(test.schema) 52 if err != nil { 53 if test.expected != "ERROR" { 54 t.Errorf(`Test: '%s'' FAILED : unexpected error %v`, name, err) 55 } 56 continue 57 } 58 59 if path != test.expected { 60 t.Errorf(`Test: '%s'' FAILED : expected %s, got %s`, name, test.expected, path) 61 } 62 } 63 cleanupFindPluginFolderTest(directories) 64 65 } 66 67 func setupFindPluginFolderTest(directories []string) { 68 for _, dir := range directories { 69 pluginFolder := filepath.Join(filepaths.EnsurePluginDir(), dir) 70 if err := os.MkdirAll(pluginFolder, 0755); err != nil { 71 panic(err) 72 } 73 } 74 } 75 76 func cleanupFindPluginFolderTest(directories []string) { 77 pluginFolder := filepath.Join(filepaths.EnsurePluginDir(), "hub.steampipe.io/plugins/test") 78 os.RemoveAll(pluginFolder) 79 }