#!/bin/sh

# check for command line arguments
if [ -z "$1" ] ; then
    echo "Usage: `basename $0` <test result file>"
    exit
fi
TARGETFILE=$1

# build libtangobos-partial
echo "Building libtangobos-partial.a"
cd testincludes
make
cd ..

# check for dstress
if ! [ -d dstress ] ; then
    echo "Testing requires DStress to be checked out into dstress/"
    exit
fi

BASEPATH=`pwd`
cd dstress

# remove excessive tests
sed -i -e 's/torture-//g' Makefile

# make sure only .d files in 'run' tests are run
sed -i -e 's/find run -type f |/find run -type f -name "*\\\\.d" |/' Makefile
sed -i -e 's/find norun -type f |/find norun -type f -name "*\\\\.d" |/' Makefile

# impose more conservative constraints (10s and 256 MB)
sed -i -e 's/crashRun 30 1000/crashRun 10 256/' dstress.c

echo
echo "Running new test and storing result in $TARGETFILE ..."
echo
echo "Remember to make sure you have an up to date runtime!"
echo

if [ -z "$DMD" ] ; then
	echo "Testing with LDC. Set DMD environment variable to select compiler."
	DMD="ldmd -I$BASEPATH/testincludes -L$BASEPATH/testincludes/libtangobos-partial.a"
	echo "Default is $DMD"
else
	echo "Using compiler given by DMD environment variable: $DMD"
fi

echo
echo "This will take a while, try 'tail -f $TARGETFILE' to follow progress."
echo "Note that aborting is tricky. Try killing the processes by the name of"
echo "run.sh, compile.sh, nocompile.sh and norun.sh as well as this one."
echo

DMD=$DMD make compile nocompile run norun > ../$TARGETFILE
cd ..

echo
echo "Cleanup... (removing all .o and .exe files)"
echo

find dstress -name "*\.o" -o -name "*\.exe" -delete
