diff --git a/libexec/bats-exec-test b/libexec/bats-exec-test index 266d15c..564aa23 100755 --- a/libexec/bats-exec-test +++ b/libexec/bats-exec-test @@ -30,13 +30,20 @@ BATS_TEST_DIRNAME="$(dirname "$BATS_TEST_FILENAME")" BATS_TEST_NAMES=() load() { - local filename="$BATS_TEST_DIRNAME/$1.bash" + local inc="$1" + local filename + + if [[ "${inc}" == "/"* ]] ; then + filename="${inc}" + else + filename="$BATS_TEST_DIRNAME/${inc}.bash" + fi [ -f "$filename" ] || { echo "bats: $filename does not exist" >&2 exit 1 } - source "$BATS_TEST_DIRNAME/$1.bash" + source "${filename}" } run() { diff --git a/test/bats.bats b/test/bats.bats index 7ec577a..d2efad8 100755 --- a/test/bats.bats +++ b/test/bats.bats @@ -117,6 +117,16 @@ fixtures bats [ $status -eq 1 ] } +@test "load sources scripts by absolute path" { + HELPER_NAME="${FIXTURE_ROOT}/test_helper.bash" run bats "$FIXTURE_ROOT/load.bats" + [ $status -eq 0 ] +} + +@test "load aborts if the script, specified by an absolute path, does not exist" { + HELPER_NAME="${FIXTURE_ROOT}/nonexistent" run bats "$FIXTURE_ROOT/load.bats" + [ $status -eq 1 ] +} + @test "output is discarded for passing tests and printed for failing tests" { run bats "$FIXTURE_ROOT/output.bats" [ $status -eq 1 ]