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"
+}