mirror of
https://github.com/pyenv/pyenv-virtualenv.git
synced 2026-09-16 02:06:22 -04:00
add tests for pyenv deactivate hooks
This commit is contained in:
parent
7e58a5985f
commit
198dab8c98
|
|
@ -16,6 +16,30 @@ fi
|
|||
unset FORCE
|
||||
unset QUIET
|
||||
|
||||
# Define `before_deactivate` and `after_deactivate` functions that allow
|
||||
# plugin hooks to register a string of code for execution before or
|
||||
# after deactivating a virtualenv.
|
||||
declare -a before_hooks after_hooks
|
||||
|
||||
before_deactivate() {
|
||||
local hook="$1"
|
||||
before_hooks["${#before_hooks[@]}"]="$hook"
|
||||
}
|
||||
|
||||
after_deactivate() {
|
||||
local hook="$1"
|
||||
after_hooks["${#after_hooks[@]}"]="$hook"
|
||||
}
|
||||
|
||||
# Load plugin hooks.
|
||||
OLDIFS="$IFS"
|
||||
IFS=$'\n' scripts=(`pyenv-hooks deactivate`)
|
||||
IFS="$OLDIFS"
|
||||
for script in "${scripts[@]}"; do source "$script"; done
|
||||
|
||||
# Execute `before_deactivate` hooks.
|
||||
for hook in "${before_hooks[@]}"; do eval "$hook"; done
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
"-f" | "--force" )
|
||||
|
|
@ -191,3 +215,6 @@ fi;
|
|||
EOS
|
||||
;;
|
||||
esac
|
||||
|
||||
# Execute `after_deactivate` hooks.
|
||||
for hook in "${after_hooks[@]}"; do eval "$hook"; done
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ setup() {
|
|||
unset PYENV_VIRTUAL_ENV_DISABLE_PROMPT
|
||||
unset VIRTUAL_ENV_DISABLE_PROMPT
|
||||
unset _OLD_VIRTUAL_PS1
|
||||
stub pyenv-hooks ""
|
||||
stub pyenv-hooks "activate : echo"
|
||||
}
|
||||
|
||||
teardown() {
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ setup() {
|
|||
unset PYENV_VIRTUAL_ENV_DISABLE_PROMPT
|
||||
unset VIRTUAL_ENV_DISABLE_PROMPT
|
||||
unset _OLD_VIRTUAL_PS1
|
||||
stub pyenv-hooks ""
|
||||
stub pyenv-hooks "activate : echo"
|
||||
}
|
||||
|
||||
teardown() {
|
||||
|
|
|
|||
|
|
@ -16,6 +16,11 @@ setup() {
|
|||
unset PYENV_VIRTUAL_ENV_DISABLE_PROMPT
|
||||
unset VIRTUAL_ENV_DISABLE_PROMPT
|
||||
unset _OLD_VIRTUAL_PS1
|
||||
stub pyenv-hooks "deactivate : echo"
|
||||
}
|
||||
|
||||
teardown() {
|
||||
unstub pyenv-hooks
|
||||
}
|
||||
|
||||
@test "deactivate conda root" {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/env bats
|
||||
#!/usr/bin/env bats
|
||||
|
||||
load test_helper
|
||||
|
||||
|
|
@ -16,6 +16,11 @@ setup() {
|
|||
unset PYENV_VIRTUAL_ENV_DISABLE_PROMPT
|
||||
unset VIRTUAL_ENV_DISABLE_PROMPT
|
||||
unset _OLD_VIRTUAL_PS1
|
||||
stub pyenv-hooks "deactivate : echo"
|
||||
}
|
||||
|
||||
teardown() {
|
||||
unstub pyenv-hooks
|
||||
}
|
||||
|
||||
@test "deactivate virtualenv" {
|
||||
|
|
|
|||
|
|
@ -72,3 +72,42 @@ EOS
|
|||
unstub pyenv-hooks
|
||||
unstub pyenv-sh-deactivate
|
||||
}
|
||||
|
||||
@test "deactivate virtualenv" {
|
||||
cat > "${HOOK_PATH}/deactivate.bash" <<OUT
|
||||
before_deactivate 'echo "before"'
|
||||
after_deactivate 'echo "after"'
|
||||
OUT
|
||||
export PYENV_VIRTUALENV_INIT=1
|
||||
export PYENV_VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
|
||||
export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
|
||||
export PYENV_ACTIVATE_SHELL=
|
||||
stub pyenv-hooks "deactivate : echo '$HOOK_PATH'/deactivate.bash"
|
||||
|
||||
PYENV_SHELL="bash" run pyenv-sh-deactivate
|
||||
|
||||
assert_success
|
||||
assert_output <<EOS
|
||||
before
|
||||
unset PYENV_VIRTUAL_ENV;
|
||||
unset VIRTUAL_ENV;
|
||||
if [ -n "\${_OLD_VIRTUAL_PATH:-}" ]; then
|
||||
export PATH="\${_OLD_VIRTUAL_PATH}";
|
||||
unset _OLD_VIRTUAL_PATH;
|
||||
fi;
|
||||
if [ -n "\${_OLD_VIRTUAL_PYTHONHOME:-}" ]; then
|
||||
export PYTHONHOME="\${_OLD_VIRTUAL_PYTHONHOME}";
|
||||
unset _OLD_VIRTUAL_PYTHONHOME;
|
||||
fi;
|
||||
if [ -n "\${_OLD_VIRTUAL_PS1:-}" ]; then
|
||||
export PS1="\${_OLD_VIRTUAL_PS1}";
|
||||
unset _OLD_VIRTUAL_PS1;
|
||||
fi;
|
||||
if declare -f deactivate 1>/dev/null 2>&1; then
|
||||
unset -f deactivate;
|
||||
fi;
|
||||
after
|
||||
EOS
|
||||
|
||||
unstub pyenv-hooks
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue