#! /bin/sh
#
# Run some of the tests.  If any arguments are provided, pass them to the
# test programs.
#
# -mvhome is needed for the ANL SP, and is ignored by others
args=@MPIRUNARGS@
device=@DEVICE@
top_srcdir=@top_srcdir@
srcdir=@srcdir@
MPICH_VERSION=@MPICH_VERSION@
STOPFILE=$HOME/.stopmpichtests
mpirun=${MPIRUN:-"@MPIRUN@"}
MAKE="@MAKE@"
FILENAME=test
#
# Load basic procedures
. ${top_srcdir}/runbase
#
# Set mpirun to the name/path of the mpirun program
FindMPIRUN
#
#
test_mpi2=@HAS_MPI2@
runtests=1
quiet=0
makeeach=0
writesummaryfile=no
MAKE="@MAKE@"
for arg in "$@" ; do
    case $arg in 
	-checkonly )
	runtests=0
	;;
        -margs=*)
	margs=`echo $arg | sed 's/-margs=//'`
	args="$args $margs"
	;;
	-summaryfile=*)
	writesummaryfile=yes
	summaryfile=`echo A$arg | sed 's/A-summaryfile=//'`
	;;
	-small)
	makeeach=1
	;;
	-fname=*)
	FILENAME=`echo $arg|sed 's/-*fname=//'`
	;;
	-quiet)
	shift
	quiet=1
	;;
	-help|-u)
	echo "runtests [-checkonly] [-margs='...']"
	echo "run tests in this directory.  If -checkonly set, just run"
	echo "the differences check (do NO rerun the test programs)."
	echo "If -margs is used, these options are passed to mpirun."
	echo "If -small is used, the examples are built, run, and deleted."
	exit 1
	;;
	*)
	if test -n "$arg" ; then
   	    echo "runtests: Unknown argument ($arg)"
	    exit 1
        fi
	;;
    esac
done

# If the programs are not available, run make.
if [ ! -x simple -a $makeeach = 0 -a $runtests = 1 ] ; then
    $MAKE default
fi

testfiles=""
if [ $runtests = 1 ] ; then


RunTest simple 4 "**** Testing simple.c ****" "-fname $FILENAME"

RunTest async 4 "**** Testing async.c ****" "-fname $FILENAME"

RunTest atomicity 4 "**** Testing atomicity.out ****" "-fname $FILENAME"

RunTest coll_test 4 "**** Testing coll_test.out ****" "-fname $FILENAME"

RunTest excl 4 "**** Testing excl.c ****" "-fname $FILENAME"

RunTest file_info 4 "**** Testing file_info.c ****" "-fname $FILENAME"

RunTest i_noncontig 2 "**** Testing i_noncontig.c ****" "-fname $FILENAME"

RunTest noncontig 2 "**** Testing noncontig.c ****" "-fname $FILENAME"

RunTest noncontig_coll 2 "**** Testing noncontig_coll.c ****" "-fname $FILENAME"

RunTest noncontig_coll2 4 "**** Testing noncontig_coll2.c ****" "-fname $FILENAME"

RunTest misc 4 "**** Testing misc.c ****" "-fname $FILENAME"

RunTest shared_fp 4 "**** Testing shared_fp.c ****" "-fname $FILENAME"

RunTest split_coll 4 "**** Testing split_coll.c ****" "-fname $FILENAME"

RunTest psimple 4 "**** Testing psimple.c ****" "-fname $FILENAME"

RunTest error 1 "**** Testing error.c ****" "-fname $FILENAME"

RunTest status 1 "**** Testing status.c ****" "-fname $FILENAME"

#
# Run Fortran tests ONLY if Fortran available
if [ @HAS_FORTRAN@ = 1 ] ; then 
    RunTest fmisc 4 "**** Testing fmisc.f ****" "-fname $FILENAME"

    RunTest fcoll_test 4 "**** Testing fcoll_test.f ****" "-fname $FILENAME"

    RunTest pfcoll_test 4 "**** Testing pfcoll_test.f ****" "-fname $FILENAME"
fi

else
    # Just run checks
    testfiles=`echo *.out`
fi

echo '*** Checking for differences from expected output ***'
CheckAllOutput context.diff
exit 0



