|
|
|
@ -5,31 +5,36 @@ export PYENV_ROOT="${TMP}/pyenv" |
|
|
|
|
|
|
|
setup() { |
|
|
|
stub pyenv-hooks 'install : true' |
|
|
|
stub pyenv-rehash 'true' |
|
|
|
stub pyenv-rehash true |
|
|
|
} |
|
|
|
|
|
|
|
stub_python_build() { |
|
|
|
stub_python_build_lib() { |
|
|
|
stub python-build "--lib : $BATS_TEST_DIRNAME/../bin/python-build --lib" "$@" |
|
|
|
stub pyenv-latest ": false" |
|
|
|
} |
|
|
|
|
|
|
|
@test "install proper" { |
|
|
|
stub_python_build 'echo python-build "$@"' |
|
|
|
stub_python_build_no_latest() { |
|
|
|
stub python-build "${@:-echo python-build \"\$@\"}" |
|
|
|
} |
|
|
|
|
|
|
|
stub_python_build() { |
|
|
|
stub_python_build_no_latest "$@" |
|
|
|
stub pyenv-latest false |
|
|
|
} |
|
|
|
|
|
|
|
@test "install a single version" { |
|
|
|
stub_python_build_lib |
|
|
|
stub_python_build |
|
|
|
|
|
|
|
run pyenv-install 3.4.2 |
|
|
|
assert_success "python-build 3.4.2 ${PYENV_ROOT}/versions/3.4.2" |
|
|
|
|
|
|
|
unstub python-build |
|
|
|
unstub pyenv-hooks |
|
|
|
unstub pyenv-rehash |
|
|
|
} |
|
|
|
|
|
|
|
@test "install proper multi versions" { |
|
|
|
#stub python-build "--lib : $BATS_TEST_DIRNAME/../bin/python-build --lib" 'echo python-build "$@"' 'echo python-build "$@"' |
|
|
|
#stub pyenv-latest ": false" ": false" |
|
|
|
stub_python_build 'echo python-build "$@"' 'echo python-build "$@"' |
|
|
|
stub pyenv-latest ": false" |
|
|
|
stub pyenv-rehash 'true' |
|
|
|
@test "install multiple versions" { |
|
|
|
stub_python_build_lib |
|
|
|
stub_python_build |
|
|
|
stub_python_build |
|
|
|
|
|
|
|
run pyenv-install 3.4.1 3.4.2 |
|
|
|
assert_success |
|
|
|
@ -40,61 +45,72 @@ OUT |
|
|
|
|
|
|
|
unstub python-build |
|
|
|
unstub pyenv-latest |
|
|
|
unstub pyenv-hooks |
|
|
|
unstub pyenv-rehash |
|
|
|
} |
|
|
|
|
|
|
|
@test "install resolves a prefix" { |
|
|
|
stub_python_build 'echo python-build "$@"' |
|
|
|
stub pyenv-latest '-q -k 3.4 : echo 3.4.2' |
|
|
|
pyenv-latest || true # pass through the stub entry added by stub_python_build |
|
|
|
@test "install multiple versions, some fail" { |
|
|
|
stub_python_build_lib |
|
|
|
stub_python_build 'echo "fail: python-build" "$@"; false' |
|
|
|
|
|
|
|
run pyenv-install 3.4 |
|
|
|
assert_success "python-build 3.4.2 ${PYENV_ROOT}/versions/3.4.2" |
|
|
|
run pyenv-install 3.4.1 3.4.2 |
|
|
|
assert_failure |
|
|
|
assert_output <<OUT |
|
|
|
fail: python-build 3.4.1 ${TMP}/pyenv/versions/3.4.1 |
|
|
|
OUT |
|
|
|
|
|
|
|
unstub python-build |
|
|
|
unstub pyenv-hooks |
|
|
|
unstub pyenv-rehash |
|
|
|
} |
|
|
|
|
|
|
|
@test "install resolves a prefix with multi versions" { |
|
|
|
stub_python_build 'echo python-build "$@"' 'echo python-build "$@"' |
|
|
|
stub pyenv-latest '-q -k 3.4 : echo 3.4.2' '-q -k 3.5 : echo 3.5.2' |
|
|
|
stub pyenv-rehash 'true' |
|
|
|
pyenv-latest || true # pass through the stub entry added by stub_python_build |
|
|
|
|
|
|
|
run pyenv-install 3.4 3.5 |
|
|
|
@test "install resolves a prefix" { |
|
|
|
stub_python_build_lib |
|
|
|
for i in {1..3}; do stub_python_build_no_latest; done |
|
|
|
stub pyenv-latest \ |
|
|
|
'-q -k 3.4 : echo 3.4.2' \ |
|
|
|
'-q -k 3.5.1 : false' \ |
|
|
|
'-q -k 3.5 : echo 3.5.2' |
|
|
|
|
|
|
|
run pyenv-install 3.4 3.5.1 3.5 |
|
|
|
assert_success <<OUT |
|
|
|
python-build 3.4.2 ${PYENV_ROOT}/versions/3.4.2 |
|
|
|
python-build 3.5.1 ${PYENV_ROOT}/versions/3.5.1 |
|
|
|
python-build 3.5.2 ${PYENV_ROOT}/versions/3.5.2 |
|
|
|
OUT |
|
|
|
|
|
|
|
|
|
|
|
unstub python-build |
|
|
|
unstub pyenv-hooks |
|
|
|
unstub pyenv-rehash |
|
|
|
} |
|
|
|
|
|
|
|
@test "install pyenv local version by default" { |
|
|
|
stub_python_build 'echo python-build "$1"' |
|
|
|
stub pyenv-local 'echo 3.4.2' |
|
|
|
|
|
|
|
run pyenv-install |
|
|
|
assert_success "python-build 3.4.2" |
|
|
|
@test "install resolves :latest" { |
|
|
|
stub_python_build_lib |
|
|
|
for i in {1..2}; do stub_python_build '--definitions : echo -e 3.4.2\\n3.5.1\\n3.5.2'; done |
|
|
|
for i in {1..2}; do stub_python_build; done |
|
|
|
|
|
|
|
pyenv-hooks install; unstub pyenv-hooks |
|
|
|
PYENV_INSTALL_ROOT="$BATS_TEST_DIRNAME/../../.." |
|
|
|
export PYENV_HOOK_PATH="$PYENV_INSTALL_ROOT/pyenv.d" |
|
|
|
[[ -d "$PYENV_INSTALL_ROOT/libexec" ]] || skip "python-build is installed separately from pyenv" |
|
|
|
export PATH="$PATH:$PYENV_INSTALL_ROOT/libexec" |
|
|
|
|
|
|
|
run pyenv-install 3.4:latest 3:latest |
|
|
|
assert_success <<! |
|
|
|
python-build 3.4.2 ${PYENV_ROOT}/versions/3.4.2 |
|
|
|
python-build 3.5.2 ${PYENV_ROOT}/versions/3.5.2 |
|
|
|
! |
|
|
|
|
|
|
|
unstub python-build |
|
|
|
unstub pyenv-local |
|
|
|
} |
|
|
|
|
|
|
|
@test "install pyenv local multi versions by default" { |
|
|
|
stub_python_build 'echo python-build "$1"' 'echo python-build "$1"' |
|
|
|
stub pyenv-local 'printf "%s\n%s\n" 3.4.2 3.4.1' |
|
|
|
stub pyenv-latest ": false" |
|
|
|
@test "install installs local versions by default" { |
|
|
|
stub_python_build_lib |
|
|
|
stub_python_build |
|
|
|
stub_python_build |
|
|
|
stub pyenv-local 'echo 3.4.2; echo 3.4.1' |
|
|
|
|
|
|
|
run pyenv-install |
|
|
|
assert_success <<OUT |
|
|
|
python-build 3.4.2" |
|
|
|
python-build 3.4.1" |
|
|
|
python-build 3.4.2 |
|
|
|
python-build 3.4.1 |
|
|
|
OUT |
|
|
|
|
|
|
|
unstub python-build |
|
|
|
@ -102,8 +118,8 @@ OUT |
|
|
|
} |
|
|
|
|
|
|
|
@test "list available versions" { |
|
|
|
stub_python_build \ |
|
|
|
"--definitions : echo 2.6.9 2.7.9-rc1 2.7.9-rc2 3.4.2 | tr ' ' $'\\n'" |
|
|
|
stub_python_build_lib |
|
|
|
stub_python_build "--definitions : echo 2.6.9 2.7.9-rc1 2.7.9-rc2 3.4.2 | tr ' ' $'\\n'" |
|
|
|
|
|
|
|
run pyenv-install --list |
|
|
|
assert_success |
|
|
|
@ -118,10 +134,11 @@ OUT |
|
|
|
unstub python-build |
|
|
|
} |
|
|
|
|
|
|
|
@test "nonexistent version" { |
|
|
|
@test "upgrade instructions given for a nonexistent version" { |
|
|
|
stub brew false |
|
|
|
stub_python_build 'echo ERROR >&2 && exit 2' \ |
|
|
|
"--definitions : echo 2.6.9 2.7.9-rc1 2.7.9-rc2 3.4.2 | tr ' ' $'\\n'" |
|
|
|
stub_python_build_lib |
|
|
|
stub_python_build 'echo ERROR >&2 && exit 2' |
|
|
|
stub_python_build "--definitions : echo 2.6.9 2.7.9-rc1 2.7.9-rc2 3.4.2 | tr ' ' $'\\n'" |
|
|
|
|
|
|
|
run pyenv-install 2.7.9 |
|
|
|
assert_failure |
|
|
|
@ -142,8 +159,9 @@ OUT |
|
|
|
unstub python-build |
|
|
|
} |
|
|
|
|
|
|
|
@test "Homebrew upgrade instructions" { |
|
|
|
@test "homebrew upgrade instructions given when pyenv is homebrew-installed" { |
|
|
|
stub brew "--prefix : echo '${BATS_TEST_DIRNAME%/*}'" |
|
|
|
stub_python_build_lib |
|
|
|
stub_python_build 'echo ERROR >&2 && exit 2' \ |
|
|
|
"--definitions : true" |
|
|
|
|
|
|
|
@ -165,15 +183,19 @@ OUT |
|
|
|
|
|
|
|
@test "no build definitions from plugins" { |
|
|
|
assert [ ! -e "${PYENV_ROOT}/plugins" ] |
|
|
|
stub_python_build_lib |
|
|
|
stub_python_build 'echo $PYTHON_BUILD_DEFINITIONS' |
|
|
|
|
|
|
|
run pyenv-install 3.4.2 |
|
|
|
assert_success "" |
|
|
|
|
|
|
|
unstub python-build |
|
|
|
} |
|
|
|
|
|
|
|
@test "some build definitions from plugins" { |
|
|
|
mkdir -p "${PYENV_ROOT}/plugins/foo/share/python-build" |
|
|
|
mkdir -p "${PYENV_ROOT}/plugins/bar/share/python-build" |
|
|
|
stub_python_build_lib |
|
|
|
stub_python_build "echo \$PYTHON_BUILD_DEFINITIONS | tr ':' $'\\n'" |
|
|
|
|
|
|
|
run pyenv-install 3.4.2 |
|
|
|
@ -183,11 +205,14 @@ OUT |
|
|
|
${PYENV_ROOT}/plugins/bar/share/python-build |
|
|
|
${PYENV_ROOT}/plugins/foo/share/python-build |
|
|
|
OUT |
|
|
|
|
|
|
|
unstub python-build |
|
|
|
} |
|
|
|
|
|
|
|
@test "list build definitions from plugins" { |
|
|
|
mkdir -p "${PYENV_ROOT}/plugins/foo/share/python-build" |
|
|
|
mkdir -p "${PYENV_ROOT}/plugins/bar/share/python-build" |
|
|
|
stub_python_build_lib |
|
|
|
stub_python_build "--definitions : echo \$PYTHON_BUILD_DEFINITIONS | tr ':' $'\\n'" |
|
|
|
|
|
|
|
run pyenv-install --list |
|
|
|
@ -198,12 +223,14 @@ Available versions: |
|
|
|
${PYENV_ROOT}/plugins/bar/share/python-build |
|
|
|
${PYENV_ROOT}/plugins/foo/share/python-build |
|
|
|
OUT |
|
|
|
|
|
|
|
unstub python-build |
|
|
|
} |
|
|
|
|
|
|
|
@test "completion results include build definitions from plugins" { |
|
|
|
mkdir -p "${PYENV_ROOT}/plugins/foo/share/python-build" |
|
|
|
mkdir -p "${PYENV_ROOT}/plugins/bar/share/python-build" |
|
|
|
stub python-build "--definitions : echo \$PYTHON_BUILD_DEFINITIONS | tr ':' $'\\n'" |
|
|
|
stub_python_build "--definitions : echo \$PYTHON_BUILD_DEFINITIONS | tr ':' $'\\n'" |
|
|
|
|
|
|
|
run pyenv-install --complete |
|
|
|
assert_success |
|
|
|
@ -220,10 +247,12 @@ OUT |
|
|
|
${PYENV_ROOT}/plugins/bar/share/python-build |
|
|
|
${PYENV_ROOT}/plugins/foo/share/python-build |
|
|
|
OUT |
|
|
|
|
|
|
|
unstub python-build |
|
|
|
} |
|
|
|
|
|
|
|
@test "not enough arguments for pyenv-install if no local version" { |
|
|
|
stub_python_build |
|
|
|
stub_python_build_lib |
|
|
|
stub pyenv-help 'install : true' |
|
|
|
|
|
|
|
run pyenv-install |
|
|
|
@ -232,17 +261,7 @@ OUT |
|
|
|
assert_output "" |
|
|
|
} |
|
|
|
|
|
|
|
@test "multi arguments for pyenv-install" { |
|
|
|
stub_python_build |
|
|
|
stub pyenv-help 'install : true' |
|
|
|
|
|
|
|
run pyenv-install 3.4.1 3.4.2 |
|
|
|
assert_success |
|
|
|
assert_output "" |
|
|
|
} |
|
|
|
|
|
|
|
@test "show help for pyenv-install" { |
|
|
|
stub_python_build |
|
|
|
stub pyenv-help 'install : true' |
|
|
|
|
|
|
|
run pyenv-install -h |
|
|
|
@ -263,7 +282,7 @@ OUT |
|
|
|
unstub pyenv-help |
|
|
|
} |
|
|
|
|
|
|
|
@test "more than one argument for pyenv-uninstall" { |
|
|
|
@test "multiple arguments for pyenv-uninstall" { |
|
|
|
mkdir -p "${PYENV_ROOT}/versions/3.4.1" |
|
|
|
mkdir -p "${PYENV_ROOT}/versions/3.4.2" |
|
|
|
run pyenv-uninstall -f 3.4.1 3.4.2 |
|
|
|
|