소스 검색

Fix `realpath` fallback in `rbenv hooks`

The symlinks weren't correctly resolved if they were pointing to a
single path component, such as `ln -s foo bar`.
pull/487/head^2
Mislav Marohnić 9 년 전
부모
커밋
7026e529c7
2개의 변경된 파일12개의 추가작업 그리고 5개의 파일을 삭제
  1. +5
    -4
      libexec/rbenv-hooks
  2. +7
    -1
      test/hooks.bats

+ 5
- 4
libexec/rbenv-hooks 파일 보기

@ -35,16 +35,17 @@ resolve_link() {
}
realpath() {
local cwd="$(pwd)"
local cwd="$PWD"
local path="$1"
local name
while [ -n "$path" ]; do
cd "${path%/*}"
local name="${path##*/}"
name="${path##*/}"
[ "$name" = "$path" ] || cd "${path%/*}"
path="$(resolve_link "$name" || true)"
done
echo "$(pwd)/$name"
echo "${PWD}/$name"
cd "$cwd"
}
fi

+ 7
- 1
test/hooks.bats 파일 보기

@ -59,7 +59,13 @@ OUT
mkdir -p "$HOME"
touch "${HOME}/hola.bash"
ln -s "../../home/hola.bash" "${path}/exec/hello.bash"
touch "${path}/exec/bright.sh"
ln -s "bright.sh" "${path}/exec/world.bash"
RBENV_HOOK_PATH="$path" run rbenv-hooks exec
assert_success "${HOME}/hola.bash"
assert_success
assert_output <<OUT
${HOME}/hola.bash
${RBENV_TEST_DIR}/rbenv.d/exec/bright.sh
OUT
}

불러오는 중...
취소
저장