From f237a11f4fea6968c4fb92765cab0ce8e96befae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mislav=20Marohni=C4=87?= Date: Mon, 13 Oct 2014 04:02:04 +0200 Subject: [PATCH 1/2] Have `versions` emit a warning when no Ruby version was found --- libexec/rbenv-versions | 10 ++++++++++ test/versions.bats | 6 ++++++ 2 files changed, 16 insertions(+) diff --git a/libexec/rbenv-versions b/libexec/rbenv-versions index ea28e5cd..b35cef48 100755 --- a/libexec/rbenv-versions +++ b/libexec/rbenv-versions @@ -19,12 +19,15 @@ else include_system="1" fi +num_versions=0 + print_version() { if [ "$1" == "$current_version" ]; then echo "${hit_prefix}$(rbenv-version 2>/dev/null)" else echo "${miss_prefix}$1" fi + num_versions=$((num_versions + 1)) } # Include "system" in the non-bare output, if it exists @@ -32,8 +35,15 @@ if [ -n "$include_system" ] && RBENV_VERSION=system rbenv-which ruby >/dev/null print_version system fi +shopt -s nullglob for path in "${RBENV_ROOT}/versions/"*; do if [ -d "$path" ]; then print_version "${path##*/}" fi done +shopt -u nullglob + +if [ "$num_versions" -eq 0 ] && [ -n "$include_system" ]; then + echo "Warning: no Ruby detected on the system" >&2 + exit 1 +fi diff --git a/test/versions.bats b/test/versions.bats index 9554c154..56a2aa33 100644 --- a/test/versions.bats +++ b/test/versions.bats @@ -24,6 +24,12 @@ stub_system_ruby() { assert_success "* system (set by ${RBENV_ROOT}/version)" } +@test "not even system ruby available" { + PATH="$(path_without ruby)" run rbenv-versions + assert_failure + assert_output "Warning: no Ruby detected on the system" +} + @test "bare output no versions installed" { assert [ ! -d "${RBENV_ROOT}/versions" ] run rbenv-versions --bare From 9bcef4b8759b54edee5413500f24f60be28499b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mislav=20Marohni=C4=87?= Date: Mon, 13 Oct 2014 04:02:46 +0200 Subject: [PATCH 2/2] Add tests for non-directory types under `RBENV_ROOT/versions/` --- test/versions.bats | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/test/versions.bats b/test/versions.bats index 56a2aa33..5d79ed5a 100644 --- a/test/versions.bats +++ b/test/versions.bats @@ -119,3 +119,23 @@ OUT 2.0.0 OUT } + +@test "ignores non-directories under versions" { + create_version "1.9" + touch "${RBENV_ROOT}/versions/hello" + + run rbenv-versions --bare + assert_success "1.9" +} + +@test "lists symlinks under versions" { + create_version "1.8.7" + ln -s "1.8.7" "${RBENV_ROOT}/versions/1.8" + + run rbenv-versions --bare + assert_success + assert_output <