Add tests for temp_make and temp_del for setup_file and teardown_file
diff --git a/src/temp.bash b/src/temp.bash old mode 100644 new mode 100755 index bc520a9..d48dcca --- a/src/temp.bash +++ b/src/temp.bash
@@ -161,7 +161,7 @@ if ! ( batslib_is_caller --indirect 'teardown' \ || batslib_is_caller --indirect 'teardown_file' ) then - echo "Must be called from \`teardown' when using \`BATSLIB_TEMP_PRESERVE_ON_FAILURE'" \ + echo "Must be called from \`teardown' or \`teardown_file' when using \`BATSLIB_TEMP_PRESERVE_ON_FAILURE'" \ | batslib_decorate 'ERROR: temp_del' \ | fail return $?
diff --git a/test/70-temp-10-temp_make.bats b/test/70-temp-10-temp_make.bats index c41dce0..ae535e2 100755 --- a/test/70-temp-10-temp_make.bats +++ b/test/70-temp-10-temp_make.bats
@@ -31,6 +31,10 @@ bats "${TEST_FIXTURE_ROOT}/temp_make-setup.bats" } +@test "temp_make() <var>: works when called from \`setup_file'" { + bats "${TEST_FIXTURE_ROOT}/temp_make-setup_file.bats" +} + @test "temp_make() <var>: works when called from \`@test'" { bats "${TEST_FIXTURE_ROOT}/temp_make-test.bats" } @@ -39,6 +43,10 @@ bats "${TEST_FIXTURE_ROOT}/temp_make-teardown.bats" } +@test "temp_make() <var>: works when called from \`teardown_file'" { + bats "${TEST_FIXTURE_ROOT}/temp_make-teardown_file.bats" +} + @test "temp_make() <var>: does not work when called from \`main'" { run bats "${TEST_FIXTURE_ROOT}/temp_make-main.bats"
diff --git a/test/70-temp-11-temp_del.bats b/test/70-temp-11-temp_del.bats index 2f99453..3043df3 100755 --- a/test/70-temp-11-temp_del.bats +++ b/test/70-temp-11-temp_del.bats
@@ -89,6 +89,17 @@ [ -e "$TEST_TEMP_DIR" ] } +@test "temp_del() <path>: \`BATSLIB_TEMP_PRESERVE_ON_FAILURE' works when called from \`teardown_file'" { + teardown() { rm -r -- "$TEST_TEMP_DIR"; } + + TEST_TEMP_DIR="$(temp_make)" + export TEST_TEMP_DIR + run bats "${TEST_FIXTURE_ROOT}/temp_del-teardown_file.bats" + + [ "$status" -eq 1 ] + [ -e "$TEST_TEMP_DIR" ] +} + @test "temp_del() <path>: \`BATSLIB_TEMP_PRESERVE_ON_FAILURE' does not work when called from \`main'" { teardown() { rm -r -- "$TEST_TEMP_DIR"; } @@ -99,7 +110,7 @@ [ "$status" -eq 1 ] [ "${#lines[@]}" -eq 10 ] [ "${lines[6]}" == '# -- ERROR: temp_del --' ] - [ "${lines[7]}" == "# Must be called from \`teardown' when using \`BATSLIB_TEMP_PRESERVE_ON_FAILURE'" ] + [ "${lines[7]}" == "# Must be called from \`teardown' or \`teardown_file' when using \`BATSLIB_TEMP_PRESERVE_ON_FAILURE'" ] [ "${lines[8]}" == '# --' ] } @@ -113,7 +124,21 @@ [ "$status" -eq 1 ] [ "${#lines[@]}" -eq 10 ] [[ ${lines[6]} == *'-- ERROR: temp_del --' ]] || false - [[ ${lines[7]} == *"Must be called from \`teardown' when using \`BATSLIB_TEMP_PRESERVE_ON_FAILURE'" ]] || false + [[ ${lines[7]} == *"Must be called from \`teardown' or \`teardown_file' when using \`BATSLIB_TEMP_PRESERVE_ON_FAILURE'" ]] || false + [[ ${lines[8]} == *'--' ]] || false +} + +@test "temp_del() <path>: \`BATSLIB_TEMP_PRESERVE_ON_FAILURE' does not work when called from \`setup_file'" { + teardown() { rm -r -- "$TEST_TEMP_DIR"; } + + TEST_TEMP_DIR="$(temp_make)" + export TEST_TEMP_DIR + run bats "${TEST_FIXTURE_ROOT}/temp_del-setup_file.bats" + + [ "$status" -eq 1 ] + [ "${#lines[@]}" -eq 10 ] + [[ ${lines[6]} == *'-- ERROR: temp_del --' ]] || false + [[ ${lines[7]} == *"Must be called from \`teardown' or \`teardown_file' when using \`BATSLIB_TEMP_PRESERVE_ON_FAILURE'" ]] || false [[ ${lines[8]} == *'--' ]] || false } @@ -127,6 +152,6 @@ [ "$status" -eq 1 ] [ "${#lines[@]}" -eq 10 ] [[ ${lines[6]} == *'-- ERROR: temp_del --' ]] || false - [[ ${lines[7]} == *"Must be called from \`teardown' when using \`BATSLIB_TEMP_PRESERVE_ON_FAILURE'" ]] || false + [[ ${lines[7]} == *"Must be called from \`teardown' or \`teardown_file' when using \`BATSLIB_TEMP_PRESERVE_ON_FAILURE'" ]] || false [[ ${lines[8]} == *'--' ]] || false }
diff --git a/test/fixtures/temp/temp_del-setup_file.bats b/test/fixtures/temp/temp_del-setup_file.bats new file mode 100644 index 0000000..4c5c9fc --- /dev/null +++ b/test/fixtures/temp/temp_del-setup_file.bats
@@ -0,0 +1,12 @@ +#!/usr/bin/env bats + +load 'test_helper' + +setup_file() { + local -ir BATSLIB_TEMP_PRESERVE_ON_FAILURE=1 + temp_del "$TEST_TEMP_DIR" +} + +@test "temp_del() <path>: \`BATSLIB_TEMP_PRESERVE_ON_FAILURE' does not work when called from \`setup_file'" { + true +}
diff --git a/test/fixtures/temp/temp_del-teardown_file.bats b/test/fixtures/temp/temp_del-teardown_file.bats new file mode 100644 index 0000000..bf2ea9f --- /dev/null +++ b/test/fixtures/temp/temp_del-teardown_file.bats
@@ -0,0 +1,12 @@ +#!/usr/bin/env bats + +load 'test_helper' + +@test "temp_del() <path>: \`BATSLIB_TEMP_PRESERVE_ON_FAILURE' works when called from \`teardown_file'" { + false +} + +teardown_file() { + local -ir BATSLIB_TEMP_PRESERVE_ON_FAILURE=1 + temp_del "$TEST_TEMP_DIR" +}
diff --git a/test/fixtures/temp/temp_make-setup_file.bats b/test/fixtures/temp/temp_make-setup_file.bats new file mode 100644 index 0000000..3baee35 --- /dev/null +++ b/test/fixtures/temp/temp_make-setup_file.bats
@@ -0,0 +1,15 @@ +#!/usr/bin/env bats + +load 'test_helper' + +setup_file() { + TEST_TEMP_DIR="$(temp_make)" +} + +@test "temp_make() <var>: works when called from \`setup_file'" { + true +} + +teardown_file() { + rm -r -- "$TEST_TEMP_DIR" +}
diff --git a/test/fixtures/temp/temp_make-teardown_file.bats b/test/fixtures/temp/temp_make-teardown_file.bats new file mode 100644 index 0000000..c1136f7 --- /dev/null +++ b/test/fixtures/temp/temp_make-teardown_file.bats
@@ -0,0 +1,12 @@ +#!/usr/bin/env bats + +load 'test_helper' + +@test "temp_make() <var>: works when called from \`teardown_file'" { + true +} + +teardown_file() { + TEST_TEMP_DIR="$(temp_make)" + rm -r -- "$TEST_TEMP_DIR" +}