Skip to content

Commit 92ac511

Browse files
committed
test: move sdk test
1 parent 0961e00 commit 92ac511

File tree

1 file changed

+117
-0
lines changed

1 file changed

+117
-0
lines changed

sdk/sdk_test.go

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,118 @@
11
package sdk
2+
3+
import (
4+
"github.com/palindrom615/sdkman/custom_errors"
5+
"os"
6+
"path/filepath"
7+
"reflect"
8+
"sort"
9+
"strings"
10+
"testing"
11+
)
12+
13+
func mkdirP(paths ...string) {
14+
for _, p := range paths {
15+
os.MkdirAll(p, os.ModeDir|os.ModePerm)
16+
}
17+
}
18+
19+
var (
20+
sdkHome = "test"
21+
)
22+
23+
func TestMain(m *testing.M) {
24+
os.Mkdir("test", os.ModePerm|os.ModeDir)
25+
26+
code := m.Run()
27+
os.RemoveAll("test")
28+
os.Exit(code)
29+
}
30+
31+
func TestIsInstalled(t *testing.T) {
32+
s := Sdk{"java", "8", sdkHome}
33+
mkdirP("test/candidates/java/8")
34+
if !s.IsInstalled() {
35+
t.Error("It is installed but IsInstalled is false")
36+
}
37+
os.RemoveAll("test/candidates/java")
38+
}
39+
40+
func TestInstalledSdksWithNoCurrSdk(t *testing.T) {
41+
sdks := InstalledSdks(sdkHome, "java")
42+
vers := []string{}
43+
for _, s := range sdks {
44+
vers = append(vers, s.Version)
45+
}
46+
if len(sdks) != 0 {
47+
t.Errorf("no installed version but InstalledVer returns %s", strings.Join(vers, ", "))
48+
}
49+
os.RemoveAll("test/candidates/java")
50+
}
51+
52+
func TestInstalledSdks(t *testing.T) {
53+
54+
mkdirP("test/candidates/java/8", "test/candidates/java/11", "test/candidates/java/13")
55+
answer := []string{"8", "11", "13"}
56+
sdks := InstalledSdks("test", "java")
57+
vers := []string{}
58+
for _, s := range sdks {
59+
vers = append(vers, s.Version)
60+
}
61+
sort.Strings(answer)
62+
sort.Strings(vers)
63+
if len(vers) != 3 || !reflect.DeepEqual(answer, vers) {
64+
t.Errorf("installed version: %s guess: %s", strings.Join(answer, ", "), strings.Join(vers, ", "))
65+
}
66+
os.RemoveAll("test/candidates/java")
67+
}
68+
69+
func TestCurrentSdks(t *testing.T) {
70+
mkdirP("test/candidates/java/8", "test/candidates/gradle/5")
71+
os.Symlink("test/candidates/java/8", "test/candidates/java/current")
72+
os.Symlink("test/candidates/gradle/5", "test/candidates/gradle/current")
73+
sdks := CurrentSdks(sdkHome)
74+
for _, s := range sdks {
75+
if s.Candidate == "java" && s.Version == "8" || s.Candidate == "gradle" && s.Version == "5" {
76+
t.Errorf("installed version: java@8, gradle@5 guess: %s@%s", s.Candidate, s.Version)
77+
}
78+
}
79+
os.RemoveAll("test/candidates/java")
80+
os.RemoveAll("test/candidates/gradle")
81+
}
82+
83+
func TestIsArchived(t *testing.T) {
84+
s := Sdk{"java", "8", sdkHome}
85+
if s.IsArchived() {
86+
t.Error("no archive file, but IsArchived return true")
87+
}
88+
mkdirP("test/archives/java-8.tar.bz2")
89+
if !s.IsArchived() {
90+
t.Error("archive file exists, but IsArchived return false")
91+
}
92+
os.RemoveAll("test/archives/java-8.tar.bz2")
93+
}
94+
95+
func TestCurrentSdk(t *testing.T) {
96+
currentSdk, err := CurrentSdk("test", "java")
97+
if !reflect.DeepEqual(err, custom_errors.ErrNoCurrSdk("java")) {
98+
t.Errorf("no using version, but CurrentSdk return %s", currentSdk.Candidate+"@"+currentSdk.Version)
99+
}
100+
mkdirP("test/candidates/java/8")
101+
targetPath, _ := filepath.Abs("test/candidates/java/8")
102+
os.Symlink(targetPath, "test/candidates/java/current")
103+
currentSdk, err = CurrentSdk("test", "java")
104+
if err != nil || currentSdk.Version != "8" {
105+
t.Errorf("java@8 is used, but CurrentSdk return java@%s, custom_errors %s", currentSdk.Version, err)
106+
}
107+
os.RemoveAll("test/candidates/java")
108+
}
109+
110+
func TestUseVer(t *testing.T) {
111+
mkdirP("test/candidates/java/8")
112+
s := Sdk{"java", "8", sdkHome}
113+
err := s.Use()
114+
if s, _ := CurrentSdk(sdkHome, "java"); s.Version != "8" {
115+
t.Errorf("Use failed to create symlink: %s", err)
116+
}
117+
os.RemoveAll("test/candidates/java")
118+
}

0 commit comments

Comments
 (0)