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  }