summaryrefslogtreecommitdiff
path: root/buildutil/tap-test
blob: e35f2a4afc4b3ff738da9c2ceb5f24a8aa6df474 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#! /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