forked from pyenv/pyenv
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathversions.bats
156 lines (135 loc) · 2.94 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
#!/usr/bin/env bats
load test_helper
create_version() {
mkdir -p "${PYENV_ROOT}/versions/$1"
}
setup() {
mkdir -p "$PYENV_TEST_DIR"
cd "$PYENV_TEST_DIR"
}
stub_system_python() {
local stub="${PYENV_TEST_DIR}/bin/python"
mkdir -p "$(dirname "$stub")"
touch "$stub" && chmod +x "$stub"
}
@test "no versions installed" {
stub_system_python
assert [ ! -d "${PYENV_ROOT}/versions" ]
run pyenv-versions
assert_success "* system (set by ${PYENV_ROOT}/version)"
}
@test "not even system python available" {
PATH="$(path_without python)" run pyenv-versions
assert_failure
assert_output "Warning: no Python detected on the system"
}
@test "bare output no versions installed" {
assert [ ! -d "${PYENV_ROOT}/versions" ]
run pyenv-versions --bare
assert_success ""
}
@test "single version installed" {
stub_system_python
create_version "3.3"
run pyenv-versions
assert_success
assert_output <<OUT
* system (set by ${PYENV_ROOT}/version)
3.3
OUT
}
@test "single version bare" {
create_version "3.3"
run pyenv-versions --bare
assert_success "3.3"
}
@test "multiple versions" {
stub_system_python
create_version "2.7.6"
create_version "3.3.3"
create_version "3.4.0"
run pyenv-versions
assert_success
assert_output <<OUT
* system (set by ${PYENV_ROOT}/version)
2.7.6
3.3.3
3.4.0
OUT
}
@test "indicates current version" {
stub_system_python
create_version "3.3.3"
create_version "3.4.0"
PYENV_VERSION=3.3.3 run pyenv-versions
assert_success
assert_output <<OUT
system
* 3.3.3 (set by PYENV_VERSION environment variable)
3.4.0
OUT
}
@test "bare doesn't indicate current version" {
create_version "3.3.3"
create_version "3.4.0"
PYENV_VERSION=3.3.3 run pyenv-versions --bare
assert_success
assert_output <<OUT
3.3.3
3.4.0
OUT
}
@test "globally selected version" {
stub_system_python
create_version "3.3.3"
create_version "3.4.0"
cat > "${PYENV_ROOT}/version" <<<"3.3.3"
run pyenv-versions
assert_success
assert_output <<OUT
system
* 3.3.3 (set by ${PYENV_ROOT}/version)
3.4.0
OUT
}
@test "per-project version" {
stub_system_python
create_version "3.3.3"
create_version "3.4.0"
cat > ".python-version" <<<"3.3.3"
run pyenv-versions
assert_success
assert_output <<OUT
system
* 3.3.3 (set by ${PYENV_TEST_DIR}/.python-version)
3.4.0
OUT
}
@test "ignores non-directories under versions" {
create_version "3.3"
touch "${PYENV_ROOT}/versions/hello"
run pyenv-versions --bare
assert_success "3.3"
}
@test "lists symlinks under versions" {
create_version "2.7.8"
ln -s "2.7.8" "${PYENV_ROOT}/versions/2.7"
run pyenv-versions --bare
assert_success
assert_output <<OUT
2.7
2.7.8
OUT
}
@test "doesn't list symlink aliases when --skip-aliases" {
create_version "1.8.7"
ln -s "1.8.7" "${PYENV_ROOT}/versions/1.8"
mkdir moo
ln -s "${PWD}/moo" "${PYENV_ROOT}/versions/1.9"
run pyenv-versions --bare --skip-aliases
assert_success
assert_output <<OUT
1.8.7
1.9
OUT
}