Skip to content

Commit

Permalink
Fix "version X is not installed" with multiple PYENV_VERSIONs
Browse files Browse the repository at this point in the history
This was introduced when merging the rbenv upstream change
(rbenv/rbenv@6bb7f07d2d).
  • Loading branch information
blueyed committed Oct 16, 2014
1 parent 8e65737 commit de5c61c
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 4 deletions.
15 changes: 11 additions & 4 deletions libexec/pyenv-which
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ for version in "${versions[@]}"; do
PYENV_COMMAND_PATH="${PYENV_ROOT}/versions/${version}/bin/${PYENV_COMMAND}"
fi
if [ -x "$PYENV_COMMAND_PATH" ]; then
PYENV_VERSION="$version"
break
fi
done
Expand All @@ -59,10 +58,18 @@ done

if [ -x "$PYENV_COMMAND_PATH" ]; then
echo "$PYENV_COMMAND_PATH"
elif ! [ -d "${PYENV_ROOT}/versions/${PYENV_VERSION}" ]; then
echo "pyenv: version \`$PYENV_VERSION' is not installed" >&2
exit 1
else
for version in "${versions[@]}"; do
any_not_installed=0
if ! [ -d "${PYENV_ROOT}/versions/${version}" ]; then
echo "pyenv: version \`$version' is not installed" >&2
any_not_installed=1
fi
done
if [ "$any_not_installed" = 1 ]; then
exit 1
fi

echo "pyenv: $PYENV_COMMAND: command not found" >&2

versions="$(pyenv-whence "$PYENV_COMMAND" || true)"
Expand Down
9 changes: 9 additions & 0 deletions test/which.bats
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,15 @@ create_executable() {
assert_failure "pyenv: version \`3.3' is not installed"
}

@test "versions not installed" {
create_executable "3.4" "py.test"
PYENV_VERSION=2.7:3.3 run pyenv-which py.test
assert_failure <<OUT
pyenv: version \`2.7' is not installed
pyenv: version \`3.3' is not installed
OUT
}

@test "no executable found" {
create_executable "2.7" "py.test"
PYENV_VERSION=2.7 run pyenv-which fab
Expand Down

0 comments on commit de5c61c

Please sign in to comment.