From 1fe59e41ea28511b0260bcdd7638484c737ae1e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mislav=20Marohnic=CC=81?= Date: Thu, 7 Mar 2013 00:13:50 -0500 Subject: [PATCH] error message when rehash fails on non-writable directory Fixes #238 --- libexec/rbenv-rehash | 6 +++++- test/rehash.bats | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100755 test/rehash.bats diff --git a/libexec/rbenv-rehash b/libexec/rbenv-rehash index b05a4c76..8a6d66d6 100755 --- a/libexec/rbenv-rehash +++ b/libexec/rbenv-rehash @@ -17,7 +17,11 @@ mkdir -p "$SHIM_PATH" set -o noclobber { echo > "$PROTOTYPE_SHIM_PATH" } 2>/dev/null || -{ echo "rbenv: cannot rehash: $PROTOTYPE_SHIM_PATH exists" +{ if [ -w "$SHIM_PATH" ]; then + echo "rbenv: cannot rehash: $PROTOTYPE_SHIM_PATH exists" + else + echo "rbenv: cannot rehash: $SHIM_PATH isn't writable" + fi exit 1 } >&2 set +o noclobber diff --git a/test/rehash.bats b/test/rehash.bats new file mode 100755 index 00000000..22f26d07 --- /dev/null +++ b/test/rehash.bats @@ -0,0 +1,33 @@ +#!/usr/bin/env bats + +export PATH="${BATS_TEST_DIRNAME}/../libexec:$PATH" + +RBENV_TEST_ROOT="${BATS_TMPDIR}/rbenv" +export RBENV_ROOT="$RBENV_TEST_ROOT" + +teardown() { + rm -rf "$RBENV_TEST_ROOT" +} + +@test "empty rehash" { + run rbenv-rehash + [ "$status" -eq 0 ] + [ -d "${RBENV_TEST_ROOT}/shims" ] + rmdir "${RBENV_TEST_ROOT}/shims" +} + +@test "shims directory not writable" { + mkdir -p "${RBENV_TEST_ROOT}/shims" + chmod -w "${RBENV_TEST_ROOT}/shims" + run rbenv-rehash + [ "$status" -eq 1 ] + [ "$output" = "rbenv: cannot rehash: ${RBENV_TEST_ROOT}/shims isn't writable" ] +} + +@test "rehash in progress" { + mkdir -p "${RBENV_TEST_ROOT}/shims" + touch "${RBENV_TEST_ROOT}/shims/.rbenv-shim" + run rbenv-rehash + [ "$status" -eq 1 ] + [ "$output" = "rbenv: cannot rehash: ${RBENV_TEST_ROOT}/shims/.rbenv-shim exists" ] +}