#!/bin/bash

umask 022

PATH=/sbin:/usr/sbin:/bin:/usr/bin:$PATH
if [ $# -ne 1 ]; then
    echo "Usage runtest test" 2>&1
    exit 1
fi
TEST=$1
rm -f $TEST.out $TEST.diod

if [ -z "$PATH_DIOD" ]; then
    echo "PATH_DIOD is not set" 2>&1
    exit 1
fi


# some tests require root, some require non-root
case $(basename $TEST) in
    t12)
        if [ $(id -u) == 0 ]; then
            echo "requires non-root" >$TEST.out
            exit 77
        fi
        ;;
    t11|t13|t14)
        if [ -n "$FAKEROOTEKEY" ]; then
            echo "cannot use fakeroot" >$TEST.out
            exit 77
        fi
        if [ $(id -u) != 0 ]; then
            echo "requires root" >$TEST.out
            exit 77
        fi
        ;;
    t16)  # PATH_EXPDIR is a regular file for this test
	umask 022
	PATH_EXPDIR=$(mktemp) || exit 1
	dd if=/dev/zero count=1 bs=1024k of=$PATH_EXPDIR oflag=append >/dev/null 2>&1
	;;
    t17)  # $TMPDIR needs xattr support for this test
        if ! ./txattr ${TMPDIR:-/tmp}; then
            echo "${TMPDIR:-/tmp} requires xattr support" >$TEST.out
            exit 77
        fi
esac

rm -f $TEST.diod $TEST.out
ulimit -c unlimited

test -n "$PATH_EXPDIR" || PATH_EXPDIR=$(mktemp -d) || exit 1
chmod 777 $PATH_EXPDIR
export PATH_EXPDIR

export MALLOC_CHECK_=3

./conjoin \
    "$PATH_DIOD -r0 -w0 -c /dev/null -n -d 1 -L $TEST.diod -e $PATH_EXPDIR" \
    "$TEST $PATH_EXPDIR" \
    >$TEST.out 2>&1
rc=$?
if [ $rc != 0 ]; then
    echo "test exited with $rc" >>$TEST.out
    exit $rc
fi

[ -d "$PATH_EXPDIR" ] && rm -rf $PATH_EXPDIR

diff $TEST.exp $TEST.out >$TEST.diff
rc=$?
if [ $rc != 0 ]; then
    echo "=== BEGIN $TEST.out ==="
    cat $TEST.out
    echo "=== END $TEST.out ==="
fi
exit $rc
