mirror of
https://github.com/pyenv/pyenv-virtualenv.git
synced 2025-11-09 20:13:54 -05:00
shell version set in activate should be unset in deactivate (#61)
This commit is contained in:
@@ -41,8 +41,9 @@ while [ $# -gt 0 ]; do
|
|||||||
shift 1
|
shift 1
|
||||||
done
|
done
|
||||||
|
|
||||||
|
no_shell=
|
||||||
versions=("$@")
|
versions=("$@")
|
||||||
if [ -z "$versions" ]; then
|
if [ -z "${versions}" ]; then
|
||||||
no_shell=1
|
no_shell=1
|
||||||
OLDIFS="$IFS"
|
OLDIFS="$IFS"
|
||||||
IFS=: versions=($(pyenv-version-name))
|
IFS=: versions=($(pyenv-version-name))
|
||||||
@@ -97,6 +98,16 @@ fi
|
|||||||
|
|
||||||
if [ -z "$no_shell" ]; then
|
if [ -z "$no_shell" ]; then
|
||||||
echo "pyenv shell \"${versions}\";"
|
echo "pyenv shell \"${versions}\";"
|
||||||
|
# shell version set in pyenv-sh-activate should be unset
|
||||||
|
# https://github.com/yyuu/pyenv-virtualenv/issues/61
|
||||||
|
case "$shell" in
|
||||||
|
fish )
|
||||||
|
echo "setenv PYENV_ACTIVATE_SHELL 1;"
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
echo "export PYENV_ACTIVATE_SHELL=1;"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
prefix="$(pyenv-prefix "${versions}")"
|
prefix="$(pyenv-prefix "${versions}")"
|
||||||
|
|||||||
@@ -43,10 +43,18 @@ if [ -n "$VERBOSE" ]; then
|
|||||||
echo " echo \"pyenv-virtualenv: deactivate ${prefix##*/}\" 1>&2;"
|
echo " echo \"pyenv-virtualenv: deactivate ${prefix##*/}\" 1>&2;"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "${PYENV_VIRTUALENV_INIT}" ]; then
|
if [ -n "${PYENV_ACTIVATE_SHELL}" ]; then
|
||||||
# Backward compatibility issue
|
# shell version set in pyenv-sh-activate should be unset
|
||||||
# https://github.com/yyuu/pyenv-virtualenv/issues/26
|
# https://github.com/yyuu/pyenv-virtualenv/issues/61
|
||||||
echo " pyenv shell --unset;"
|
echo " pyenv shell --unset;"
|
||||||
|
case "$shell" in
|
||||||
|
fish )
|
||||||
|
echo " set -e PYENV_ACTIVATE_SHELL;"
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
echo " unset PYENV_ACTIVATE_SHELL;"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case "$shell" in
|
case "$shell" in
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ EOS
|
|||||||
assert_success
|
assert_success
|
||||||
assert_output <<EOS
|
assert_output <<EOS
|
||||||
pyenv shell "venv";
|
pyenv shell "venv";
|
||||||
|
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";
|
. "${PYENV_ROOT}/versions/venv/bin/activate";
|
||||||
@@ -109,6 +110,7 @@ EOS
|
|||||||
assert_success
|
assert_success
|
||||||
assert_output <<EOS
|
assert_output <<EOS
|
||||||
pyenv shell "venv";
|
pyenv shell "venv";
|
||||||
|
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";
|
. "${PYENV_ROOT}/versions/venv/bin/activate.fish";
|
||||||
@@ -129,6 +131,7 @@ EOS
|
|||||||
assert_success
|
assert_success
|
||||||
assert_output <<EOS
|
assert_output <<EOS
|
||||||
pyenv shell "venv27";
|
pyenv shell "venv27";
|
||||||
|
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";
|
. "${PYENV_ROOT}/versions/venv27/bin/activate";
|
||||||
@@ -149,6 +152,7 @@ EOS
|
|||||||
assert_success
|
assert_success
|
||||||
assert_output <<EOS
|
assert_output <<EOS
|
||||||
pyenv shell "venv27";
|
pyenv shell "venv27";
|
||||||
|
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";
|
. "${PYENV_ROOT}/versions/venv27/bin/activate";
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ setup() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@test "deactivate virtualenv" {
|
@test "deactivate virtualenv" {
|
||||||
export PYENV_VIRTUALENV_INIT=1
|
|
||||||
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
|
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
|
||||||
|
export PYENV_ACTIVATE_SHELL=
|
||||||
|
|
||||||
PYENV_SHELL="bash" run pyenv-sh-deactivate
|
PYENV_SHELL="bash" run pyenv-sh-deactivate
|
||||||
|
|
||||||
@@ -26,8 +26,8 @@ EOS
|
|||||||
}
|
}
|
||||||
|
|
||||||
@test "deactivate virtualenv (verbose)" {
|
@test "deactivate virtualenv (verbose)" {
|
||||||
export PYENV_VIRTUALENV_INIT=1
|
|
||||||
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
|
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
|
||||||
|
export PYENV_ACTIVATE_SHELL=
|
||||||
|
|
||||||
PYENV_SHELL="bash" run pyenv-sh-deactivate --verbose
|
PYENV_SHELL="bash" run pyenv-sh-deactivate --verbose
|
||||||
|
|
||||||
@@ -46,8 +46,8 @@ EOS
|
|||||||
}
|
}
|
||||||
|
|
||||||
@test "deactivate virtualenv (no-error)" {
|
@test "deactivate virtualenv (no-error)" {
|
||||||
export PYENV_VIRTUALENV_INIT=1
|
|
||||||
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
|
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
|
||||||
|
export PYENV_ACTIVATE_SHELL=
|
||||||
|
|
||||||
PYENV_SHELL="bash" run pyenv-sh-deactivate --no-error
|
PYENV_SHELL="bash" run pyenv-sh-deactivate --no-error
|
||||||
|
|
||||||
@@ -63,9 +63,9 @@ fi;
|
|||||||
EOS
|
EOS
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "deactivate virtualenv (without pyenv-virtualenv-init)" {
|
@test "deactivate virtualenv (with shell activation)" {
|
||||||
export PYENV_VIRTUALENV_INIT=
|
|
||||||
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
|
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
|
||||||
|
export PYENV_ACTIVATE_SHELL=1
|
||||||
|
|
||||||
PYENV_SHELL="bash" run pyenv-sh-deactivate
|
PYENV_SHELL="bash" run pyenv-sh-deactivate
|
||||||
|
|
||||||
@@ -73,6 +73,7 @@ EOS
|
|||||||
assert_output <<EOS
|
assert_output <<EOS
|
||||||
if declare -f deactivate 1>/dev/null 2>&1; then
|
if declare -f deactivate 1>/dev/null 2>&1; then
|
||||||
pyenv shell --unset;
|
pyenv shell --unset;
|
||||||
|
unset PYENV_ACTIVATE_SHELL;
|
||||||
export PYENV_DEACTIVATE="$PYENV_ACTIVATE";
|
export PYENV_DEACTIVATE="$PYENV_ACTIVATE";
|
||||||
unset PYENV_ACTIVATE;
|
unset PYENV_ACTIVATE;
|
||||||
deactivate;
|
deactivate;
|
||||||
@@ -83,9 +84,9 @@ fi;
|
|||||||
EOS
|
EOS
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "deactivate virtualenv (without pyenv-virtualenv-init) (no-error)" {
|
@test "deactivate virtualenv (with shell activation) (no-error)" {
|
||||||
export PYENV_VIRTUALENV_INIT=
|
|
||||||
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
|
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
|
||||||
|
export PYENV_ACTIVATE_SHELL=1
|
||||||
|
|
||||||
PYENV_SHELL="bash" run pyenv-sh-deactivate --no-error
|
PYENV_SHELL="bash" run pyenv-sh-deactivate --no-error
|
||||||
|
|
||||||
@@ -93,6 +94,7 @@ EOS
|
|||||||
assert_output <<EOS
|
assert_output <<EOS
|
||||||
if declare -f deactivate 1>/dev/null 2>&1; then
|
if declare -f deactivate 1>/dev/null 2>&1; then
|
||||||
pyenv shell --unset;
|
pyenv shell --unset;
|
||||||
|
unset PYENV_ACTIVATE_SHELL;
|
||||||
export PYENV_DEACTIVATE="$PYENV_ACTIVATE";
|
export PYENV_DEACTIVATE="$PYENV_ACTIVATE";
|
||||||
unset PYENV_ACTIVATE;
|
unset PYENV_ACTIVATE;
|
||||||
deactivate;
|
deactivate;
|
||||||
@@ -103,8 +105,8 @@ EOS
|
|||||||
}
|
}
|
||||||
|
|
||||||
@test "deactivate virtualenv which has been activated manually" {
|
@test "deactivate virtualenv which has been activated manually" {
|
||||||
export PYENV_VIRTUALENV_INIT=1
|
|
||||||
export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
|
export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
|
||||||
|
export PYENV_ACTIVATE_SHELL=
|
||||||
|
|
||||||
PYENV_SHELL="bash" run pyenv-sh-deactivate
|
PYENV_SHELL="bash" run pyenv-sh-deactivate
|
||||||
|
|
||||||
@@ -122,8 +124,8 @@ EOS
|
|||||||
}
|
}
|
||||||
|
|
||||||
@test "deactivate virtualenv (fish)" {
|
@test "deactivate virtualenv (fish)" {
|
||||||
export PYENV_VIRTUALENV_INIT=1
|
|
||||||
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
|
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
|
||||||
|
export PYENV_ACTIVATE_SHELL=
|
||||||
|
|
||||||
PYENV_SHELL="fish" run pyenv-sh-deactivate
|
PYENV_SHELL="fish" run pyenv-sh-deactivate
|
||||||
|
|
||||||
@@ -141,8 +143,8 @@ EOS
|
|||||||
}
|
}
|
||||||
|
|
||||||
@test "deactivate virtualenv (fish) (no-error)" {
|
@test "deactivate virtualenv (fish) (no-error)" {
|
||||||
export PYENV_VIRTUALENV_INIT=1
|
|
||||||
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
|
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
|
||||||
|
export PYENV_ACTIVATE_SHELL=
|
||||||
|
|
||||||
PYENV_SHELL="fish" run pyenv-sh-deactivate --no-error
|
PYENV_SHELL="fish" run pyenv-sh-deactivate --no-error
|
||||||
|
|
||||||
@@ -158,9 +160,9 @@ end;
|
|||||||
EOS
|
EOS
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "deactivate virtualenv (fish) (without pyenv-virtualenv-init)" {
|
@test "deactivate virtualenv (fish) (with shell activation)" {
|
||||||
export PYENV_VIRTUALENV_INIT=
|
|
||||||
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
|
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
|
||||||
|
export PYENV_ACTIVATE_SHELL=1
|
||||||
|
|
||||||
PYENV_SHELL="fish" run pyenv-sh-deactivate
|
PYENV_SHELL="fish" run pyenv-sh-deactivate
|
||||||
|
|
||||||
@@ -168,6 +170,7 @@ EOS
|
|||||||
assert_output <<EOS
|
assert_output <<EOS
|
||||||
if functions -q deactivate;
|
if functions -q deactivate;
|
||||||
pyenv shell --unset;
|
pyenv shell --unset;
|
||||||
|
set -e PYENV_ACTIVATE_SHELL;
|
||||||
setenv PYENV_DEACTIVATE "$PYENV_ACTIVATE";
|
setenv PYENV_DEACTIVATE "$PYENV_ACTIVATE";
|
||||||
set -e PYENV_ACTIVATE;
|
set -e PYENV_ACTIVATE;
|
||||||
deactivate;
|
deactivate;
|
||||||
@@ -178,9 +181,9 @@ end;
|
|||||||
EOS
|
EOS
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "deactivate virtualenv (fish) (without pyenv-virtualenv-init) (no-error)" {
|
@test "deactivate virtualenv (fish) (with shell activation) (no-error)" {
|
||||||
export PYENV_VIRTUALENV_INIT=
|
|
||||||
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
|
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
|
||||||
|
export PYENV_ACTIVATE_SHELL=1
|
||||||
|
|
||||||
PYENV_SHELL="fish" run pyenv-sh-deactivate --no-error
|
PYENV_SHELL="fish" run pyenv-sh-deactivate --no-error
|
||||||
|
|
||||||
@@ -188,6 +191,7 @@ EOS
|
|||||||
assert_output <<EOS
|
assert_output <<EOS
|
||||||
if functions -q deactivate;
|
if functions -q deactivate;
|
||||||
pyenv shell --unset;
|
pyenv shell --unset;
|
||||||
|
set -e PYENV_ACTIVATE_SHELL;
|
||||||
setenv PYENV_DEACTIVATE "$PYENV_ACTIVATE";
|
setenv PYENV_DEACTIVATE "$PYENV_ACTIVATE";
|
||||||
set -e PYENV_ACTIVATE;
|
set -e PYENV_ACTIVATE;
|
||||||
deactivate;
|
deactivate;
|
||||||
@@ -198,8 +202,8 @@ EOS
|
|||||||
}
|
}
|
||||||
|
|
||||||
@test "deactivate virtualenv which has been activated manually (fish)" {
|
@test "deactivate virtualenv which has been activated manually (fish)" {
|
||||||
export PYENV_VIRTUALENV_INIT=1
|
|
||||||
export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
|
export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
|
||||||
|
export PYENV_ACTIVATE_SHELL=
|
||||||
|
|
||||||
PYENV_SHELL="fish" run pyenv-sh-deactivate
|
PYENV_SHELL="fish" run pyenv-sh-deactivate
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user