diff --git a/libexec/rbenv-version-name b/libexec/rbenv-version-name index 3769a7cd..1af277bf 100755 --- a/libexec/rbenv-version-name +++ b/libexec/rbenv-version-name @@ -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 diff --git a/test/version-name.bats b/test/version-name.bats index d6438b5b..bc633121 100644 --- a/test/version-name.bats +++ b/test/version-name.bats @@ -2,6 +2,13 @@ load test_helper +export RBENV_HOOK_PATH="${RBENV_ROOT}/rbenv.d" + +create_hook() { + mkdir -p "${RBENV_ROOT}/rbenv.d/version-name" + cat > "${RBENV_ROOT}/rbenv.d/version-name/$1" <<<"$2" +} + create_version() { mkdir -p "${RBENV_ROOT}/versions/$1" } @@ -22,6 +29,18 @@ setup() { assert_success "system" } +@test "RBENV_VERSION can be overridden by hook" { + create_version "1.8.7" + create_version "1.9.3" + + RBENV_VERSION=1.8.7 run rbenv-version-name + assert_success "1.8.7" + + create_hook test.bash "RBENV_VERSION=1.9.3" + RBENV_VERSION=1.8.7 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"