tests
This commit is contained in:
Executable
+209
@@ -0,0 +1,209 @@
|
||||
setup() {
|
||||
load test_helper
|
||||
fixtures suite
|
||||
REENTRANT_RUN_PRESERVE+=(BATS_LIBEXEC)
|
||||
}
|
||||
|
||||
@test "running a suite with no test files" {
|
||||
reentrant_run bats "$FIXTURE_ROOT/empty"
|
||||
[ $status -eq 0 ]
|
||||
[ "$output" = "1..0" ]
|
||||
}
|
||||
|
||||
@test "running a suite with one test file" {
|
||||
reentrant_run bats "$FIXTURE_ROOT/single"
|
||||
[ $status -eq 0 ]
|
||||
[ "${lines[0]}" = "1..1" ]
|
||||
[ "${lines[1]}" = "ok 1 a passing test" ]
|
||||
}
|
||||
|
||||
@test "counting tests in a suite" {
|
||||
reentrant_run bats -c "$FIXTURE_ROOT/single"
|
||||
[ $status -eq 0 ]
|
||||
[ "$output" -eq 1 ]
|
||||
|
||||
reentrant_run bats -c "$FIXTURE_ROOT/multiple"
|
||||
[ $status -eq 0 ]
|
||||
[ "$output" -eq 3 ]
|
||||
}
|
||||
|
||||
@test "aggregated output of multiple tests in a suite" {
|
||||
reentrant_run bats "$FIXTURE_ROOT/multiple"
|
||||
[ $status -eq 0 ]
|
||||
[ "${lines[0]}" = "1..3" ]
|
||||
echo "$output" | grep "^ok . truth"
|
||||
echo "$output" | grep "^ok . more truth"
|
||||
echo "$output" | grep "^ok . quasi-truth"
|
||||
}
|
||||
|
||||
@test "a failing test in a suite results in an error exit code" {
|
||||
FLUNK=1 reentrant_run bats "$FIXTURE_ROOT/multiple"
|
||||
[ $status -eq 1 ]
|
||||
[ "${lines[0]}" = "1..3" ]
|
||||
echo "$output" | grep "^not ok . quasi-truth"
|
||||
}
|
||||
|
||||
@test "running an ad-hoc suite by specifying multiple test files" {
|
||||
reentrant_run bats "$FIXTURE_ROOT/multiple/a.bats" "$FIXTURE_ROOT/multiple/b.bats"
|
||||
[ $status -eq 0 ]
|
||||
[ "${lines[0]}" = "1..3" ]
|
||||
echo "$output" | grep "^ok . truth"
|
||||
echo "$output" | grep "^ok . more truth"
|
||||
echo "$output" | grep "^ok . quasi-truth"
|
||||
}
|
||||
|
||||
@test "extended syntax in suite" {
|
||||
emulate_bats_env
|
||||
FLUNK=1 reentrant_run bats-exec-suite -x "$FIXTURE_ROOT/multiple/"*.bats
|
||||
echo "output: $output"
|
||||
[ $status -eq 1 ]
|
||||
[ "${lines[0]}" = "1..3" ]
|
||||
[ "${lines[1]}" = "suite $FIXTURE_ROOT/multiple/a.bats" ]
|
||||
[ "${lines[2]}" = "begin 1 truth" ]
|
||||
[ "${lines[3]}" = "ok 1 truth" ]
|
||||
[ "${lines[4]}" = "suite $FIXTURE_ROOT/multiple/b.bats" ]
|
||||
[ "${lines[5]}" = "begin 2 more truth" ]
|
||||
[ "${lines[6]}" = "ok 2 more truth" ]
|
||||
[ "${lines[7]}" = "begin 3 quasi-truth" ]
|
||||
[ "${lines[8]}" = "not ok 3 quasi-truth" ]
|
||||
}
|
||||
|
||||
@test "timing syntax in suite" {
|
||||
emulate_bats_env
|
||||
FLUNK=1 reentrant_run bats-exec-suite -T "$FIXTURE_ROOT/multiple/"*.bats
|
||||
echo "$output"
|
||||
[ $status -eq 1 ]
|
||||
[ "${lines[0]}" = "1..3" ]
|
||||
regex="ok 1 truth in [0-9]+ms"
|
||||
[[ "${lines[1]}" =~ $regex ]]
|
||||
regex="ok 2 more truth in [0-9]+ms"
|
||||
[[ "${lines[2]}" =~ $regex ]]
|
||||
regex="not ok 3 quasi-truth in [0-9]+ms"
|
||||
[[ "${lines[3]}" =~ $regex ]]
|
||||
}
|
||||
|
||||
@test "extended timing syntax in suite" {
|
||||
emulate_bats_env
|
||||
FLUNK=1 reentrant_run bats-exec-suite -x -T "$FIXTURE_ROOT/multiple/"*.bats
|
||||
echo "$output"
|
||||
[ $status -eq 1 ]
|
||||
[ "${lines[0]}" = "1..3" ]
|
||||
[ "${lines[1]}" = "suite $FIXTURE_ROOT/multiple/a.bats" ]
|
||||
[ "${lines[2]}" = "begin 1 truth" ]
|
||||
regex="ok 1 truth in [0-9]+ms"
|
||||
[[ "${lines[3]}" =~ $regex ]]
|
||||
[ "${lines[4]}" = "suite $FIXTURE_ROOT/multiple/b.bats" ]
|
||||
[ "${lines[5]}" = "begin 2 more truth" ]
|
||||
regex="ok 2 more truth in [0-9]+ms"
|
||||
[[ "${lines[6]}" =~ $regex ]]
|
||||
[ "${lines[7]}" = "begin 3 quasi-truth" ]
|
||||
regex="not ok 3 quasi-truth in [0-9]+ms"
|
||||
[[ "${lines[8]}" =~ $regex ]]
|
||||
}
|
||||
|
||||
@test "recursive support (short option)" {
|
||||
reentrant_run bats -r "${FIXTURE_ROOT}/recursive"
|
||||
[ $status -eq 0 ]
|
||||
[ "${lines[0]}" = "1..2" ]
|
||||
[ "${lines[1]}" = "ok 1 another passing test" ]
|
||||
[ "${lines[2]}" = "ok 2 a passing test" ]
|
||||
}
|
||||
|
||||
@test "recursive support (long option)" {
|
||||
reentrant_run bats --recursive "${FIXTURE_ROOT}/recursive"
|
||||
[ $status -eq 0 ]
|
||||
[ "${lines[0]}" = "1..2" ]
|
||||
[ "${lines[1]}" = "ok 1 another passing test" ]
|
||||
[ "${lines[2]}" = "ok 2 a passing test" ]
|
||||
}
|
||||
|
||||
@test "recursive support with symlinks" {
|
||||
if [[ ! -L "${FIXTURE_ROOT}/recursive_with_symlinks/test.bats" ]]; then
|
||||
skip "symbolic links aren't functional on OSTYPE=$OSTYPE"
|
||||
fi
|
||||
|
||||
reentrant_run bats -r "${FIXTURE_ROOT}/recursive_with_symlinks"
|
||||
[ $status -eq 0 ]
|
||||
[ "${lines[0]}" = "1..2" ]
|
||||
[ "${lines[1]}" = "ok 1 another passing test" ]
|
||||
[ "${lines[2]}" = "ok 2 a passing test" ]
|
||||
}
|
||||
|
||||
@test "run entire suite when --filter isn't set" {
|
||||
reentrant_run bats "${FIXTURE_ROOT}/filter"
|
||||
[ "$status" -eq 0 ]
|
||||
[ "${lines[0]}" = '1..9' ]
|
||||
[ "${lines[1]}" = 'ok 1 foo in a' ]
|
||||
[ "${lines[2]}" = 'ok 2 --bar in a' ]
|
||||
[ "${lines[3]}" = 'ok 3 baz in a' ]
|
||||
[ "${lines[4]}" = 'ok 4 bar_in_b' ]
|
||||
[ "${lines[5]}" = 'ok 5 --baz_in_b' ]
|
||||
[ "${lines[6]}" = 'ok 6 quux_in_b' ]
|
||||
[ "${lines[7]}" = 'ok 7 quux_in c' ]
|
||||
[ "${lines[8]}" = 'ok 8 xyzzy in c' ]
|
||||
[ "${lines[9]}" = 'ok 9 plugh_in c' ]
|
||||
}
|
||||
|
||||
@test "use --filter to run subset of test cases from across the suite" {
|
||||
reentrant_run bats -f 'ba[rz]' "${FIXTURE_ROOT}/filter"
|
||||
[ "$status" -eq 0 ]
|
||||
[ "${lines[0]}" = '1..4' ]
|
||||
[ "${lines[1]}" = 'ok 1 --bar in a' ]
|
||||
[ "${lines[2]}" = 'ok 2 baz in a' ]
|
||||
[ "${lines[3]}" = 'ok 3 bar_in_b' ]
|
||||
[ "${lines[4]}" = 'ok 4 --baz_in_b' ]
|
||||
|
||||
local prev_output="$output"
|
||||
|
||||
reentrant_run bats --filter 'ba[rz]' "${FIXTURE_ROOT}/filter"
|
||||
[ "$status" -eq 0 ]
|
||||
[ "$output" = "$prev_output" ]
|
||||
}
|
||||
|
||||
@test "--filter can handle regular expressions that contain [_- ]" {
|
||||
reentrant_run bats -f '--ba[rz][ _]in' "${FIXTURE_ROOT}/filter"
|
||||
[ "$status" -eq 0 ]
|
||||
[ "${lines[0]}" = '1..2' ]
|
||||
[ "${lines[1]}" = 'ok 1 --bar in a' ]
|
||||
[ "${lines[2]}" = 'ok 2 --baz_in_b' ]
|
||||
}
|
||||
|
||||
@test "--filter can handle regular expressions that start with ^" {
|
||||
reentrant_run bats -f '^ba[rz]' "${FIXTURE_ROOT}/filter"
|
||||
[ "$status" -eq 0 ]
|
||||
[ "${lines[0]}" = '1..2' ]
|
||||
[ "${lines[1]}" = 'ok 1 baz in a' ]
|
||||
[ "${lines[2]}" = 'ok 2 bar_in_b' ]
|
||||
}
|
||||
|
||||
@test "skip is handled correctly in setup, test, and teardown" {
|
||||
bats "${FIXTURE_ROOT}/skip"
|
||||
}
|
||||
|
||||
@test "BATS_TEST_NUMBER starts at 1 in each individual test file" {
|
||||
reentrant_run bats "${FIXTURE_ROOT}/test_number"
|
||||
echo "$output"
|
||||
[ "$status" -eq 0 ]
|
||||
}
|
||||
|
||||
@test "Override BATS_FILE_EXTENSION with suite" {
|
||||
# shellcheck disable=SC2030
|
||||
REENTRANT_RUN_PRESERVE+=(BATS_FILE_EXTENSION)
|
||||
BATS_FILE_EXTENSION="test" reentrant_run bats "${FIXTURE_ROOT}/override_BATS_FILE_EXTENSION"
|
||||
echo "$output"
|
||||
[ "$status" -eq 0 ]
|
||||
[ "${#lines[@]}" -eq 2 ]
|
||||
[ "${lines[0]}" = "1..1" ]
|
||||
[ "${lines[1]}" = "ok 1 test.test" ]
|
||||
}
|
||||
|
||||
@test "Override BATS_FILE_EXTENSION with suite recursive" {
|
||||
# shellcheck disable=SC2030,SC2031
|
||||
REENTRANT_RUN_PRESERVE+=(BATS_FILE_EXTENSION)
|
||||
BATS_FILE_EXTENSION="other_extension" reentrant_run bats -r "${FIXTURE_ROOT}/override_BATS_FILE_EXTENSION"
|
||||
echo "$output"
|
||||
[ "$status" -eq 0 ]
|
||||
[ "${#lines[@]}" -eq 2 ]
|
||||
[ "${lines[0]}" = "1..1" ]
|
||||
[ "${lines[1]}" = "ok 1 test.other_extension" ]
|
||||
}
|
||||
Reference in New Issue
Block a user