-
Notifications
You must be signed in to change notification settings - Fork 1.4k
/
versions.bats
162 lines (141 loc) · 2.95 KB
/
versions.bats
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#!/usr/bin/env bats
load test_helper
create_version() {
mkdir -p "${RBENV_ROOT}/versions/$1"
}
setup() {
mkdir -p "$RBENV_TEST_DIR"
cd "$RBENV_TEST_DIR"
}
stub_system_ruby() {
local stub="${RBENV_TEST_DIR}/bin/ruby"
mkdir -p "$(dirname "$stub")"
touch "$stub" && chmod +x "$stub"
}
@test "no versions installed" {
stub_system_ruby
assert [ ! -d "${RBENV_ROOT}/versions" ]
run rbenv-versions
assert_success "* system"
}
@test "not even system ruby available" {
PATH="$(path_without ruby)" run rbenv-versions
assert_failure
assert_output "Warning: no Ruby detected on the system"
}
@test "bare output no versions installed" {
assert [ ! -d "${RBENV_ROOT}/versions" ]
run rbenv-versions --bare
assert_success ""
}
@test "single version installed" {
stub_system_ruby
create_version "1.9"
run rbenv-versions
assert_success
assert_output <<OUT
* system
1.9
OUT
}
@test "single version bare" {
create_version "1.9"
run rbenv-versions --bare
assert_success "1.9"
}
@test "multiple versions" {
stub_system_ruby
create_version "1.8.7"
create_version "1.9.3-p13"
create_version "1.9.3-p2"
create_version "2.2.10"
create_version "2.2.3"
create_version "2.2.3-pre.2"
run rbenv-versions
assert_success
assert_output <<OUT
* system
1.8.7
1.9.3-p2
1.9.3-p13
2.2.3-pre.2
2.2.3
2.2.10
OUT
}
@test "indicates current version" {
stub_system_ruby
create_version "1.9.3"
create_version "2.0.0"
RBENV_VERSION=1.9.3 run rbenv-versions
assert_success
assert_output <<OUT
system
* 1.9.3 (set by RBENV_VERSION environment variable)
2.0.0
OUT
}
@test "bare doesn't indicate current version" {
create_version "1.9.3"
create_version "2.0.0"
RBENV_VERSION=1.9.3 run rbenv-versions --bare
assert_success
assert_output <<OUT
1.9.3
2.0.0
OUT
}
@test "globally selected version" {
stub_system_ruby
create_version "1.9.3"
create_version "2.0.0"
cat > "${RBENV_ROOT}/version" <<<"1.9.3"
run rbenv-versions
assert_success
assert_output <<OUT
system
* 1.9.3 (set by ${RBENV_ROOT}/version)
2.0.0
OUT
}
@test "per-project version" {
stub_system_ruby
create_version "1.9.3"
create_version "2.0.0"
cat > ".ruby-version" <<<"1.9.3"
run rbenv-versions
assert_success
assert_output <<OUT
system
* 1.9.3 (set by ${RBENV_TEST_DIR}/.ruby-version)
2.0.0
OUT
}
@test "ignores non-directories under versions" {
create_version "1.9"
touch "${RBENV_ROOT}/versions/hello"
run rbenv-versions --bare
assert_success "1.9"
}
@test "lists symlinks under versions" {
create_version "1.8.7"
ln -s "1.8.7" "${RBENV_ROOT}/versions/1.8"
run rbenv-versions --bare
assert_success
assert_output <<OUT
1.8
1.8.7
OUT
}
@test "doesn't list symlink aliases when --skip-aliases" {
create_version "1.8.7"
ln -s "1.8.7" "${RBENV_ROOT}/versions/1.8"
mkdir moo
ln -s "${PWD}/moo" "${RBENV_ROOT}/versions/1.9"
run rbenv-versions --bare --skip-aliases
assert_success
assert_output <<OUT
1.8.7
1.9
OUT
}