summaryrefslogtreecommitdiffstats
path: root/test/testswmr.sh.in
diff options
context:
space:
mode:
Diffstat (limited to 'test/testswmr.sh.in')
-rw-r--r--test/testswmr.sh.in37
1 files changed, 36 insertions, 1 deletions
diff --git a/test/testswmr.sh.in b/test/testswmr.sh.in
index c4a75e8..f70d083 100644
--- a/test/testswmr.sh.in
+++ b/test/testswmr.sh.in
@@ -123,6 +123,37 @@ while [ $# -gt 0 ]; do
esac
done
+# HDF5 has several tests that create and delete signal files to communicate
+# between processes, and it seems that even though the names of the files are
+# different, occasionally the wrong file is deleted, interrupting the flow of
+# the test. Running each of these tests in its own directory should eliminate
+# the problem.
+mkdir swmr_test
+for FILE in swmr*; do
+ case "$FILE" in
+ *.o) continue ;; ## don't copy the .o files
+ esac
+ cp $FILE swmr_test
+done
+cp swmr* swmr_test
+
+# With the --disable-shared option, swmr program files are built in the test
+# directory, otherwise they are in test/.libs with a corresponding wrapper
+# script in the test directory. The programs or wrapper scripts in test should
+# always be copied, swmr files in .libs should be copied only if they exists.
+if [ -f .libs/swmr ]; then
+ mkdir swmr_test/.libs
+ for FILE in .libs/swmr*; do
+ case "$FILE" in
+ *.o) continue ;; ## don't copy the .o files
+ esac
+ cp $FILE swmr_test/.libs
+ done
+fi
+
+cd swmr_test
+
+
# Loop over index types
for index_type in "-i ea" "-i b2"
do
@@ -517,10 +548,14 @@ done
###############################################################################
## Report and exit
###############################################################################
-
+cd ..
$DPRINT nerrors=$nerrors
if test $nerrors -eq 0 ; then
echo "SWMR tests passed."
+ if test -z "$HDF5_NOCLEANUP"; then
+ # delete the test directory
+ rm -rf swmr_test
+ fi
exit 0
else
echo "SWMR tests failed with $nerrors errors."