github.com/loft-sh/loftctl/v2@v2.3.2/pkg/upgrade/upgrade_test.go (about) 1 package upgrade 2 3 import ( 4 "github.com/loft-sh/loftctl/v2/pkg/log" 5 "io/ioutil" 6 "os" 7 "strings" 8 "testing" 9 10 "github.com/rhysd/go-github-selfupdate/selfupdate" 11 12 "gotest.tools/assert" 13 ) 14 15 func TestSetVersion(t *testing.T) { 16 SetVersion("sasd0.0.1hello") 17 assert.Equal(t, "0.0.1hello", GetVersion(), "Wrong version set") 18 } 19 20 func TestEraseVersionPrefix(t *testing.T) { 21 prefixless, err := eraseVersionPrefix("sasd0.0.1hello") 22 if err != nil { 23 t.Fatalf("Error erasing Version: %v", err) 24 } 25 assert.Equal(t, "0.0.1hello", prefixless, "Wrong version set") 26 27 _, err = eraseVersionPrefix(".0.1hello") 28 assert.Equal(t, true, err != nil, "No error returned with invalid string") 29 } 30 31 func TestUpgrade(t *testing.T) { 32 t.Skip("Skip because of some API-limit") 33 //Create TmpFolder 34 dir, err := ioutil.TempDir("", "test") 35 if err != nil { 36 t.Fatalf("Error creating temporary directory: %v", err) 37 } 38 39 wdBackup, err := os.Getwd() 40 if err != nil { 41 t.Fatalf("Error getting current working directory: %v", err) 42 } 43 err = os.Chdir(dir) 44 if err != nil { 45 t.Fatalf("Error changing working directory: %v", err) 46 } 47 48 // Cleanup temp folder 49 defer func() { 50 err = os.Chdir(wdBackup) 51 if err != nil { 52 t.Fatalf("Error changing dir back: %v", err) 53 } 54 err = os.RemoveAll(dir) 55 if err != nil { 56 t.Fatalf("Error removing dir: %v", err) 57 } 58 }() 59 60 logFile, err := ioutil.TempFile(dir, "log") 61 if err != nil { 62 t.Fatalf("Error creating temporary log file: %v", err) 63 } 64 *(os.Stderr) = *logFile 65 66 latest, found, err := selfupdate.DetectLatest(githubSlug) 67 if err != nil { 68 t.Fatalf("Error searching for version: %v", err) 69 } else if !found { 70 t.Fatalf("No version found.") 71 } 72 73 versionBackup := version 74 version = latest.Version.String() 75 defer func() { version = versionBackup }() 76 77 //Newest version already reached 78 err = Upgrade("", log.GetInstance()) 79 assert.Equal(t, false, err != nil, "Upgrade returned error if newest version already reached") 80 err = logFile.Close() 81 if err != nil { 82 t.Fatalf("Error closing temporary log file: %v", err) 83 } 84 logs, err := ioutil.ReadFile(logFile.Name()) 85 if err != nil { 86 t.Fatalf("Error reading temporary log file: %v", err) 87 } 88 assert.Equal(t, true, strings.Contains(string(logs), "Current binary is the latest version: "+version)) 89 90 //Invalid githubSlug causes search to return an error 91 githubSlugBackup := githubSlug 92 githubSlug = "" 93 defer func() { githubSlug = githubSlugBackup }() 94 err = Upgrade("", log.GetInstance()) 95 assert.Equal(t, true, err != nil, "No error returned if DetectLatest returns one.") 96 }