Skip to content

Commit

Permalink
Merge branch 'version-hooks'
Browse files Browse the repository at this point in the history
Closes pyenv#739
  • Loading branch information
mislav committed Dec 23, 2015
2 parents a62a753 + 6e30032 commit 6481cbb
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 1 deletion.
2 changes: 2 additions & 0 deletions libexec/rbenv-hooks
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ set -e
if [ "$1" = "--complete" ]; then
echo exec
echo rehash
echo version-name
echo version-origin
echo which
exit
fi
Expand Down
7 changes: 7 additions & 0 deletions libexec/rbenv-version-name
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,13 @@ if [ -z "$RBENV_VERSION" ]; then
RBENV_VERSION="$(rbenv-version-file-read "$RBENV_VERSION_FILE" || true)"
fi

OLDIFS="$IFS"
IFS=$'\n' scripts=(`rbenv-hooks version-name`)
IFS="$OLDIFS"
for script in "${scripts[@]}"; do
source "$script"
done

if [ -z "$RBENV_VERSION" ] || [ "$RBENV_VERSION" = "system" ]; then
echo "system"
exit
Expand Down
13 changes: 12 additions & 1 deletion libexec/rbenv-version-origin
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,18 @@
set -e
[ -n "$RBENV_DEBUG" ] && set -x

if [ -n "$RBENV_VERSION" ]; then
unset RBENV_VERSION_ORIGIN

OLDIFS="$IFS"
IFS=$'\n' scripts=(`rbenv-hooks version-origin`)
IFS="$OLDIFS"
for script in "${scripts[@]}"; do
source "$script"
done

if [ -n "$RBENV_VERSION_ORIGIN" ]; then
echo "$RBENV_VERSION_ORIGIN"
elif [ -n "$RBENV_VERSION" ]; then
echo "RBENV_VERSION environment variable"
else
rbenv-version-file
Expand Down
13 changes: 13 additions & 0 deletions test/version-name.bats
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,19 @@ setup() {
assert_success "system"
}

@test "RBENV_VERSION can be overridden by hook" {
create_version "1.8.7"
create_version "1.9.3"

mkdir -p "${RBENV_ROOT}/rbenv.d/version-name"
cat > "${RBENV_ROOT}/rbenv.d/version-name/test.bash" <<HOOK
RBENV_VERSION=1.9.3
HOOK

RBENV_VERSION=1.8.7 RBENV_HOOK_PATH="${RBENV_ROOT}/rbenv.d" run rbenv-version-name
assert_success "1.9.3"
}

@test "RBENV_VERSION has precedence over local" {
create_version "1.8.7"
create_version "1.9.3"
Expand Down
15 changes: 15 additions & 0 deletions test/version-origin.bats
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,18 @@ setup() {
run rbenv-version-origin
assert_success "${PWD}/.rbenv-version"
}

@test "reports from hook" {
mkdir -p "${RBENV_ROOT}/rbenv.d/version-origin"
cat > "${RBENV_ROOT}/rbenv.d/version-origin/test.bash" <<HOOK
RBENV_VERSION_ORIGIN=plugin
HOOK

RBENV_VERSION=1 RBENV_HOOK_PATH="${RBENV_ROOT}/rbenv.d" run rbenv-version-origin
assert_success "plugin"
}

@test "doesn't inherit RBENV_VERSION_ORIGIN from environment" {
RBENV_VERSION_ORIGIN=ignored run rbenv-version-origin
assert_success "${RBENV_ROOT}/version"
}

0 comments on commit 6481cbb

Please sign in to comment.