1
0
mirror of https://github.com/sstephenson/bats.git synced 2024-11-17 03:32:27 +01:00

Support single-line test definitions

This commit is contained in:
Sam Stephenson 2013-11-17 13:04:57 -06:00
parent 08374f7269
commit 1041e46f39
3 changed files with 22 additions and 2 deletions

View File

@ -31,16 +31,17 @@ encode_name() {
tests=() tests=()
index=0 index=0
pattern='^ *@test *([^ ].*) *\{ *$' pattern='^ *@test *([^ ].*) *\{ *(.*)$'
while IFS= read -r line; do while IFS= read -r line; do
let index+=1 let index+=1
if [[ "$line" =~ $pattern ]]; then if [[ "$line" =~ $pattern ]]; then
quoted_name="${BASH_REMATCH[1]}" quoted_name="${BASH_REMATCH[1]}"
body="${BASH_REMATCH[2]}"
name="$(eval echo "$quoted_name")" name="$(eval echo "$quoted_name")"
encoded_name="$(encode_name "$name")" encoded_name="$(encode_name "$name")"
tests["${#tests[@]}"]="$encoded_name" tests["${#tests[@]}"]="$encoded_name"
echo "${encoded_name}() { bats_test_begin ${quoted_name} ${index}" echo "${encoded_name}() { bats_test_begin ${quoted_name} ${index}; ${body}"
else else
printf "%s\n" "$line" printf "%s\n" "$line"
fi fi

View File

@ -186,3 +186,13 @@ fixtures bats
[ "${lines[0]}" = "This isn't TAP!" ] [ "${lines[0]}" = "This isn't TAP!" ]
[ "${lines[1]}" = "Good day to you" ] [ "${lines[1]}" = "Good day to you" ]
} }
@test "single-line tests" {
run bats "$FIXTURE_ROOT/single_line.bats"
[ $status -eq 1 ]
[ "${lines[1]}" = "ok 1 empty" ]
[ "${lines[2]}" = "ok 2 passing" ]
[ "${lines[3]}" = "ok 3 input redirection" ]
[ "${lines[4]}" = "not ok 4 failing" ]
[ "${lines[5]}" = "# (in test file $FIXTURE_ROOT/single_line.bats, line 9)" ]
}

9
test/fixtures/bats/single_line.bats vendored Normal file
View File

@ -0,0 +1,9 @@
@test "empty" { }
@test "passing" { true; }
@test "input redirection" { diff - <( echo hello ); } <<EOS
hello
EOS
@test "failing" { false; }