From d2eace00c9bd28134d3a3c2239b0d17b62e13e23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mislav=20Marohni=C4=87?= Date: Wed, 30 Oct 2013 02:33:23 +0100 Subject: [PATCH 1/2] Add more tests for version-file-read --- test/version-file-read.bats | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/test/version-file-read.bats b/test/version-file-read.bats index 8002388d..66bd46fa 100644 --- a/test/version-file-read.bats +++ b/test/version-file-read.bats @@ -17,12 +17,24 @@ setup() { assert_failure "" } +@test "fails for blank file" { + echo > my-version + run rbenv-version-file-read my-version + assert_failure "" +} + @test "reads simple version file" { cat > my-version <<<"1.9.3" run rbenv-version-file-read my-version assert_success "1.9.3" } +@test "ignores leading spaces" { + cat > my-version <<<" 1.9.3" + run rbenv-version-file-read my-version + assert_success "1.9.3" +} + @test "reads only the first word from file" { cat > my-version <<<"1.9.3-p194@tag 1.8.7 hi" run rbenv-version-file-read my-version @@ -37,3 +49,18 @@ IN run rbenv-version-file-read my-version assert_success "1.8.7" } + +@test "ignores leading blank lines" { + cat > my-version < my-version + run rbenv-version-file-read my-version + assert_success "1.8.7" +} From 681435e0b4a0d3f9609a11af734902312eabaeaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mislav=20Marohni=C4=87?= Date: Wed, 30 Oct 2013 02:33:49 +0100 Subject: [PATCH 2/2] Simplify version-file-read to avoid process substitution Process substitution seems to be causing problems with some versions of bash on specific systems. Fixes #401 --- libexec/rbenv-version-file-read | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/libexec/rbenv-version-file-read b/libexec/rbenv-version-file-read index 69ec78b9..5a1d7a3f 100755 --- a/libexec/rbenv-version-file-read +++ b/libexec/rbenv-version-file-read @@ -8,13 +8,8 @@ VERSION_FILE="$1" if [ -e "$VERSION_FILE" ]; then # Read the first non-whitespace word from the specified version file. # Be careful not to load it whole in case there's something crazy in it. - version="" - while read -a words; do - word="${words[0]}" - if [ -z "$version" ] && [ -n "$word" ]; then - version="$word" - fi - done < <( cat "$VERSION_FILE" && echo ) + words=( $(head -c 1024 "$VERSION_FILE") ) + version="${words[0]}" if [ -n "$version" ]; then echo "$version"