mirror of
https://github.com/pyenv/pyenv-virtualenv.git
synced 2026-09-12 16:26:16 -04:00
wip: add activate hooks
This commit is contained in:
parent
13bc1877ef
commit
d22801dc8e
|
|
@ -25,6 +25,30 @@ resolve_link() {
|
|||
unset FORCE
|
||||
unset QUIET
|
||||
|
||||
# Define `before_activate` and `after_activate` functions that allow
|
||||
# plugin hooks to register a string of code for execution before or
|
||||
# after activating a virtualenv.
|
||||
declare -a before_hooks after_hooks
|
||||
|
||||
before_activate() {
|
||||
local hook="$1"
|
||||
before_hooks["${#before_hooks[@]}"]="$hook"
|
||||
}
|
||||
|
||||
after_activate() {
|
||||
local hook="$1"
|
||||
after_hooks["${#after_hooks[@]}"]="$hook"
|
||||
}
|
||||
|
||||
# Load plugin hooks.
|
||||
OLDIFS="$IFS"
|
||||
IFS=$'\n' scripts=(`pyenv-hooks activate`)
|
||||
IFS="$OLDIFS"
|
||||
for script in "${scripts[@]}"; do source "$script"; done
|
||||
|
||||
# Execute `before_activate` hooks.
|
||||
for hook in "${before_hooks[@]}"; do eval "$hook"; done
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
"--complete" )
|
||||
|
|
@ -258,3 +282,6 @@ if [ -d "${prefix}/conda-meta" ] ||
|
|||
esac
|
||||
shopt -u nullglob
|
||||
fi
|
||||
|
||||
# Execute `after_activate` hooks.
|
||||
for hook in "${after_hooks[@]}"; do eval "$hook"; done
|
||||
|
|
|
|||
|
|
@ -16,6 +16,11 @@ setup() {
|
|||
unset PYENV_VIRTUAL_ENV_DISABLE_PROMPT
|
||||
unset VIRTUAL_ENV_DISABLE_PROMPT
|
||||
unset _OLD_VIRTUAL_PS1
|
||||
stub pyenv-hooks ""
|
||||
}
|
||||
|
||||
teardown() {
|
||||
unstub pyenv-hooks
|
||||
}
|
||||
|
||||
@test "activate virtualenv from current version" {
|
||||
|
|
|
|||
|
|
@ -40,3 +40,35 @@ OUT
|
|||
unstub pyenv-rehash
|
||||
teardown_version "3.5.1"
|
||||
}
|
||||
|
||||
@test "pyenv-sh-activate hooks" {
|
||||
cat > "${HOOK_PATH}/activate.bash" <<OUT
|
||||
before_activate 'echo "before"'
|
||||
after_activate 'echo "after"'
|
||||
OUT
|
||||
export PYENV_VIRTUALENV_INIT=1
|
||||
|
||||
stub pyenv-version-name "echo venv"
|
||||
stub pyenv-virtualenv-prefix ""
|
||||
stub pyenv-prefix "venv : echo \"${PYENV_ROOT}/versions/venv\""
|
||||
stub pyenv-hooks "activate : echo '$HOOK_PATH'/activate.bash"
|
||||
stub pyenv-sh-deactivate ""
|
||||
|
||||
PYENV_SHELL="bash" PYENV_VERSION="venv" run pyenv-sh-activate
|
||||
|
||||
assert_success
|
||||
assert_output <<EOS
|
||||
before
|
||||
export PYENV_VIRTUAL_ENV="${PYENV_ROOT}/versions/venv";
|
||||
export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv";
|
||||
export _OLD_VIRTUAL_PS1="\${PS1:-}";
|
||||
export PS1="(venv) \${PS1:-}";
|
||||
after
|
||||
EOS
|
||||
|
||||
unstub pyenv-version-name
|
||||
unstub pyenv-virtualenv-prefix
|
||||
unstub pyenv-prefix
|
||||
unstub pyenv-hooks
|
||||
unstub pyenv-sh-deactivate
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue