#! /bin/bash # # Run a test in tap mode, ensuring we have a temporary directory. We # always use /var/tmp becuase we might want to use user xattrs, which # aren't available on tmpfs. # # The test binary is passed as $1 srcd=$(cd $(dirname $1) && pwd) bn=$(basename $1) TEST_TMPDIR=${TEST_TMPDIR:-/var/tmp} tempdir=$(mktemp -d $TEST_TMPDIR/tap-test.XXXXXX) touch ${tempdir}/.testtmp function cleanup () { if test -f ${tempdir}/.testtmp; then rm "${tempdir}" -rf fi } function skip_cleanup() { echo "Skipping cleanup of ${tempdir}" } cd ${tempdir} timeout \ --kill-after=60 \ --signal=ABRT \ $(( 600 * ${TEST_TIMEOUT_FACTOR:-1} )) \ ${srcd}/${bn} -k --tap rc=$? case "${TEST_SKIP_CLEANUP:-}" in no|"") cleanup ;; err) if test $rc != 0; then skip_cleanup else cleanup fi ;; *) skip_cleanup ;; esac exit $rc