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 }