mirror of
https://github.com/sstephenson/bats.git
synced 2024-11-17 03:32:27 +01:00
Merge pull request #90 from Sylvain303/master
saving $IFS in run() not altered for code using it
This commit is contained in:
commit
955309ab94
|
@ -48,7 +48,7 @@ load() {
|
||||||
}
|
}
|
||||||
|
|
||||||
run() {
|
run() {
|
||||||
local e E T
|
local e E T oldIFS
|
||||||
[[ ! "$-" =~ e ]] || e=1
|
[[ ! "$-" =~ e ]] || e=1
|
||||||
[[ ! "$-" =~ E ]] || E=1
|
[[ ! "$-" =~ E ]] || E=1
|
||||||
[[ ! "$-" =~ T ]] || T=1
|
[[ ! "$-" =~ T ]] || T=1
|
||||||
|
@ -57,10 +57,12 @@ run() {
|
||||||
set +T
|
set +T
|
||||||
output="$("$@" 2>&1)"
|
output="$("$@" 2>&1)"
|
||||||
status="$?"
|
status="$?"
|
||||||
|
oldIFS=$IFS
|
||||||
IFS=$'\n' lines=($output)
|
IFS=$'\n' lines=($output)
|
||||||
[ -z "$e" ] || set -e
|
[ -z "$e" ] || set -e
|
||||||
[ -z "$E" ] || set -E
|
[ -z "$E" ] || set -E
|
||||||
[ -z "$T" ] || set -T
|
[ -z "$T" ] || set -T
|
||||||
|
IFS=$oldIFS
|
||||||
}
|
}
|
||||||
|
|
||||||
setup() {
|
setup() {
|
||||||
|
|
|
@ -30,14 +30,14 @@ fixtures bats
|
||||||
@test "empty test file runs zero tests" {
|
@test "empty test file runs zero tests" {
|
||||||
run bats "$FIXTURE_ROOT/empty.bats"
|
run bats "$FIXTURE_ROOT/empty.bats"
|
||||||
[ $status -eq 0 ]
|
[ $status -eq 0 ]
|
||||||
[ $output = "1..0" ]
|
[ "$output" = "1..0" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "one passing test" {
|
@test "one passing test" {
|
||||||
run bats "$FIXTURE_ROOT/passing.bats"
|
run bats "$FIXTURE_ROOT/passing.bats"
|
||||||
[ $status -eq 0 ]
|
[ $status -eq 0 ]
|
||||||
[ ${lines[0]} = "1..1" ]
|
[ "${lines[0]}" = "1..1" ]
|
||||||
[ ${lines[1]} = "ok 1 a passing test" ]
|
[ "${lines[1]}" = "ok 1 a passing test" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "summary passing tests" {
|
@test "summary passing tests" {
|
||||||
|
@ -256,3 +256,9 @@ fixtures bats
|
||||||
[ "${lines[5]}" = "# (in test file $RELATIVE_FIXTURE_ROOT/single_line.bats, line 9)" ]
|
[ "${lines[5]}" = "# (in test file $RELATIVE_FIXTURE_ROOT/single_line.bats, line 9)" ]
|
||||||
[ "${lines[6]}" = $'# `@test "failing" { false; }\' failed' ]
|
[ "${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
test/fixtures/bats/loop_keep_IFS.bats
vendored
Normal file
16
test/fixtures/bats/loop_keep_IFS.bats
vendored
Normal file
|
@ -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' ]]
|
||||||
|
}
|
|
@ -6,30 +6,30 @@ fixtures suite
|
||||||
@test "running a suite with no test files" {
|
@test "running a suite with no test files" {
|
||||||
run bats "$FIXTURE_ROOT/empty"
|
run bats "$FIXTURE_ROOT/empty"
|
||||||
[ $status -eq 0 ]
|
[ $status -eq 0 ]
|
||||||
[ $output = "1..0" ]
|
[ "$output" = "1..0" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "running a suite with one test file" {
|
@test "running a suite with one test file" {
|
||||||
run bats "$FIXTURE_ROOT/single"
|
run bats "$FIXTURE_ROOT/single"
|
||||||
[ $status -eq 0 ]
|
[ $status -eq 0 ]
|
||||||
[ ${lines[0]} = "1..1" ]
|
[ "${lines[0]}" = "1..1" ]
|
||||||
[ ${lines[1]} = "ok 1 a passing test" ]
|
[ "${lines[1]}" = "ok 1 a passing test" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "counting tests in a suite" {
|
@test "counting tests in a suite" {
|
||||||
run bats -c "$FIXTURE_ROOT/single"
|
run bats -c "$FIXTURE_ROOT/single"
|
||||||
[ $status -eq 0 ]
|
[ $status -eq 0 ]
|
||||||
[ $output -eq 1 ]
|
[ "$output" -eq 1 ]
|
||||||
|
|
||||||
run bats -c "$FIXTURE_ROOT/multiple"
|
run bats -c "$FIXTURE_ROOT/multiple"
|
||||||
[ $status -eq 0 ]
|
[ $status -eq 0 ]
|
||||||
[ $output -eq 3 ]
|
[ "$output" -eq 3 ]
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "aggregated output of multiple tests in a suite" {
|
@test "aggregated output of multiple tests in a suite" {
|
||||||
run bats "$FIXTURE_ROOT/multiple"
|
run bats "$FIXTURE_ROOT/multiple"
|
||||||
[ $status -eq 0 ]
|
[ $status -eq 0 ]
|
||||||
[ ${lines[0]} = "1..3" ]
|
[ "${lines[0]}" = "1..3" ]
|
||||||
echo "$output" | grep "^ok . truth"
|
echo "$output" | grep "^ok . truth"
|
||||||
echo "$output" | grep "^ok . more truth"
|
echo "$output" | grep "^ok . more truth"
|
||||||
echo "$output" | grep "^ok . quasi-truth"
|
echo "$output" | grep "^ok . quasi-truth"
|
||||||
|
@ -38,14 +38,14 @@ fixtures suite
|
||||||
@test "a failing test in a suite results in an error exit code" {
|
@test "a failing test in a suite results in an error exit code" {
|
||||||
FLUNK=1 run bats "$FIXTURE_ROOT/multiple"
|
FLUNK=1 run bats "$FIXTURE_ROOT/multiple"
|
||||||
[ $status -eq 1 ]
|
[ $status -eq 1 ]
|
||||||
[ ${lines[0]} = "1..3" ]
|
[ "${lines[0]}" = "1..3" ]
|
||||||
echo "$output" | grep "^not ok . quasi-truth"
|
echo "$output" | grep "^not ok . quasi-truth"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "running an ad-hoc suite by specifying multiple test files" {
|
@test "running an ad-hoc suite by specifying multiple test files" {
|
||||||
run bats "$FIXTURE_ROOT/multiple/a.bats" "$FIXTURE_ROOT/multiple/b.bats"
|
run bats "$FIXTURE_ROOT/multiple/a.bats" "$FIXTURE_ROOT/multiple/b.bats"
|
||||||
[ $status -eq 0 ]
|
[ $status -eq 0 ]
|
||||||
[ ${lines[0]} = "1..3" ]
|
[ "${lines[0]}" = "1..3" ]
|
||||||
echo "$output" | grep "^ok . truth"
|
echo "$output" | grep "^ok . truth"
|
||||||
echo "$output" | grep "^ok . more truth"
|
echo "$output" | grep "^ok . more truth"
|
||||||
echo "$output" | grep "^ok . quasi-truth"
|
echo "$output" | grep "^ok . quasi-truth"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user