Add --quiet option to activate and deactivate

This commit is contained in:
Yamashita Yuu
2014-07-04 20:47:10 +09:00
parent 5b3b909089
commit f0c400b669
4 changed files with 132 additions and 24 deletions

View File

@@ -20,6 +20,12 @@ if [ "$1" = "--complete" ]; then
exec pyenv-virtualenvs --bare
fi
unset QUIET
if [ "$1" = "--quiet" ]; then
QUIET=1
shift 1
fi
if [ "$1" = "--unset" ]; then
echo "pyenv deactivate"
exit
@@ -40,12 +46,13 @@ if [ -z "${PYENV_VIRTUALENV_INIT}" ]; then
fi
if [ "${#versions[@]}" -gt 1 ]; then
echo "pyenv-virtualenv: cannot activate multiple versions at once: ${versions[@]}" 1>&2
[ -n "$QUIET" ] || echo "pyenv-virtualenv: cannot activate multiple versions at once: ${versions[@]}" 1>&2
echo "false"
exit 1
fi
if ! pyenv-virtualenv-prefix "${versions}" 1>/dev/null; then
if ! pyenv-virtualenv-prefix "${versions}" 1>/dev/null 2>&1; then
[ -n "$QUIET" ] || echo "pyenv-virtualenv: version \`${versions}' is not a virtualenv" 1>&2
echo "false"
exit 1
fi
@@ -70,9 +77,11 @@ fish )
esac
# Display setup instruction if 'pyenv virtualenv-init -' is not found in "$profile"
if [ -z "$QUIET" ]; then
if [ -f "$profile" ] && grep -q 'pyenv init -' "$profile" && ! grep -q 'pyenv virtualenv-init -' "$profile"; then
pyenv-virtualenv-init >&2 || true
fi
fi
if [ -z "$no_shell" ]; then
echo "pyenv shell \"${versions}\";"

View File

@@ -9,6 +9,12 @@
set -e
[ -n "$PYENV_DEBUG" ] && set -x
unset QUIET
if [ "$1" = "--quiet" ]; then
QUIET=1
shift 1
fi
shell="$(basename "${PYENV_SHELL:-$SHELL}")"
case "$shell" in
fish )
@@ -27,23 +33,29 @@ fi
case "$shell" in
fish )
cat <<EOS
setenv PYENV_DEACTIVATE "\$VIRTUAL_ENV";
deactivate;
else
echo "pyenv-virtualenv: no virtualenv has been activated." 1>&2;
false;
end;
EOS
echo " setenv PYENV_DEACTIVATE \"\$VIRTUAL_ENV\";"
;;
* )
cat <<EOS
export PYENV_DEACTIVATE="\$VIRTUAL_ENV";
deactivate;
else
echo "pyenv-virtualenv: no virtualenv has been activated." 1>&2;
false;
fi;
EOS
echo " export PYENV_DEACTIVATE=\"\$VIRTUAL_ENV\";"
;;
esac
cat <<EOS
deactivate;
else
EOS
if [ -z "$QUIET" ]; then
echo " echo \"pyenv-virtualenv: no virtualenv has been activated.\" 1>&2;"
fi
echo " false;"
case "$shell" in
fish )
echo "end;"
;;
* )
echo "fi;"
;;
esac

View File

@@ -137,7 +137,7 @@ EOS
}
@test "should fail if the version is not a virtualenv" {
stub pyenv-virtualenv-prefix "3.3.3 : echo \"not a virtualenv\" 1>&2; false"
stub pyenv-virtualenv-prefix "3.3.3 : false"
run pyenv-sh-activate "3.3.3"
@@ -145,7 +145,20 @@ EOS
assert_failure
assert_output <<EOS
not a virtualenv
pyenv-virtualenv: version \`3.3.3' is not a virtualenv
false
EOS
}
@test "should fail if the version is not a virtualenv (quiet)" {
stub pyenv-virtualenv-prefix "3.3.3 : false"
run pyenv-sh-activate --quiet "3.3.3"
unstub pyenv-virtualenv-prefix
assert_failure
assert_output <<EOS
false
EOS
}
@@ -160,6 +173,15 @@ false
EOS
}
@test "should fail if there are multiple versions (quiet)" {
run pyenv-sh-activate --quiet "venv" "venv27"
assert_failure
assert_output <<EOS
false
EOS
}
@test "should fail if activate is invoked as a command" {
run pyenv-activate

View File

@@ -23,7 +23,23 @@ fi;
EOS
}
@test "deactivate virtualenv (without pyenv-virtualenv-init)" {
@test "deactivate virtualenv (quiet)" {
export PYENV_VIRTUALENV_INIT=1
PYENV_SHELL="bash" run pyenv-sh-deactivate --quiet
assert_success
assert_output <<EOS
if declare -f deactivate 1>/dev/null 2>&1; then
export PYENV_DEACTIVATE="\$VIRTUAL_ENV";
deactivate;
else
false;
fi;
EOS
}
@test "deactivate virtualenv (w/o pyenv-virtualenv-init)" {
export PYENV_VIRTUALENV_INIT=
PYENV_SHELL="bash" run pyenv-sh-deactivate
@@ -41,6 +57,23 @@ fi;
EOS
}
@test "deactivate virtualenv (w/o pyenv-virtualenv-init) (quiet)" {
export PYENV_VIRTUALENV_INIT=
PYENV_SHELL="bash" run pyenv-sh-deactivate --quiet
assert_success
assert_output <<EOS
if declare -f deactivate 1>/dev/null 2>&1; then
pyenv shell --unset;
export PYENV_DEACTIVATE="\$VIRTUAL_ENV";
deactivate;
else
false;
fi;
EOS
}
@test "deactivate virtualenv (fish)" {
export PYENV_VIRTUALENV_INIT=1
@@ -58,7 +91,23 @@ end;
EOS
}
@test "deactivate virtualenv (fish) (without pyenv-virtualenv-init)" {
@test "deactivate virtualenv (fish) (quiet)" {
export PYENV_VIRTUALENV_INIT=1
PYENV_SHELL="fish" run pyenv-sh-deactivate --quiet
assert_success
assert_output <<EOS
if functions -q deactivate
setenv PYENV_DEACTIVATE "\$VIRTUAL_ENV";
deactivate;
else
false;
end;
EOS
}
@test "deactivate virtualenv (fish) (w/o pyenv-virtualenv-init)" {
export PYENV_VIRTUALENV_INIT=
PYENV_SHELL="fish" run pyenv-sh-deactivate
@@ -76,6 +125,22 @@ end;
EOS
}
@test "deactivate virtualenv (fish) (w/o pyenv-virtualenv-init) (quiet)" {
export PYENV_VIRTUALENV_INIT=
PYENV_SHELL="fish" run pyenv-sh-deactivate --quiet
assert_success
assert_output <<EOS
if functions -q deactivate
pyenv shell --unset;
setenv PYENV_DEACTIVATE "\$VIRTUAL_ENV";
deactivate;
else
false;
end;
EOS
}
@test "should fail if deactivate is invoked as a command" {
run pyenv-deactivate