Merge pull request #104 from yyuu/activate-ng

Rewrite `activate` without using virtualenv/venv/conda's script
This commit is contained in:
Yamashita, Yuu
2015-11-05 18:39:30 +09:00
10 changed files with 259 additions and 311 deletions

View File

@@ -70,11 +70,7 @@ if pyenv-prefix "${versions}" 1>/dev/null 2>&1; then
fi fi
else else
version="$(pyenv-version-name)" version="$(pyenv-version-name)"
if [[ "${versions}" == "root" ]]; then versions="${version%/envs/*}/envs/${versions}"
versions="${version%/envs/*}"
else
versions="${version%/envs/*}/envs/${versions}"
fi
if ! pyenv-virtualenv-prefix "${versions}" 1>/dev/null 2>&1; then if ! pyenv-virtualenv-prefix "${versions}" 1>/dev/null 2>&1; then
[ -n "$NOERROR" ] || echo "pyenv-virtualenv: version \`${versions}' is not an environment of anaconda/miniconda" 1>&2 [ -n "$NOERROR" ] || echo "pyenv-virtualenv: version \`${versions}' is not an environment of anaconda/miniconda" 1>&2
echo "false" echo "false"
@@ -85,21 +81,6 @@ fi
shell="${PYENV_SHELL:-${SHELL##*/}}" shell="${PYENV_SHELL:-${SHELL##*/}}"
prefix="$(pyenv-prefix "${versions}")" prefix="$(pyenv-prefix "${versions}")"
unset conda_env
if [ -f "${prefix}/bin/conda" ]; then
if [[ "$shell" != "bash" ]] && [[ "$shell" != "zsh" ]]; then
[ -n "$NOERROR" ] || echo "pyenv-virtualenv: Only bash and zsh are supported by Anaconda/Miniconda" 1>&2
echo "false"
exit 1
fi
if [[ "${prefix}" != "${prefix%/envs/*}" ]]; then
conda_env="${prefix##*/envs/}"
else
conda_env="root"
fi
fi
# Display setup instruction, if pyenv-virtualenv has not been initialized. # Display setup instruction, if pyenv-virtualenv has not been initialized.
# if 'pyenv virtualenv-init -' is not found in "$profile" # if 'pyenv virtualenv-init -' is not found in "$profile"
if [ -z "$PYENV_VIRTUALENV_INIT" ]; then if [ -z "$PYENV_VIRTUALENV_INIT" ]; then
@@ -124,29 +105,65 @@ if [ -z "$no_shell" ]; then
esac esac
fi fi
if [ -n "${conda_env}" ]; then case "${shell}" in
# anaconda/miniconda fish )
cat <<EOS
set -e PYENV_DEACTIVATE;
setenv PYENV_ACTIVATE "${prefix}";
EOS
;;
* )
cat <<EOS cat <<EOS
unset PYENV_DEACTIVATE; unset PYENV_DEACTIVATE;
export PYENV_ACTIVATE="${prefix}"; export PYENV_ACTIVATE="${prefix}";
. "${prefix%/envs/*}/bin/activate" "${conda_env}";
EOS EOS
else ;;
# virtualenv/pyvenv esac
case "$shell" in
# virtualenv/pyvenv
case "${shell}" in
fish )
echo "setenv VIRTUAL_ENV \"${prefix}\";"
;;
* )
echo "export VIRTUAL_ENV=\"${prefix}\";"
;;
esac
# anaconda/miniconda
if [ -x "${prefix}/bin/conda" ]; then
if [[ "${versions}" != "${versions%/envs/*}" ]]; then
CONDA_DEFAULT_ENV="${versions##*/envs/}"
else
CONDA_DEFAULT_ENV="root"
fi
case "${shell}" in
fish )
echo "setenv CONDA_DEFAULT_ENV \"${CONDA_DEFAULT_ENV}\";"
;;
* )
echo "export CONDA_DEFAULT_ENV=\"${CONDA_DEFAULT_ENV}\";"
;;
esac
fi
if [ -n "${PYTHONHOME}" ]; then
case "${shell}" in
fish ) fish )
cat <<EOS cat <<EOS
set -e PYENV_DEACTIVATE; setenv _OLD_VIRTUAL_PYTHONHOME "${PYTHONHOME}";
setenv PYENV_ACTIVATE "${prefix}"; set -e PYTHONHOME;
. "${prefix}/bin/activate.fish";
EOS EOS
;; ;;
* ) * )
cat <<EOS cat <<EOS
unset PYENV_DEACTIVATE; export _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME}";
export PYENV_ACTIVATE="${prefix}"; unset PYTHONHOME;
. "${prefix}/bin/activate";
EOS EOS
;; ;;
esac esac
fi fi
if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT}" ]; then
: # TODO: change prompt?
fi

View File

@@ -30,91 +30,85 @@ done
shell="$(basename "${PYENV_SHELL:-$SHELL}")" shell="$(basename "${PYENV_SHELL:-$SHELL}")"
prefix="${PYENV_ACTIVATE:-${VIRTUAL_ENV}}" prefix="${PYENV_ACTIVATE:-${VIRTUAL_ENV}}"
unset conda_env if [ -z "${VIRTUAL_ENV}" ]; then
[ -n "$NOERROR" ] || echo "pyenv-virtualenv: no virtualenv has been activated." 1>&2
if [ -f "${prefix}/bin/conda" ]; then echo "false"
if [[ "$shell" != "bash" ]] && [[ "$shell" != "zsh" ]]; then exit 1
[ -n "$NOERROR" ] || echo "pyenv-virtualenv: Only bash and zsh are supported by Anaconda/Miniconda" 1>&2
echo "false"
exit 1
fi
if [[ "${prefix}" != "${prefix%/envs/*}" ]]; then
conda_env="${prefix##*/envs/}"
else
conda_env="root"
fi
fi
if [ -n "${conda_env}" ]; then
echo "if [ -f \"${prefix%/envs/*}/bin/deactivate\" ]; then"
else
case "$shell" in
fish )
echo "if functions -q deactivate;"
;;
* )
echo "if declare -f deactivate 1>/dev/null 2>&1; then"
;;
esac
fi fi
if [ -n "$VERBOSE" ]; then if [ -n "$VERBOSE" ]; then
echo " echo \"pyenv-virtualenv: deactivate ${prefix##*/}\" 1>&2;" echo "pyenv-virtualenv: deactivate ${prefix##*/}" 1>&2
fi fi
if [ -n "${PYENV_ACTIVATE_SHELL}" ]; then if [ -n "${PYENV_ACTIVATE_SHELL}" ]; then
# shell version set in pyenv-sh-activate should be unset # shell version set in pyenv-sh-activate should be unset
# https://github.com/yyuu/pyenv-virtualenv/issues/61 # https://github.com/yyuu/pyenv-virtualenv/issues/61
echo " pyenv shell --unset;" echo "pyenv shell --unset;"
case "$shell" in case "$shell" in
fish ) fish )
echo " set -e PYENV_ACTIVATE_SHELL;" echo "set -e PYENV_ACTIVATE_SHELL;"
;; ;;
* ) * )
echo " unset PYENV_ACTIVATE_SHELL;" echo "unset PYENV_ACTIVATE_SHELL;"
;; ;;
esac esac
fi fi
if [ -n "${conda_env}" ]; then case "${shell}" in
cat <<EOS
export PYENV_DEACTIVATE="$prefix";
unset PYENV_ACTIVATE;
. "${prefix%/envs/*}/bin/deactivate";
else
EOS
else
case "$shell" in
fish )
cat <<EOS
setenv PYENV_DEACTIVATE "$prefix";
set -e PYENV_ACTIVATE;
deactivate;
else;
EOS
;;
* )
cat <<EOS
export PYENV_DEACTIVATE="$prefix";
unset PYENV_ACTIVATE;
deactivate;
else
EOS
;;
esac
fi
if [ -z "$NOERROR" ]; then
echo " echo \"pyenv-virtualenv: no virtualenv has been activated.\" 1>&2;"
fi
echo " false;"
case "$shell" in
fish ) fish )
echo "end;" cat <<EOS
setenv PYENV_DEACTIVATE "$prefix";
set -e PYENV_ACTIVATE;
EOS
;; ;;
* ) * )
echo "fi;" cat <<EOS
export PYENV_DEACTIVATE="$prefix";
unset PYENV_ACTIVATE;
EOS
;; ;;
esac esac
# virtualenv/pyvenv
case "${shell}" in
fish )
echo "set -e VIRTUAL_ENV;"
;;
* )
echo "unset VIRTUAL_ENV;"
;;
esac
# anaconda/miniconda
if [ -n "${CONDA_DEFAULT_ENV}" ]; then
case "${shell}" in
fish )
echo "set -e CONDA_DEFAULT_ENV;"
;;
* )
echo "unset CONDA_DEFAULT_ENV;"
;;
esac
fi
if [ -n "${_OLD_VIRTUAL_PYTHONHOME}" ]; then
case "${shell}" in
fish )
cat <<EOS
setenv PYTHONHOME "${_OLD_VIRTUAL_PYTHONHOME}";
set -e _OLD_VIRTUAL_PYTHONHOME;
EOS
;;
* )
cat <<EOS
export PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME}";
unset _OLD_VIRTUAL_PYTHONHOME;
EOS
;;
esac
fi
if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT}" ]; then
: # TODO: change prompt?
fi

View File

@@ -31,31 +31,15 @@ base_prefix() { # pyvenv
} }
VIRTUALENV_PREFIX_PATHS=() VIRTUALENV_PREFIX_PATHS=()
for version_string in "${versions[@]}"; do for version in "${versions[@]}"; do
version="${version_string%%/*}"
if [ "$version" = "system" ]; then if [ "$version" = "system" ]; then
echo "pyenv-virtualenv: version \`${version}' is not a virtualenv" 1>&2 echo "pyenv-virtualenv: version \`${version}' is not a virtualenv" 1>&2
exit 1 exit 1
fi fi
PREFIX="$(pyenv-prefix "${version}")" PYENV_PREFIX_PATH="$(pyenv-prefix "${version}")"
if [ -f "${PREFIX}/bin/activate" ]; then if [ -f "${PYENV_PREFIX_PATH}/bin/activate" ]; then
# Anaconda has `activate` script nevertheless it is not a virtual environment (#65) VIRTUALENV_PREFIX_PATH="$(real_prefix "${version}" || base_prefix "${version}" || true)"
if [ -f "${PREFIX}/bin/conda" ]; then VIRTUALENV_PREFIX_PATHS=("${VIRTUALENV_PREFIX_PATHS[@]}" "${VIRTUALENV_PREFIX_PATH:-${PYENV_PREFIX_PATH}}")
if [[ "${version_string}" != "${version_string%/envs/*}" ]]; then
conda_env="${version_string##*/envs/}"
if [ -f "${PREFIX}/envs/${conda_env}/bin/conda" ]; then
VIRTUALENV_PREFIX_PATHS=("${VIRTUALENV_PREFIX_PATHS[@]}" "${PREFIX}")
else
echo "pyenv-virtualenv: version \`${version_string}' is not an environment of anaconda/miniconda" 1>&2
exit 1
fi
else
VIRTUALENV_PREFIX_PATHS=("${VIRTUALENV_PREFIX_PATHS[@]}" "${PREFIX}")
fi
else
VIRTUALENV_PREFIX_PATH="$(real_prefix "${version}" || base_prefix "${version}" || true)"
VIRTUALENV_PREFIX_PATHS=("${VIRTUALENV_PREFIX_PATHS[@]}" "$VIRTUALENV_PREFIX_PATH")
fi
else else
echo "pyenv-virtualenv: version \`${version}' is not a virtualenv" 1>&2 echo "pyenv-virtualenv: version \`${version}' is not a virtualenv" 1>&2
exit 1 exit 1

View File

@@ -16,7 +16,7 @@ if [ "$1" = "--bare" ]; then
hit_prefix="" hit_prefix=""
miss_prefix="" miss_prefix=""
current_versions=() current_versions=()
print_origin="" unset print_origin
else else
hit_prefix="* " hit_prefix="* "
miss_prefix=" " miss_prefix=" "
@@ -24,42 +24,39 @@ else
print_origin="1" print_origin="1"
fi fi
array_exists() { exists() {
local x car="$1" local car="$1"
local cdar
shift shift
for x in "$@"; do for cdar in "$@"; do
[ "${x}" = "${car}" ] && return 0 if [ "${car}" == "${cdar}" ]; then
return 0
fi
done done
return 1 return 1
} }
print_version() { print_version() {
if [ -n "${print_origin}" ]; then if exists "$1" "${current_versions[@]}"; then
local version_origin="$2" echo "${hit_prefix}${1}${print_origin+$2}"
else else
local version_origin="" echo "${miss_prefix}${1}${print_origin+$2}"
fi
if array_exists "$1" "${current_versions[@]}"; then
echo "${hit_prefix}${1}${version_origin}"
else
echo "${miss_prefix}${1}${version_origin}"
fi fi
} }
for version in $(pyenv-versions --bare); do shopt -s nullglob
if [[ "${version}" != "system" ]]; then for path in "${PYENV_ROOT}/versions/"*; do
virtualenv_prefix="$(pyenv-virtualenv-prefix "${version}" 2>/dev/null || true)" version="${path##*/}"
if [ -d "${virtualenv_prefix}" ]; then virtualenv_prefix="$(pyenv-virtualenv-prefix "${version}" 2>/dev/null || true)"
print_version "${version}" " (created from ${virtualenv_prefix})" if [ -d "${virtualenv_prefix}" ]; then
prefix="$(pyenv-prefix "${version}")" print_version "${version}" " (created from ${virtualenv_prefix})"
if [ -f "${prefix}/bin/conda" ]; then
# envs of anaconda/miniconda
shopt -s nullglob
for conda_env in "${prefix}/envs/"*; do
print_version "${version##*/}${conda_env#${prefix}}" " (created from ${prefix})"
done
shopt -u nullglob
fi
fi
fi fi
for venv_path in "${path}/envs/"*; do
venv_version="${version}/envs/${venv_path##*/}"
virtualenv_prefix="$(pyenv-virtualenv-prefix "${venv_version}" 2>/dev/null || true)"
if [ -d "${virtualenv_prefix}" ]; then
print_version "${venv_version}" " (created from ${virtualenv_prefix})"
fi
done
done done
shopt -u nullglob

View File

@@ -25,7 +25,7 @@ setup() {
assert_output <<EOS assert_output <<EOS
unset PYENV_DEACTIVATE; unset PYENV_DEACTIVATE;
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"; export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv";
. "${PYENV_ROOT}/versions/venv/bin/activate"; export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv";
EOS EOS
} }
@@ -48,7 +48,7 @@ EOS
pyenv-virtualenv: activate venv pyenv-virtualenv: activate venv
unset PYENV_DEACTIVATE; unset PYENV_DEACTIVATE;
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"; export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv";
. "${PYENV_ROOT}/versions/venv/bin/activate"; export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv";
EOS EOS
} }
@@ -77,7 +77,7 @@ pyenv shell "venv";
export PYENV_ACTIVATE_SHELL=1; export PYENV_ACTIVATE_SHELL=1;
unset PYENV_DEACTIVATE; unset PYENV_DEACTIVATE;
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"; export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv";
. "${PYENV_ROOT}/versions/venv/bin/activate"; export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv";
EOS EOS
} }
@@ -99,7 +99,7 @@ EOS
assert_output <<EOS assert_output <<EOS
set -e PYENV_DEACTIVATE; set -e PYENV_DEACTIVATE;
setenv PYENV_ACTIVATE "${PYENV_ROOT}/versions/venv"; setenv PYENV_ACTIVATE "${PYENV_ROOT}/versions/venv";
. "${PYENV_ROOT}/versions/venv/bin/activate.fish"; setenv VIRTUAL_ENV "${PYENV_ROOT}/versions/venv";
EOS EOS
} }
@@ -128,7 +128,7 @@ pyenv shell "venv";
setenv PYENV_ACTIVATE_SHELL 1; setenv PYENV_ACTIVATE_SHELL 1;
set -e PYENV_DEACTIVATE; set -e PYENV_DEACTIVATE;
setenv PYENV_ACTIVATE "${PYENV_ROOT}/versions/venv"; setenv PYENV_ACTIVATE "${PYENV_ROOT}/versions/venv";
. "${PYENV_ROOT}/versions/venv/bin/activate.fish"; setenv VIRTUAL_ENV "${PYENV_ROOT}/versions/venv";
EOS EOS
} }
@@ -150,7 +150,7 @@ pyenv shell "venv27";
export PYENV_ACTIVATE_SHELL=1; export PYENV_ACTIVATE_SHELL=1;
unset PYENV_DEACTIVATE; unset PYENV_DEACTIVATE;
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv27"; export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv27";
. "${PYENV_ROOT}/versions/venv27/bin/activate"; export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv27";
EOS EOS
} }
@@ -177,7 +177,7 @@ pyenv shell "venv27";
export PYENV_ACTIVATE_SHELL=1; export PYENV_ACTIVATE_SHELL=1;
unset PYENV_DEACTIVATE; unset PYENV_DEACTIVATE;
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv27"; export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv27";
. "${PYENV_ROOT}/versions/venv27/bin/activate"; export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv27";
EOS EOS
} }
@@ -199,7 +199,7 @@ pyenv shell "venv27";
setenv PYENV_ACTIVATE_SHELL 1; setenv PYENV_ACTIVATE_SHELL 1;
set -e PYENV_DEACTIVATE; set -e PYENV_DEACTIVATE;
setenv PYENV_ACTIVATE "${PYENV_ROOT}/versions/venv27"; setenv PYENV_ACTIVATE "${PYENV_ROOT}/versions/venv27";
. "${PYENV_ROOT}/versions/venv27/bin/activate.fish"; setenv VIRTUAL_ENV "${PYENV_ROOT}/versions/venv27";
EOS EOS
} }
@@ -226,7 +226,7 @@ pyenv shell "venv27";
setenv PYENV_ACTIVATE_SHELL 1; setenv PYENV_ACTIVATE_SHELL 1;
set -e PYENV_DEACTIVATE; set -e PYENV_DEACTIVATE;
setenv PYENV_ACTIVATE "${PYENV_ROOT}/versions/venv27"; setenv PYENV_ACTIVATE "${PYENV_ROOT}/versions/venv27";
. "${PYENV_ROOT}/versions/venv27/bin/activate.fish"; setenv VIRTUAL_ENV "${PYENV_ROOT}/versions/venv27";
EOS EOS
} }

View File

@@ -26,7 +26,8 @@ setup() {
assert_output <<EOS assert_output <<EOS
unset PYENV_DEACTIVATE; unset PYENV_DEACTIVATE;
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/anaconda-2.3.0"; export PYENV_ACTIVATE="${PYENV_ROOT}/versions/anaconda-2.3.0";
. "${PYENV_ROOT}/versions/anaconda-2.3.0/bin/activate" "root"; export VIRTUAL_ENV="${PYENV_ROOT}/versions/anaconda-2.3.0";
export CONDA_DEFAULT_ENV="root";
EOS EOS
} }
@@ -45,10 +46,12 @@ EOS
unstub pyenv-virtualenv-prefix unstub pyenv-virtualenv-prefix
unstub pyenv-prefix unstub pyenv-prefix
assert_failure assert_success
assert_output <<EOS assert_output <<EOS
pyenv-virtualenv: Only bash and zsh are supported by Anaconda/Miniconda set -e PYENV_DEACTIVATE;
false setenv PYENV_ACTIVATE "${TMP}/pyenv/versions/anaconda-2.3.0";
setenv VIRTUAL_ENV "${TMP}/pyenv/versions/anaconda-2.3.0";
setenv CONDA_DEFAULT_ENV "root";
EOS EOS
} }
@@ -72,7 +75,8 @@ pyenv shell "miniconda-3.9.1";
export PYENV_ACTIVATE_SHELL=1; export PYENV_ACTIVATE_SHELL=1;
unset PYENV_DEACTIVATE; unset PYENV_DEACTIVATE;
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/miniconda-3.9.1"; export PYENV_ACTIVATE="${PYENV_ROOT}/versions/miniconda-3.9.1";
. "${PYENV_ROOT}/versions/miniconda-3.9.1/bin/activate" "root"; export VIRTUAL_ENV="${PYENV_ROOT}/versions/miniconda-3.9.1";
export CONDA_DEFAULT_ENV="root";
EOS EOS
} }
@@ -95,7 +99,8 @@ EOS
assert_output <<EOS assert_output <<EOS
unset PYENV_DEACTIVATE; unset PYENV_DEACTIVATE;
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/anaconda-2.3.0/envs/foo"; export PYENV_ACTIVATE="${PYENV_ROOT}/versions/anaconda-2.3.0/envs/foo";
. "${PYENV_ROOT}/versions/anaconda-2.3.0/bin/activate" "foo"; export VIRTUAL_ENV="${PYENV_ROOT}/versions/anaconda-2.3.0/envs/foo";
export CONDA_DEFAULT_ENV="foo";
EOS EOS
} }
@@ -119,7 +124,8 @@ pyenv shell "miniconda-3.9.1/envs/bar";
export PYENV_ACTIVATE_SHELL=1; export PYENV_ACTIVATE_SHELL=1;
unset PYENV_DEACTIVATE; unset PYENV_DEACTIVATE;
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/miniconda-3.9.1/envs/bar"; export PYENV_ACTIVATE="${PYENV_ROOT}/versions/miniconda-3.9.1/envs/bar";
. "${PYENV_ROOT}/versions/miniconda-3.9.1/bin/activate" "bar"; export VIRTUAL_ENV="${PYENV_ROOT}/versions/miniconda-3.9.1/envs/bar";
export CONDA_DEFAULT_ENV="bar";
EOS EOS
} }
@@ -144,6 +150,7 @@ pyenv shell "miniconda-3.9.1/envs/bar";
export PYENV_ACTIVATE_SHELL=1; export PYENV_ACTIVATE_SHELL=1;
unset PYENV_DEACTIVATE; unset PYENV_DEACTIVATE;
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/miniconda-3.9.1/envs/bar"; export PYENV_ACTIVATE="${PYENV_ROOT}/versions/miniconda-3.9.1/envs/bar";
. "${PYENV_ROOT}/versions/miniconda-3.9.1/bin/activate" "bar"; export VIRTUAL_ENV="${PYENV_ROOT}/versions/miniconda-3.9.1/envs/bar";
export CONDA_DEFAULT_ENV="bar";
EOS EOS
} }

View File

@@ -7,8 +7,10 @@ setup() {
} }
@test "deactivate conda root" { @test "deactivate conda root" {
export VIRTUAL_ENV="${PYENV_ROOT}/versions/anaconda-2.3.0"
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/anaconda-2.3.0" export PYENV_ACTIVATE="${PYENV_ROOT}/versions/anaconda-2.3.0"
export PYENV_ACTIVATE_SHELL= export PYENV_ACTIVATE_SHELL=
export CONDA_DEFAULT_ENV="root"
create_conda "anaconda-2.3.0" create_conda "anaconda-2.3.0"
@@ -16,35 +18,39 @@ setup() {
assert_success assert_success
assert_output <<EOS assert_output <<EOS
if [ -f "${PYENV_ROOT}/versions/anaconda-2.3.0/bin/deactivate" ]; then export PYENV_DEACTIVATE="$PYENV_ACTIVATE";
export PYENV_DEACTIVATE="$PYENV_ACTIVATE"; unset PYENV_ACTIVATE;
unset PYENV_ACTIVATE; unset VIRTUAL_ENV;
. "${PYENV_ROOT}/versions/anaconda-2.3.0/bin/deactivate"; unset CONDA_DEFAULT_ENV;
else
echo "pyenv-virtualenv: no virtualenv has been activated." 1>&2;
false;
fi;
EOS EOS
} }
@test "deactivate conda root (fish)" { @test "deactivate conda root (fish)" {
export VIRTUAL_ENV="${PYENV_ROOT}/versions/anaconda-2.3.0"
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/anaconda-2.3.0" export PYENV_ACTIVATE="${PYENV_ROOT}/versions/anaconda-2.3.0"
export PYENV_ACTIVATE_SHELL= export PYENV_ACTIVATE_SHELL=
export CONDA_DEFAULT_ENV="root"
create_conda "anaconda-2.3.0" create_conda "anaconda-2.3.0"
PYENV_SHELL="fish" run pyenv-sh-deactivate PYENV_SHELL="fish" run pyenv-sh-deactivate
assert_failure assert_success
assert_output <<EOS assert_output <<EOS
pyenv-virtualenv: Only bash and zsh are supported by Anaconda/Miniconda setenv PYENV_DEACTIVATE "${TMP}/pyenv/versions/anaconda-2.3.0";
false set -e PYENV_ACTIVATE;
set -e VIRTUAL_ENV;
set -e CONDA_DEFAULT_ENV;
EOS EOS
} }
@test "deactivate conda env" { @test "deactivate conda env" {
export VIRTUAL_ENV="${PYENV_ROOT}/versions/anaconda-2.3.0/envs/foo"
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/anaconda-2.3.0/envs/foo" export PYENV_ACTIVATE="${PYENV_ROOT}/versions/anaconda-2.3.0/envs/foo"
export PYENV_ACTIVATE_SHELL= export PYENV_ACTIVATE_SHELL=
export CONDA_DEFAULT_ENV="foo"
create_conda "anaconda-2.3.0" "foo" create_conda "anaconda-2.3.0" "foo"
@@ -52,13 +58,9 @@ EOS
assert_success assert_success
assert_output <<EOS assert_output <<EOS
if [ -f "${PYENV_ROOT}/versions/anaconda-2.3.0/bin/deactivate" ]; then export PYENV_DEACTIVATE="$PYENV_ACTIVATE";
export PYENV_DEACTIVATE="$PYENV_ACTIVATE"; unset PYENV_ACTIVATE;
unset PYENV_ACTIVATE; unset VIRTUAL_ENV;
. "${PYENV_ROOT}/versions/anaconda-2.3.0/bin/deactivate"; unset CONDA_DEFAULT_ENV;
else
echo "pyenv-virtualenv: no virtualenv has been activated." 1>&2;
false;
fi;
EOS EOS
} }

View File

@@ -14,28 +14,28 @@ setup() {
PYENV_VERSION="anaconda-2.3.0" run pyenv-virtualenv-prefix PYENV_VERSION="anaconda-2.3.0" run pyenv-virtualenv-prefix
unstub pyenv-version-name
unstub pyenv-prefix
assert_success assert_success
assert_output <<OUT assert_output <<OUT
${PYENV_ROOT}/versions/anaconda-2.3.0 ${PYENV_ROOT}/versions/anaconda-2.3.0
OUT OUT
unstub pyenv-version-name
unstub pyenv-prefix
} }
@test "display conda env" { @test "display conda env" {
create_conda "anaconda-2.3.0" "foo" create_conda "anaconda-2.3.0" "foo"
stub pyenv-version-name "echo anaconda-2.3.0/envs/foo" stub pyenv-version-name "echo anaconda-2.3.0/envs/foo"
stub pyenv-prefix "anaconda-2.3.0 : echo \"${PYENV_ROOT}/versions/anaconda-2.3.0\"" stub pyenv-prefix "anaconda-2.3.0/envs/foo : echo \"${PYENV_ROOT}/versions/anaconda-2.3.0/envs/foo\""
PYENV_VERSION="anaconda-2.3.0/envs/foo" run pyenv-virtualenv-prefix PYENV_VERSION="anaconda-2.3.0/envs/foo" run pyenv-virtualenv-prefix
unstub pyenv-version-name
unstub pyenv-prefix
assert_success assert_success
assert_output <<OUT assert_output <<OUT
${PYENV_ROOT}/versions/anaconda-2.3.0 ${PYENV_ROOT}/versions/anaconda-2.3.0/envs/foo
OUT OUT
unstub pyenv-version-name
unstub pyenv-prefix
} }

View File

@@ -7,6 +7,7 @@ setup() {
} }
@test "deactivate virtualenv" { @test "deactivate virtualenv" {
export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv" export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL= export PYENV_ACTIVATE_SHELL=
@@ -14,18 +15,14 @@ setup() {
assert_success assert_success
assert_output <<EOS assert_output <<EOS
if declare -f deactivate 1>/dev/null 2>&1; then export PYENV_DEACTIVATE="$PYENV_ACTIVATE";
export PYENV_DEACTIVATE="$PYENV_ACTIVATE"; unset PYENV_ACTIVATE;
unset PYENV_ACTIVATE; unset VIRTUAL_ENV;
deactivate;
else
echo "pyenv-virtualenv: no virtualenv has been activated." 1>&2;
false;
fi;
EOS EOS
} }
@test "deactivate virtualenv (verbose)" { @test "deactivate virtualenv (verbose)" {
export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv" export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL= export PYENV_ACTIVATE_SHELL=
@@ -33,19 +30,15 @@ EOS
assert_success assert_success
assert_output <<EOS assert_output <<EOS
if declare -f deactivate 1>/dev/null 2>&1; then pyenv-virtualenv: deactivate venv
echo "pyenv-virtualenv: deactivate venv" 1>&2; export PYENV_DEACTIVATE="$PYENV_ACTIVATE";
export PYENV_DEACTIVATE="$PYENV_ACTIVATE"; unset PYENV_ACTIVATE;
unset PYENV_ACTIVATE; unset VIRTUAL_ENV;
deactivate;
else
echo "pyenv-virtualenv: no virtualenv has been activated." 1>&2;
false;
fi;
EOS EOS
} }
@test "deactivate virtualenv (no-error)" { @test "deactivate virtualenv (no-error)" {
export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv" export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL= export PYENV_ACTIVATE_SHELL=
@@ -53,17 +46,14 @@ EOS
assert_success assert_success
assert_output <<EOS assert_output <<EOS
if declare -f deactivate 1>/dev/null 2>&1; then export PYENV_DEACTIVATE="$PYENV_ACTIVATE";
export PYENV_DEACTIVATE="$PYENV_ACTIVATE"; unset PYENV_ACTIVATE;
unset PYENV_ACTIVATE; unset VIRTUAL_ENV;
deactivate;
else
false;
fi;
EOS EOS
} }
@test "deactivate virtualenv (with shell activation)" { @test "deactivate virtualenv (with shell activation)" {
export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv" export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL=1 export PYENV_ACTIVATE_SHELL=1
@@ -71,20 +61,16 @@ EOS
assert_success assert_success
assert_output <<EOS assert_output <<EOS
if declare -f deactivate 1>/dev/null 2>&1; then pyenv shell --unset;
pyenv shell --unset; unset PYENV_ACTIVATE_SHELL;
unset PYENV_ACTIVATE_SHELL; export PYENV_DEACTIVATE="$PYENV_ACTIVATE";
export PYENV_DEACTIVATE="$PYENV_ACTIVATE"; unset PYENV_ACTIVATE;
unset PYENV_ACTIVATE; unset VIRTUAL_ENV;
deactivate;
else
echo "pyenv-virtualenv: no virtualenv has been activated." 1>&2;
false;
fi;
EOS EOS
} }
@test "deactivate virtualenv (with shell activation) (no-error)" { @test "deactivate virtualenv (with shell activation) (no-error)" {
export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv" export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL=1 export PYENV_ACTIVATE_SHELL=1
@@ -92,15 +78,11 @@ EOS
assert_success assert_success
assert_output <<EOS assert_output <<EOS
if declare -f deactivate 1>/dev/null 2>&1; then pyenv shell --unset;
pyenv shell --unset; unset PYENV_ACTIVATE_SHELL;
unset PYENV_ACTIVATE_SHELL; export PYENV_DEACTIVATE="$PYENV_ACTIVATE";
export PYENV_DEACTIVATE="$PYENV_ACTIVATE"; unset PYENV_ACTIVATE;
unset PYENV_ACTIVATE; unset VIRTUAL_ENV;
deactivate;
else
false;
fi;
EOS EOS
} }
@@ -113,18 +95,14 @@ EOS
assert_success assert_success
assert_output <<EOS assert_output <<EOS
if declare -f deactivate 1>/dev/null 2>&1; then export PYENV_DEACTIVATE="$VIRTUAL_ENV";
export PYENV_DEACTIVATE="$VIRTUAL_ENV"; unset PYENV_ACTIVATE;
unset PYENV_ACTIVATE; unset VIRTUAL_ENV;
deactivate;
else
echo "pyenv-virtualenv: no virtualenv has been activated." 1>&2;
false;
fi;
EOS EOS
} }
@test "deactivate virtualenv (fish)" { @test "deactivate virtualenv (fish)" {
export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv" export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL= export PYENV_ACTIVATE_SHELL=
@@ -132,18 +110,14 @@ EOS
assert_success assert_success
assert_output <<EOS assert_output <<EOS
if functions -q deactivate; setenv PYENV_DEACTIVATE "$PYENV_ACTIVATE";
setenv PYENV_DEACTIVATE "$PYENV_ACTIVATE"; set -e PYENV_ACTIVATE;
set -e PYENV_ACTIVATE; set -e VIRTUAL_ENV;
deactivate;
else;
echo "pyenv-virtualenv: no virtualenv has been activated." 1>&2;
false;
end;
EOS EOS
} }
@test "deactivate virtualenv (fish) (no-error)" { @test "deactivate virtualenv (fish) (no-error)" {
export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv" export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL= export PYENV_ACTIVATE_SHELL=
@@ -151,17 +125,14 @@ EOS
assert_success assert_success
assert_output <<EOS assert_output <<EOS
if functions -q deactivate; setenv PYENV_DEACTIVATE "$PYENV_ACTIVATE";
setenv PYENV_DEACTIVATE "$PYENV_ACTIVATE"; set -e PYENV_ACTIVATE;
set -e PYENV_ACTIVATE; set -e VIRTUAL_ENV;
deactivate;
else;
false;
end;
EOS EOS
} }
@test "deactivate virtualenv (fish) (with shell activation)" { @test "deactivate virtualenv (fish) (with shell activation)" {
export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv" export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL=1 export PYENV_ACTIVATE_SHELL=1
@@ -169,20 +140,16 @@ EOS
assert_success assert_success
assert_output <<EOS assert_output <<EOS
if functions -q deactivate; pyenv shell --unset;
pyenv shell --unset; set -e PYENV_ACTIVATE_SHELL;
set -e PYENV_ACTIVATE_SHELL; setenv PYENV_DEACTIVATE "$PYENV_ACTIVATE";
setenv PYENV_DEACTIVATE "$PYENV_ACTIVATE"; set -e PYENV_ACTIVATE;
set -e PYENV_ACTIVATE; set -e VIRTUAL_ENV;
deactivate;
else;
echo "pyenv-virtualenv: no virtualenv has been activated." 1>&2;
false;
end;
EOS EOS
} }
@test "deactivate virtualenv (fish) (with shell activation) (no-error)" { @test "deactivate virtualenv (fish) (with shell activation) (no-error)" {
export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv" export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL=1 export PYENV_ACTIVATE_SHELL=1
@@ -190,15 +157,11 @@ EOS
assert_success assert_success
assert_output <<EOS assert_output <<EOS
if functions -q deactivate; pyenv shell --unset;
pyenv shell --unset; set -e PYENV_ACTIVATE_SHELL;
set -e PYENV_ACTIVATE_SHELL; setenv PYENV_DEACTIVATE "$PYENV_ACTIVATE";
setenv PYENV_DEACTIVATE "$PYENV_ACTIVATE"; set -e PYENV_ACTIVATE;
set -e PYENV_ACTIVATE; set -e VIRTUAL_ENV;
deactivate;
else;
false;
end;
EOS EOS
} }
@@ -211,14 +174,9 @@ EOS
assert_success assert_success
assert_output <<EOS assert_output <<EOS
if functions -q deactivate; setenv PYENV_DEACTIVATE "$VIRTUAL_ENV";
setenv PYENV_DEACTIVATE "$VIRTUAL_ENV"; set -e PYENV_ACTIVATE;
set -e PYENV_ACTIVATE; set -e VIRTUAL_ENV;
deactivate;
else;
echo "pyenv-virtualenv: no virtualenv has been activated." 1>&2;
false;
end;
EOS EOS
} }

View File

@@ -12,66 +12,55 @@ setup() {
@test "list virtual environments only" { @test "list virtual environments only" {
stub pyenv-version-name ": echo system" stub pyenv-version-name ": echo system"
stub pyenv-versions "--bare : echo \"system\";echo \"2.7.6\";echo \"3.3.3\";echo \"venv27\";echo \"venv33\""
stub pyenv-virtualenv-prefix "2.7.6 : false" stub pyenv-virtualenv-prefix "2.7.6 : false"
stub pyenv-virtualenv-prefix "3.3.3 : false" stub pyenv-virtualenv-prefix "3.3.3 : false"
stub pyenv-virtualenv-prefix "venv27 : echo \"${PYENV_ROOT}/versions/2.7.6\"" stub pyenv-virtualenv-prefix "venv27 : echo \"${PYENV_ROOT}/versions/2.7.6\""
stub pyenv-virtualenv-prefix "venv33 : echo \"${PYENV_ROOT}/versions/3.3.3\"" stub pyenv-virtualenv-prefix "venv33 : echo \"${PYENV_ROOT}/versions/3.3.3\""
stub pyenv-prefix "venv27 : echo \"${PYENV_ROOT}/versions/2.7.6\""
stub pyenv-prefix "venv33 : echo \"${PYENV_ROOT}/versions/3.3.3\""
run pyenv-virtualenvs run pyenv-virtualenvs
unstub pyenv-version-name
unstub pyenv-versions
unstub pyenv-virtualenv-prefix
unstub pyenv-prefix
assert_success assert_success
assert_output <<OUT assert_output <<OUT
venv27 (created from ${PYENV_ROOT}/versions/2.7.6) venv27 (created from ${PYENV_ROOT}/versions/2.7.6)
venv33 (created from ${PYENV_ROOT}/versions/3.3.3) venv33 (created from ${PYENV_ROOT}/versions/3.3.3)
OUT OUT
unstub pyenv-version-name
unstub pyenv-virtualenv-prefix
} }
@test "list virtual environments with hit prefix" { @test "list virtual environments with hit prefix" {
stub pyenv-version-name ": echo venv33" stub pyenv-version-name ": echo venv33"
stub pyenv-versions "--bare : echo \"system\";echo \"venv27\";echo \"venv33\"" stub pyenv-virtualenv-prefix "2.7.6 : false"
stub pyenv-virtualenv-prefix "3.3.3 : false"
stub pyenv-virtualenv-prefix "venv27 : echo \"/usr\"" stub pyenv-virtualenv-prefix "venv27 : echo \"/usr\""
stub pyenv-virtualenv-prefix "venv33 : echo \"/usr\"" stub pyenv-virtualenv-prefix "venv33 : echo \"/usr\""
stub pyenv-prefix "venv27 : echo \"/usr\""
stub pyenv-prefix "venv33 : echo \"/usr\""
run pyenv-virtualenvs run pyenv-virtualenvs
unstub pyenv-version-name
unstub pyenv-versions
unstub pyenv-virtualenv-prefix
unstub pyenv-prefix
assert_success assert_success
assert_output <<OUT assert_output <<OUT
venv27 (created from /usr) venv27 (created from /usr)
* venv33 (created from /usr) * venv33 (created from /usr)
OUT OUT
unstub pyenv-version-name
unstub pyenv-virtualenv-prefix
} }
@test "list virtual environments with --bare" { @test "list virtual environments with --bare" {
stub pyenv-versions "--bare : echo \"system\";echo \"venv27\";echo \"venv33\"" stub pyenv-virtualenv-prefix "2.7.6 : false"
stub pyenv-virtualenv-prefix "3.3.3 : false"
stub pyenv-virtualenv-prefix "venv27 : echo \"/usr\"" stub pyenv-virtualenv-prefix "venv27 : echo \"/usr\""
stub pyenv-virtualenv-prefix "venv33 : echo \"/usr\"" stub pyenv-virtualenv-prefix "venv33 : echo \"/usr\""
stub pyenv-prefix "venv27 : echo \"/usr\""
stub pyenv-prefix "venv33 : echo \"/usr\""
run pyenv-virtualenvs --bare run pyenv-virtualenvs --bare
unstub pyenv-versions
unstub pyenv-virtualenv-prefix
unstub pyenv-prefix
assert_success assert_success
assert_output <<OUT assert_output <<OUT
venv27 venv27
venv33 venv33
OUT OUT
unstub pyenv-virtualenv-prefix
} }