ignores carriage returns

This commit is contained in:
Yamashita Yuu 2014-03-24 18:15:40 +09:00
parent d90cb0ec85
commit ea9214bb2e
2 changed files with 19 additions and 13 deletions

View file

@ -8,14 +8,14 @@ VERSION_FILE="$1"
if [ -e "$VERSION_FILE" ]; then if [ -e "$VERSION_FILE" ]; then
# Read the first non-whitespace word from the specified version file. # 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. # Be careful not to load it whole in case there's something crazy in it.
IFS="${IFS}"$'\r'
words=( $(cut -b 1-1024 "$VERSION_FILE") ) words=( $(cut -b 1-1024 "$VERSION_FILE") )
versions=("${words[@]}") versions=("${words[@]}")
if [ -n "$versions" ]; then if [ -n "$versions" ]; then
OLDIFS="$IFS" OLDIFS="$IFS"
{ IFS=: IFS=:
echo "${versions[*]}" echo "${versions[*]}"
}
IFS="$OLDIFS" IFS="$OLDIFS"
exit exit
fi fi

View file

@ -24,39 +24,39 @@ setup() {
} }
@test "reads simple version file" { @test "reads simple version file" {
cat > my-version <<<"3.3.3" cat > my-version <<<"3.3.5"
run pyenv-version-file-read my-version run pyenv-version-file-read my-version
assert_success "3.3.3" assert_success "3.3.5"
} }
@test "ignores leading spaces" { @test "ignores leading spaces" {
cat > my-version <<<" 3.3.3" cat > my-version <<<" 3.3.5"
run pyenv-version-file-read my-version run pyenv-version-file-read my-version
assert_success "3.3.3" assert_success "3.3.5"
} }
@test "reads only the first word from file" { @test "reads only the first word from file" {
cat > my-version <<<"3.3.3-p194@tag 2.7.6 hi" cat > my-version <<<"3.3.5 2.7.6 hi"
run pyenv-version-file-read my-version run pyenv-version-file-read my-version
assert_success "3.3.3-p194@tag:2.7.6:hi" assert_success "3.3.5:2.7.6:hi"
} }
@test "loads only the first line in file" { @test "loads only the first line in file" {
cat > my-version <<IN cat > my-version <<IN
2.7.6 one 2.7.6 one
3.3.3 two 3.3.5 two
IN IN
run pyenv-version-file-read my-version run pyenv-version-file-read my-version
assert_success "2.7.6:one:3.3.3:two" assert_success "2.7.6:one:3.3.5:two"
} }
@test "ignores leading blank lines" { @test "ignores leading blank lines" {
cat > my-version <<IN cat > my-version <<IN
3.3.3 3.3.5
IN IN
run pyenv-version-file-read my-version run pyenv-version-file-read my-version
assert_success "3.3.3" assert_success "3.3.5"
} }
@test "handles the file with no trailing newline" { @test "handles the file with no trailing newline" {
@ -64,3 +64,9 @@ IN
run pyenv-version-file-read my-version run pyenv-version-file-read my-version
assert_success "2.7.6" assert_success "2.7.6"
} }
@test "ignores carriage returns" {
cat > my-version <<< $'3.3.5\r'
run pyenv-version-file-read my-version
assert_success "3.3.5"
}