github.com/danhper/asdf-exec@v0.1.3-0.20230723223931-b71340b83071/version_manager_test.go (about)

     1  package main
     2  
     3  import (
     4  	"os"
     5  	"path"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  func TestParseVersion(t *testing.T) {
    12  	assert.Equal(t, []string{"3.7.2"}, ParseVersion(" 3.7.2"))
    13  	assert.Equal(t, []string{"3.7.2", "2.7.16", "system"}, ParseVersion(" 3.7.2 2.7.16 system"))
    14  }
    15  
    16  func TestFindVersionsInEnv(t *testing.T) {
    17  	_, found := FindVersionsInEnv("python")
    18  	assert.False(t, found)
    19  	os.Setenv("ASDF_PYTHON_VERSION", "3.7.2 2.7.16")
    20  	versions, found := FindVersionsInEnv("python")
    21  	assert.True(t, found)
    22  	assert.Len(t, versions, 2)
    23  	assert.Equal(t, []string{"3.7.2", "2.7.16"}, versions)
    24  	os.Unsetenv("ASDF_PYTHON_VERSION")
    25  }
    26  
    27  func TestFindVersionsInToolFileContent(t *testing.T) {
    28  	content := `
    29  	# some comments
    30  	python 3.6.7 2.7.11 system  # fallback to system
    31  
    32  	ruby 2.6.2
    33  	`
    34  	versions, found := FindVersionsInToolFileContent("python", content)
    35  	assert.True(t, found)
    36  	assert.Len(t, versions, 3)
    37  	assert.Equal(t, []string{"3.6.7", "2.7.11", "system"}, versions)
    38  
    39  	versions, found = FindVersionsInToolFileContent("ruby", content)
    40  	assert.True(t, found)
    41  	assert.Len(t, versions, 1)
    42  	assert.Equal(t, []string{"2.6.2"}, versions)
    43  
    44  	_, found = FindVersionsInToolFileContent("nodejs", content)
    45  	assert.False(t, found)
    46  }
    47  
    48  func TestFindVersions(t *testing.T) {
    49  	cwd, err := os.Getwd()
    50  	assert.Nil(t, err)
    51  
    52  	defer os.Chdir(cwd)
    53  	defer os.Unsetenv("ASDF_DATA_DIR")
    54  
    55  	config := Config{LegacyVersionFile: true}
    56  
    57  	os.Setenv("HOME", "/tmp")
    58  	assert.Nil(t, os.Chdir("/tmp"))
    59  	_, found, err := FindVersions("python", config)
    60  	assert.Nil(t, err)
    61  	assert.False(t, found)
    62  
    63  	assert.Nil(t, os.Chdir(path.Join(cwd, "fixtures", "some-dir", "nested-dir")))
    64  	versions, found, err := FindVersions("python", config)
    65  	assert.Nil(t, err)
    66  	assert.True(t, found)
    67  	assert.Equal(t, []string{"3.6.7", "2.7.11"}, versions)
    68  
    69  	os.Setenv("HOME", path.Join(cwd, "fixtures", "some-dir"))
    70  	assert.Nil(t, os.Chdir("/tmp"))
    71  	versions, found, err = FindVersions("python", config)
    72  	assert.Nil(t, err)
    73  	assert.True(t, found)
    74  	assert.Equal(t, []string{"3.6.7", "2.7.11"}, versions)
    75  
    76  	delete(legacyFileNamesCache, "python")
    77  	os.Setenv("ASDF_DATA_DIR", path.Join(cwd, "fixtures", "asdf"))
    78  	assert.Nil(t, os.Chdir(path.Join(cwd, "fixtures", "some-dir", "with-legacy-version")))
    79  	versions, found, err = FindVersions("python", config)
    80  	assert.Nil(t, err)
    81  	assert.True(t, found)
    82  	assert.Equal(t, []string{"2.7.11"}, versions)
    83  
    84  	assert.Nil(t, os.Chdir(path.Join(cwd, "fixtures", "some-dir", "with-legacy-version")))
    85  	versions, found, err = FindVersions("ruby", config)
    86  	assert.Nil(t, err)
    87  	assert.True(t, found)
    88  	assert.Equal(t, []string{"2.0.0"}, versions)
    89  }