mirror of
https://github.com/pyenv/pyenv-virtualenv.git
synced 2025-11-14 22:43:52 -05:00
Merge branch 'envs-riwyo-anyenv-workaround' (fixes #130)
This commit is contained in:
@@ -9,6 +9,10 @@
|
||||
set -e
|
||||
[ -n "$PYENV_DEBUG" ] && set -x
|
||||
|
||||
if [ -z "${PYENV_ROOT}" ]; then
|
||||
PYENV_ROOT="$(pyenv-root)"
|
||||
fi
|
||||
|
||||
unset FORCE
|
||||
unset QUIET
|
||||
unset VERBOSE
|
||||
@@ -48,8 +52,8 @@ fi
|
||||
shell="$(basename "${PYENV_SHELL:-$SHELL}")"
|
||||
prefix="${VIRTUAL_ENV}"
|
||||
|
||||
if [[ "${prefix}" != "${prefix%/envs/*}" ]]; then
|
||||
venv="$(basename "${prefix%/envs/*}")/envs/${prefix##*/}"
|
||||
if [[ "${prefix%/*/envs/*}" == "${PYENV_ROOT}/versions" ]]; then
|
||||
venv="${prefix#${PYENV_ROOT}/versions/}"
|
||||
else
|
||||
venv="${prefix##*/}"
|
||||
fi
|
||||
|
||||
@@ -11,13 +11,13 @@
|
||||
|
||||
PYENV_VIRTUALENV_VERSION="20151103"
|
||||
|
||||
set -e
|
||||
[ -n "$PYENV_DEBUG" ] && set -x
|
||||
|
||||
if [ -z "${PYENV_ROOT}" ]; then
|
||||
PYENV_ROOT="$(pyenv-root)"
|
||||
fi
|
||||
|
||||
set -e
|
||||
[ -n "$PYENV_DEBUG" ] && set -x
|
||||
|
||||
# Provide pyenv completions
|
||||
if [ "$1" = "--complete" ]; then
|
||||
exec pyenv-versions --bare
|
||||
@@ -328,11 +328,6 @@ if [ ! -d "${PREFIX}" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${PREFIX}" != "${PREFIX%/envs/*}" ]]; then
|
||||
echo "pyenv-virtualenv: nested virtualenv is not supported." 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$TMPDIR" ]; then
|
||||
TMP="/tmp"
|
||||
else
|
||||
@@ -343,11 +338,16 @@ fi
|
||||
if [[ "${VERSION_NAME%/envs/*}" == "system" ]]; then
|
||||
VIRTUALENV_NAME="${VIRTUALENV_NAME##*/}"
|
||||
else
|
||||
VIRTUALENV_NAME="${VERSION_NAME}/envs/${VIRTUALENV_NAME##*/}"
|
||||
VIRTUALENV_PREFIX="$(pyenv-virtualenv-prefix 2>/dev/null || true)"
|
||||
if [[ "${VIRTUALENV_PREFIX%/*}" == "${PYENV_ROOT}/versions" ]]; then
|
||||
VIRTUALENV_NAME="${VIRTUALENV_PREFIX#${PYENV_ROOT}/versions/}/envs/${VIRTUALENV_NAME##*/}"
|
||||
else
|
||||
VIRTUALENV_NAME="${VERSION_NAME}/envs/${VIRTUALENV_NAME##*/}"
|
||||
fi
|
||||
fi
|
||||
|
||||
VIRTUALENV_PATH="${PYENV_ROOT}/versions/${VIRTUALENV_NAME}"
|
||||
if [[ "${VIRTUALENV_PATH}" != "${VIRTUALENV_PATH%/envs/*}" ]]; then
|
||||
if [[ "${VIRTUALENV_PATH/*/envs/*}" != "${PYENV_ROOT}/versions" ]]; then
|
||||
COMPAT_VIRTUALENV_PATH="${PYENV_ROOT}/versions/${VIRTUALENV_NAME##*/}"
|
||||
fi
|
||||
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
set -e
|
||||
[ -n "$PYENV_DEBUG" ] && set -x
|
||||
|
||||
if [ -z "${PYENV_ROOT}" ]; then
|
||||
PYENV_ROOT="$(pyenv-root)"
|
||||
fi
|
||||
|
||||
# Provide pyenv completions
|
||||
if [ "$1" = "--complete" ]; then
|
||||
exec pyenv virtualenvs --bare
|
||||
@@ -63,7 +67,7 @@ if [[ "${DEFINITION}" != "${DEFINITION%/envs/*}" ]]; then
|
||||
else
|
||||
if [ -L "${COMPAT_PREFIX}" ]; then
|
||||
PREFIX="$(resolve_link "${COMPAT_PREFIX}" 2>/dev/null || true)"
|
||||
if [[ "${PREFIX}" == "${PREFIX%/envs/*}" ]]; then
|
||||
if [[ "${PREFIX%/*/envs/*}" != "${PYENV_ROOT}/versions" ]]; then
|
||||
echo "pyenv-virtualenv: \`${COMPAT_PREFIX}' is a symlink for unknown location." 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -25,6 +25,7 @@ unstub_pyenv() {
|
||||
setup_conda "${PYENV_VERSION}"
|
||||
stub_pyenv "${PYENV_VERSION}"
|
||||
stub pyenv-prefix " : echo '${PYENV_ROOT}/versions/${PYENV_VERSION}'"
|
||||
stub pyenv-virtualenv-prefix " : echo '${PYENV_ROOT}/versions/${PYENV_VERSION}'"
|
||||
stub pyenv-exec "conda * : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
|
||||
stub pyenv-exec "python -s -m ensurepip : true"
|
||||
|
||||
@@ -37,6 +38,7 @@ rehashed
|
||||
OUT
|
||||
|
||||
unstub_pyenv
|
||||
unstub pyenv-virtualenv-prefix
|
||||
unstub pyenv-exec
|
||||
teardown_pyvenv "miniconda3-3.16.0"
|
||||
}
|
||||
@@ -46,6 +48,7 @@ OUT
|
||||
setup_conda "${PYENV_VERSION}"
|
||||
stub_pyenv "${PYENV_VERSION}"
|
||||
stub pyenv-prefix " : echo '${PYENV_ROOT}/versions/${PYENV_VERSION}'"
|
||||
stub pyenv-virtualenv-prefix " : echo '${PYENV_ROOT}/versions/${PYENV_VERSION}'"
|
||||
stub pyenv-exec "conda * : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
|
||||
stub pyenv-exec "python -s -m ensurepip : true"
|
||||
|
||||
@@ -58,6 +61,7 @@ rehashed
|
||||
OUT
|
||||
|
||||
unstub_pyenv
|
||||
unstub pyenv-virtualenv-prefix
|
||||
unstub pyenv-exec
|
||||
teardown_pyvenv "miniconda3-3.16.0"
|
||||
}
|
||||
@@ -67,6 +71,7 @@ OUT
|
||||
setup_conda "${PYENV_VERSION}"
|
||||
stub_pyenv "${PYENV_VERSION}"
|
||||
stub pyenv-prefix " : echo '${PYENV_ROOT}/versions/${PYENV_VERSION}'"
|
||||
stub pyenv-virtualenv-prefix " : echo '${PYENV_ROOT}/versions/${PYENV_VERSION}'"
|
||||
stub pyenv-exec "conda * : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
|
||||
stub pyenv-exec "python -s -m ensurepip : true"
|
||||
|
||||
@@ -79,6 +84,7 @@ rehashed
|
||||
OUT
|
||||
|
||||
unstub_pyenv
|
||||
unstub pyenv-virtualenv-prefix
|
||||
unstub pyenv-exec
|
||||
teardown_pyvenv "miniconda3-3.16.0"
|
||||
}
|
||||
|
||||
46
test/envs.bats
Normal file
46
test/envs.bats
Normal file
@@ -0,0 +1,46 @@
|
||||
#!/usr/bin/env bats
|
||||
|
||||
load test_helper
|
||||
|
||||
setup() {
|
||||
export PYENV_ROOT="${TMP}/envs/pyenv"
|
||||
}
|
||||
|
||||
stub_pyenv() {
|
||||
stub pyenv-prefix " : echo '${PYENV_ROOT}/versions/${PYENV_VERSION}'"
|
||||
stub pyenv-hooks "virtualenv : echo"
|
||||
stub pyenv-rehash " : echo rehashed"
|
||||
}
|
||||
|
||||
unstub_pyenv() {
|
||||
unstub pyenv-prefix
|
||||
unstub pyenv-hooks
|
||||
unstub pyenv-rehash
|
||||
}
|
||||
|
||||
@test "path should be handled properly even if there is 'envs' in PYENV_ROOT" {
|
||||
export PYENV_VERSION="3.4.1"
|
||||
setup_pyvenv "3.4.1"
|
||||
stub_pyenv "${PYENV_VERSION}"
|
||||
stub pyenv-version-name "echo '${PYENV_VERSION}'"
|
||||
stub pyenv-prefix " : echo '${PYENV_ROOT}/versions/${PYENV_VERSION}'"
|
||||
stub pyenv-virtualenv-prefix " : false"
|
||||
stub pyenv-exec "pyvenv * : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\";mkdir -p \${PYENV_ROOT}/versions/3.4.1/envs/venv/bin"
|
||||
stub pyenv-exec "python -s -m ensurepip : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\";touch \${PYENV_ROOT}/versions/3.4.1/envs/venv/bin/pip"
|
||||
|
||||
run pyenv-virtualenv venv
|
||||
|
||||
assert_success
|
||||
assert_output <<OUT
|
||||
PYENV_VERSION=3.4.1 pyvenv ${PYENV_ROOT}/versions/3.4.1/envs/venv
|
||||
PYENV_VERSION=3.4.1/envs/venv python -s -m ensurepip
|
||||
rehashed
|
||||
OUT
|
||||
assert [ -e "${PYENV_ROOT}/versions/3.4.1/envs/venv/bin/pip" ]
|
||||
|
||||
unstub_pyenv
|
||||
unstub pyenv-version-name
|
||||
unstub pyenv-virtualenv-prefix
|
||||
unstub pyenv-exec
|
||||
teardown_pyvenv "3.4.1"
|
||||
}
|
||||
@@ -25,6 +25,7 @@ unstub_pyenv() {
|
||||
setup_pyvenv "3.4.1"
|
||||
stub_pyenv "${PYENV_VERSION}"
|
||||
stub pyenv-prefix " : echo '${PYENV_ROOT}/versions/${PYENV_VERSION}'"
|
||||
stub pyenv-virtualenv-prefix " : false"
|
||||
stub pyenv-exec "pyvenv * : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\";mkdir -p \${PYENV_ROOT}/versions/3.4.1/envs/venv/bin"
|
||||
stub pyenv-exec "python -s -m ensurepip : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\";touch \${PYENV_ROOT}/versions/3.4.1/envs/venv/bin/pip"
|
||||
|
||||
@@ -39,6 +40,7 @@ OUT
|
||||
assert [ -e "${PYENV_ROOT}/versions/3.4.1/envs/venv/bin/pip" ]
|
||||
|
||||
unstub_pyenv
|
||||
unstub pyenv-virtualenv-prefix
|
||||
unstub pyenv-exec
|
||||
teardown_pyvenv "3.4.1"
|
||||
}
|
||||
@@ -48,6 +50,7 @@ OUT
|
||||
setup_pyvenv "3.3.5"
|
||||
stub_pyenv "${PYENV_VERSION}"
|
||||
stub pyenv-prefix " : echo '${PYENV_ROOT}/versions/${PYENV_VERSION}'"
|
||||
stub pyenv-virtualenv-prefix " : false"
|
||||
stub pyenv-exec "pyvenv * : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\";mkdir -p \${PYENV_ROOT}/versions/3.3.5/envs/venv/bin"
|
||||
stub pyenv-exec "python -s -m ensurepip : false"
|
||||
stub pyenv-exec "python -s */get-pip.py : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\";touch \${PYENV_ROOT}/versions/3.3.5/envs/venv/bin/pip"
|
||||
@@ -65,6 +68,7 @@ OUT
|
||||
assert [ -e "${PYENV_ROOT}/versions/3.3.5/envs/venv/bin/pip" ]
|
||||
|
||||
unstub_pyenv
|
||||
unstub pyenv-virtualenv-prefix
|
||||
unstub pyenv-exec
|
||||
teardown_pyvenv "3.3.5"
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ unstub_pyenv() {
|
||||
setup_pyvenv "3.4.1"
|
||||
stub_pyenv "${PYENV_VERSION}"
|
||||
stub pyenv-prefix " : echo '${PYENV_ROOT}/versions/${PYENV_VERSION}'"
|
||||
stub pyenv-virtualenv-prefix " : false"
|
||||
stub pyenv-exec "pyvenv * : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
|
||||
stub pyenv-exec "python -s -m ensurepip : true"
|
||||
|
||||
@@ -37,6 +38,7 @@ rehashed
|
||||
OUT
|
||||
|
||||
unstub_pyenv
|
||||
unstub pyenv-virtualenv-prefix
|
||||
unstub pyenv-exec
|
||||
teardown_pyvenv "3.4.1"
|
||||
}
|
||||
@@ -47,6 +49,7 @@ OUT
|
||||
create_executable "3.4.1" "virtualenv"
|
||||
stub_pyenv "${PYENV_VERSION}"
|
||||
stub pyenv-prefix " : echo '${PYENV_ROOT}/versions/${PYENV_VERSION}'"
|
||||
stub pyenv-virtualenv-prefix " : false"
|
||||
stub pyenv-exec "virtualenv * : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
|
||||
stub pyenv-exec "python -s -m ensurepip : true"
|
||||
|
||||
@@ -59,6 +62,7 @@ rehashed
|
||||
OUT
|
||||
|
||||
unstub_pyenv
|
||||
unstub pyenv-virtualenv-prefix
|
||||
unstub pyenv-exec
|
||||
teardown_pyvenv "3.4.1"
|
||||
}
|
||||
@@ -68,6 +72,7 @@ OUT
|
||||
setup_version "3.2.1"
|
||||
stub_pyenv "${PYENV_VERSION}"
|
||||
stub pyenv-prefix " : echo '${PYENV_ROOT}/versions/${PYENV_VERSION}'"
|
||||
stub pyenv-virtualenv-prefix " : false"
|
||||
stub pyenv-exec "pip install virtualenv : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
|
||||
stub pyenv-exec "virtualenv * : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
|
||||
stub pyenv-exec "python -s -m ensurepip : false"
|
||||
@@ -85,6 +90,7 @@ rehashed
|
||||
OUT
|
||||
|
||||
unstub_pyenv
|
||||
unstub pyenv-virtualenv-prefix
|
||||
unstub pyenv-exec
|
||||
unstub curl
|
||||
teardown_version "3.2.1"
|
||||
@@ -95,6 +101,7 @@ OUT
|
||||
setup_pyvenv "3.4.1"
|
||||
stub_pyenv "${PYENV_VERSION}"
|
||||
stub pyenv-prefix " : echo '${PYENV_ROOT}/versions/${PYENV_VERSION}'"
|
||||
stub pyenv-virtualenv-prefix " : false"
|
||||
stub pyenv-exec "pip install virtualenv : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
|
||||
stub pyenv-exec "virtualenv * : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
|
||||
stub pyenv-exec "python -s -m ensurepip : true"
|
||||
@@ -109,6 +116,7 @@ OUT
|
||||
assert_success
|
||||
|
||||
unstub_pyenv
|
||||
unstub pyenv-virtualenv-prefix
|
||||
unstub pyenv-exec
|
||||
teardown_pyvenv "3.4.1"
|
||||
}
|
||||
@@ -118,6 +126,7 @@ OUT
|
||||
setup_pyvenv "3.4.1"
|
||||
stub_pyenv "${PYENV_VERSION}"
|
||||
stub pyenv-prefix " : echo '${PYENV_ROOT}/versions/${PYENV_VERSION}'"
|
||||
stub pyenv-virtualenv-prefix " : false"
|
||||
stub pyenv-exec "pip install virtualenv : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
|
||||
stub pyenv-exec "virtualenv * : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
|
||||
stub pyenv-exec "python -s -m ensurepip : true"
|
||||
@@ -132,6 +141,7 @@ OUT
|
||||
assert_success
|
||||
|
||||
unstub_pyenv
|
||||
unstub pyenv-virtualenv-prefix
|
||||
unstub pyenv-exec
|
||||
teardown_pyvenv "3.4.1"
|
||||
}
|
||||
@@ -141,6 +151,7 @@ OUT
|
||||
setup_version "3.2.1"
|
||||
stub_pyenv "${PYENV_VERSION}"
|
||||
stub pyenv-prefix " : echo '${PYENV_ROOT}/versions/${PYENV_VERSION}'"
|
||||
stub pyenv-virtualenv-prefix " : false"
|
||||
stub pyenv-exec "pip install virtualenv : echo PIP_REQUIRE_VENV=\${PIP_REQUIRE_VENV} PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
|
||||
stub pyenv-exec "virtualenv * : echo PIP_REQUIRE_VENV=\${PIP_REQUIRE_VENV} PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
|
||||
stub pyenv-exec "python -s -m ensurepip : false"
|
||||
@@ -158,6 +169,7 @@ rehashed
|
||||
OUT
|
||||
|
||||
unstub_pyenv
|
||||
unstub pyenv-virtualenv-prefix
|
||||
unstub pyenv-exec
|
||||
unstub curl
|
||||
teardown_version "3.2.1"
|
||||
|
||||
@@ -25,6 +25,7 @@ unstub_pyenv() {
|
||||
@test "create virtualenv from given version" {
|
||||
export PYENV_VERSION="3.2.1"
|
||||
stub_pyenv "${PYENV_VERSION}"
|
||||
stub pyenv-virtualenv-prefix " : false"
|
||||
stub pyenv-exec "virtualenv * : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
|
||||
stub pyenv-exec "python -s -m ensurepip : false"
|
||||
stub pyenv-exec "python -s */get-pip.py : true"
|
||||
@@ -40,6 +41,7 @@ rehashed
|
||||
OUT
|
||||
|
||||
unstub_pyenv
|
||||
unstub pyenv-virtualenv-prefix
|
||||
unstub pyenv-exec
|
||||
unstub curl
|
||||
}
|
||||
@@ -48,6 +50,7 @@ OUT
|
||||
export PYENV_VERSION="3.2.1"
|
||||
stub_pyenv "${PYENV_VERSION}"
|
||||
stub pyenv-version-name "echo \${PYENV_VERSION}"
|
||||
stub pyenv-virtualenv-prefix " : false"
|
||||
stub pyenv-exec "virtualenv * : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
|
||||
stub pyenv-exec "python -s -m ensurepip : false"
|
||||
stub pyenv-exec "python -s */get-pip.py : true"
|
||||
@@ -64,6 +67,7 @@ OUT
|
||||
|
||||
unstub_pyenv
|
||||
unstub pyenv-version-name
|
||||
unstub pyenv-virtualenv-prefix
|
||||
unstub pyenv-exec
|
||||
unstub curl
|
||||
}
|
||||
@@ -72,6 +76,7 @@ OUT
|
||||
export PYENV_VERSION="3.2.1"
|
||||
stub_pyenv "${PYENV_VERSION}"
|
||||
stub pyenv-version-name "echo \${PYENV_VERSION}"
|
||||
stub pyenv-virtualenv-prefix " : false"
|
||||
stub pyenv-exec "virtualenv * : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
|
||||
stub pyenv-exec "python -s -m ensurepip : false"
|
||||
stub pyenv-exec "python -s */get-pip.py : true"
|
||||
@@ -88,6 +93,7 @@ OUT
|
||||
|
||||
unstub_pyenv
|
||||
unstub pyenv-version-name
|
||||
unstub pyenv-virtualenv-prefix
|
||||
unstub pyenv-exec
|
||||
unstub curl
|
||||
}
|
||||
@@ -96,6 +102,7 @@ OUT
|
||||
export PYENV_VERSION="3.2.1"
|
||||
stub_pyenv "${PYENV_VERSION}"
|
||||
stub pyenv-version-name "echo \${PYENV_VERSION}"
|
||||
stub pyenv-virtualenv-prefix " : false"
|
||||
stub pyenv-exec "virtualenv * : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
|
||||
stub pyenv-exec "python -s -m ensurepip : false"
|
||||
stub pyenv-exec "python -s */get-pip.py : true"
|
||||
@@ -112,6 +119,7 @@ OUT
|
||||
|
||||
unstub_pyenv
|
||||
unstub pyenv-version-name
|
||||
unstub pyenv-virtualenv-prefix
|
||||
unstub pyenv-exec
|
||||
unstub curl
|
||||
}
|
||||
@@ -155,6 +163,7 @@ OUT
|
||||
@test "slash allowed if it is the long name of the virtualenv" {
|
||||
export PYENV_VERSION="3.2.1"
|
||||
stub_pyenv "${PYENV_VERSION}"
|
||||
stub pyenv-virtualenv-prefix " : false"
|
||||
stub pyenv-exec "virtualenv * : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
|
||||
stub pyenv-exec "python -s -m ensurepip : false"
|
||||
stub pyenv-exec "python -s */get-pip.py : true"
|
||||
@@ -170,6 +179,7 @@ rehashed
|
||||
OUT
|
||||
|
||||
unstub_pyenv
|
||||
unstub pyenv-virtualenv-prefix
|
||||
unstub pyenv-exec
|
||||
unstub curl
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user