mirror of
https://github.com/rbenv/rbenv.git
synced 2024-12-28 20:55:38 +01:00
parent
382db59cd0
commit
baf7656d2f
8 changed files with 51 additions and 6 deletions
|
@ -20,9 +20,11 @@ elif [ "$1" = "--no-sh" ]; then
|
|||
shift
|
||||
fi
|
||||
|
||||
IFS=: paths=($PATH)
|
||||
|
||||
shopt -s nullglob
|
||||
|
||||
{ for path in ${PATH//:/$'\n'}; do
|
||||
{ for path in "${paths[@]}"; do
|
||||
for command in "${path}/rbenv-"*; do
|
||||
command="${command##*rbenv-}"
|
||||
if [ -n "$sh" ]; then
|
||||
|
|
|
@ -32,7 +32,8 @@ fi
|
|||
RBENV_COMMAND_PATH="$(rbenv-which "$RBENV_COMMAND")"
|
||||
RBENV_BIN_PATH="${RBENV_COMMAND_PATH%/*}"
|
||||
|
||||
for script in $(rbenv-hooks exec); do
|
||||
IFS=$'\n' scripts=(`rbenv-hooks exec`)
|
||||
for script in "${scripts[@]}"; do
|
||||
source "$script"
|
||||
done
|
||||
|
||||
|
|
|
@ -37,9 +37,11 @@ realpath() {
|
|||
cd "$cwd"
|
||||
}
|
||||
|
||||
IFS=: hook_paths=($RBENV_HOOK_PATH)
|
||||
|
||||
shopt -s nullglob
|
||||
for path in ${RBENV_HOOK_PATH//:/$'\n'}; do
|
||||
for script in $path/"$RBENV_COMMAND"/*.bash; do
|
||||
for path in "${hook_paths[@]}"; do
|
||||
for script in "$path/$RBENV_COMMAND"/*.bash; do
|
||||
echo $(realpath $script)
|
||||
done
|
||||
done
|
||||
|
|
|
@ -144,7 +144,8 @@ make_shims ../versions/*/bin/*
|
|||
cd "$OLDPWD"
|
||||
|
||||
# Allow plugins to register shims.
|
||||
for script in $(rbenv-hooks rehash); do
|
||||
IFS=$'\n' scripts=(`rbenv-hooks rehash`)
|
||||
for script in "${scripts[@]}"; do
|
||||
source "$script"
|
||||
done
|
||||
|
||||
|
|
|
@ -63,7 +63,8 @@ else
|
|||
RBENV_COMMAND_PATH="${RBENV_ROOT}/versions/${RBENV_VERSION}/bin/${RBENV_COMMAND}"
|
||||
fi
|
||||
|
||||
for script in $(rbenv-hooks which); do
|
||||
IFS=$'\n' scripts=(`rbenv-hooks which`)
|
||||
for script in "${scripts[@]}"; do
|
||||
source "$script"
|
||||
done
|
||||
|
||||
|
|
|
@ -19,6 +19,18 @@ load test_helper
|
|||
assert_line "shell"
|
||||
}
|
||||
|
||||
@test "commands in path with spaces" {
|
||||
path="${RBENV_TEST_DIR}/my commands"
|
||||
cmd="${path}/rbenv-sh-hello"
|
||||
mkdir -p "$path"
|
||||
touch "$cmd"
|
||||
chmod +x "$cmd"
|
||||
|
||||
PATH="${path}:$PATH" run rbenv-commands --sh
|
||||
assert_success
|
||||
assert_line "hello"
|
||||
}
|
||||
|
||||
@test "commands --no-sh" {
|
||||
run rbenv-commands --no-sh
|
||||
assert_success
|
||||
|
|
14
test/exec.bats
Normal file
14
test/exec.bats
Normal file
|
@ -0,0 +1,14 @@
|
|||
#!/usr/bin/env bats
|
||||
|
||||
load test_helper
|
||||
|
||||
@test "supports hook path with spaces" {
|
||||
hook_path="${RBENV_TEST_DIR}/custom stuff/rbenv hooks"
|
||||
mkdir -p "${hook_path}/exec"
|
||||
echo "export HELLO='from hook'" > "${hook_path}/exec/hello.bash"
|
||||
|
||||
export RBENV_VERSION=system
|
||||
RBENV_HOOK_PATH="$hook_path" run rbenv-exec env
|
||||
assert_success
|
||||
assert_line "HELLO=from hook"
|
||||
}
|
|
@ -28,6 +28,18 @@ create_hook() {
|
|||
assert_line 2 "${RBENV_TEST_DIR}/etc/rbenv_hooks/exec/bueno.bash"
|
||||
}
|
||||
|
||||
@test "supports hook paths with spaces" {
|
||||
path1="${RBENV_TEST_DIR}/my hooks/rbenv.d"
|
||||
path2="${RBENV_TEST_DIR}/etc/rbenv hooks"
|
||||
create_hook "$path1" exec "hello.bash"
|
||||
create_hook "$path2" exec "ahoy.bash"
|
||||
|
||||
RBENV_HOOK_PATH="$path1:$path2" run rbenv-hooks exec
|
||||
assert_success
|
||||
assert_line 0 "${RBENV_TEST_DIR}/my hooks/rbenv.d/exec/hello.bash"
|
||||
assert_line 1 "${RBENV_TEST_DIR}/etc/rbenv hooks/exec/ahoy.bash"
|
||||
}
|
||||
|
||||
@test "resolves relative paths" {
|
||||
path="${RBENV_TEST_DIR}/rbenv.d"
|
||||
create_hook "$path" exec "hello.bash"
|
||||
|
|
Loading…
Reference in a new issue