pyenv/test/exec.bats

83 lines
1.7 KiB
Plaintext
Raw Normal View History

#!/usr/bin/env bats
load test_helper
2013-04-01 02:58:58 +02:00
create_executable() {
2013-04-02 02:48:04 +02:00
name="${1?}"
shift 1
2013-04-01 02:58:58 +02:00
bin="${RBENV_ROOT}/versions/${RBENV_VERSION}/bin"
mkdir -p "$bin"
2013-04-02 02:48:04 +02:00
{ if [ $# -eq 0 ]; then cat -
else echo "$@"
fi
} | sed -Ee '1s/^ +//' > "${bin}/$name"
chmod +x "${bin}/$name"
2013-04-01 02:58:58 +02:00
}
2013-04-01 03:01:37 +02:00
@test "fails with invalid version" {
export RBENV_VERSION="2.0"
run rbenv-exec ruby -v
assert_failure "rbenv: version \`2.0' is not installed"
}
2013-04-01 03:44:19 +02:00
@test "completes with names of executables" {
export RBENV_VERSION="2.0"
2013-04-02 02:48:04 +02:00
create_executable "ruby" "#!/bin/sh"
create_executable "rake" "#!/bin/sh"
2013-04-01 03:44:19 +02:00
rbenv-rehash
run rbenv-completions exec
2013-04-02 00:27:27 +02:00
assert_success "\
rake
ruby"
2013-04-01 03:44:19 +02:00
}
@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"
}
2013-04-01 02:58:58 +02:00
@test "forwards all arguments" {
export RBENV_VERSION="2.0"
2013-04-02 02:48:04 +02:00
create_executable "ruby" <<SH
#!$BASH
echo \$0
for arg; do
# hack to avoid bash builtin echo which can't output '-e'
printf "%s\\n" "\$arg"
done
SH
2013-04-01 02:58:58 +02:00
run rbenv-exec ruby -w -e "puts 'hello world'" -- extra args
2013-04-02 00:27:27 +02:00
assert_success "\
${RBENV_ROOT}/versions/2.0/bin/ruby
-w
-e
puts 'hello world'
--
extra
args"
2013-04-01 02:58:58 +02:00
}
@test "supports ruby -S <cmd>" {
export RBENV_VERSION="2.0"
create_executable "ruby" "#!$BASH
if [[ \$1 = '-S' ]]; then
head -1 \$(which \$2) | grep ruby >/dev/null
exit \$?
else
echo 'ruby 2.0 (rbenv test)'
fi"
create_executable "rake" "#!/usr/bin/env ruby"
rbenv-rehash
run ruby -S rake
assert_success
}