# The typical skeleton of a test looks like this:
#
# #!/bin/sh
-# : ${srcdir=.}
-# . "$srcdir/init.sh"; path_prepend_ .
+# . "${srcdir=.}/init.sh"; path_prepend_ .
# Execute some commands.
# Note that these commands are executed in a subdirectory, therefore you
# need to prepend "../" to relative filenames in the build directory.
+# Note that the "path_prepend_ ." is useful only if the body of your
+# test invokes programs residing in the initial directory.
+# For example, if the programs you want to test are in src/, and this test
+# script is named tests/test-1, then you would use "path_prepend_ ../src",
+# or perhaps export PATH='$(abs_top_builddir)/src$(PATH_SEPARATOR)'"$$PATH"
+# to all tests via automake's TESTS_ENVIRONMENT.
# Set the exit code 0 for success, 77 for skipped, or 1 or other for failure.
# Use the skip_ and fail_ functions to print a diagnostic and then exit
# with the corresponding exit code.
|| fail_ "failed to create temporary directory in $initial_cwd_"
cd "$test_dir_"
- # This pair of trap statements ensures that the temporary directory,
- # $test_dir_, is removed upon exit as well as upon catchable signal.
+ # These trap statements ensure that the temporary directory, $test_dir_,
+ # is removed upon exit as well as upon receipt of any of the listed signals.
trap remove_tmp_ 0
- trap 'Exit $?' 1 2 13 15
+ for sig_ in 1 2 3 13 15; do
+ eval "trap 'Exit $(expr $sig_ + 128)' $sig_"
+ done
}
# Create a temporary directory, much like mktemp -d does.
if test -r "$dev_rand_"; then
# Note: 256-length($chars_) == 194; 3 copies of $chars_ is 186 + 8 = 194.
dd ibs=$n_ count=1 if=$dev_rand_ 2>/dev/null \
- | tr -c $chars_ 01234567$chars_$chars_$chars_
+ | LC_ALL=C tr -c $chars_ 01234567$chars_$chars_$chars_
return
fi
echo "$data_" \
| dd bs=1 skip=50 count=$n_ 2>/dev/null \
- | tr -c $chars_ 01234567$chars_$chars_$chars_
+ | LC_ALL=C tr -c $chars_ 01234567$chars_$chars_$chars_
}
mktempd_()
fail=0
# First, try to use mktemp.
- d=`env -u TMPDIR mktemp -d -t -p "$destdir_" "$template_" 2>/dev/null` \
+ d=`unset TMPDIR; mktemp -d -t -p "$destdir_" "$template_" 2>/dev/null` \
|| fail=1
# The resulting name must be in the specified directory.