Skip to content

Commit

Permalink
saving $IFS in run() not altered for code using it
Browse files Browse the repository at this point in the history
IFS was modified by run() becoming '\n' and so relying to its bash default
was failing tests.

Also some wrong tests corrected because was relying on this behavior to pass.

Fix sstephenson#89
  • Loading branch information
Sylvain303 committed Jan 29, 2015
1 parent 3b33a5a commit 1735a4f
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 3 deletions.
4 changes: 3 additions & 1 deletion libexec/bats-exec-test
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ load() {
}

run() {
local e E T
local e E T oldIFS
[[ ! "$-" =~ e ]] || e=1
[[ ! "$-" =~ E ]] || E=1
[[ ! "$-" =~ T ]] || T=1
Expand All @@ -57,10 +57,12 @@ run() {
set +T
output="$("$@" 2>&1)"
status="$?"
oldIFS=$IFS
IFS=$'\n' lines=($output)
[ -z "$e" ] || set -e
[ -z "$E" ] || set -E
[ -z "$T" ] || set -T
IFS=$oldIFS
}

setup() {
Expand Down
8 changes: 7 additions & 1 deletion test/bats.bats
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ fixtures bats
run bats "$FIXTURE_ROOT/passing.bats"
[ $status -eq 0 ]
[ ${lines[0]} = "1..1" ]
[ ${lines[1]} = "ok 1 a passing test" ]
[ "${lines[1]}" = "ok 1 a passing test" ]
}

@test "summary passing tests" {
Expand Down Expand Up @@ -256,3 +256,9 @@ fixtures bats
[ "${lines[5]}" = "# (in test file $RELATIVE_FIXTURE_ROOT/single_line.bats, line 9)" ]
[ "${lines[6]}" = $'# `@test "failing" { false; }\' failed' ]
}

@test "testing IFS not modified by run" {
run bats "$FIXTURE_ROOT/loop_keep_IFS.bats"
[ $status -eq 0 ]
[ "${lines[1]}" = "ok 1 loop_func" ]
}
16 changes: 16 additions & 0 deletions test/fixtures/bats/loop_keep_IFS.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# see issue #89
loop_func() {
local search="none one two tree"
local d

for d in $search ; do
echo $d
done
}

@test "loop_func" {
run loop_func
[[ "${lines[3]}" == 'tree' ]]
run loop_func
[[ "${lines[2]}" == 'two' ]]
}
2 changes: 1 addition & 1 deletion test/suite.bats
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ fixtures suite
run bats "$FIXTURE_ROOT/single"
[ $status -eq 0 ]
[ ${lines[0]} = "1..1" ]
[ ${lines[1]} = "ok 1 a passing test" ]
[ "${lines[1]}" = "ok 1 a passing test" ]
}

@test "counting tests in a suite" {
Expand Down

0 comments on commit 1735a4f

Please sign in to comment.