#!/bin/bash
#
# Check that existing autotests for files that are being commited are not currently failing
#
QMAKE=qmake
$QMAKE --version 2>&1 | grep 3.3 > /dev/null
if [ $? -eq 0 ] ; then
    QMAKE=qmake-qt4
fi
unset GIT_DIR
dir=`dirname $0`
for file in `git diff-index --name-only HEAD | grep .cpp` ; do
    file=`echo $file | sed -e 's/src\///g' -e 's/.cpp//g'`
    autotest=`echo $file | sed -e 's/.*\///g'`
    if [ ! -d $dir/../autotests/$file ] ; then
        file=$autotest;
    fi
    if [ -d $dir/../autotests/$file ] ; then
        echo "--checking autotest: $file--"

        tempfoo=`basename $0`
        TMPFILE=`mktemp -t ${tempfoo}.XXXXXXXXXX` || exit 1
        (cd "$dir/../../autotests/$file/"; $QMAKE; make --quiet $MAKE_FLAGS; ./$autotest >> $TMPFILE)
        output=`cat $TMPFILE | grep ' failed,' | sed -e 's/.*passed, //g' -e 's/ failed.*//g'`
        if [ "${output}" != "0" ] ; then
            echo "Autotests failed for $file, please fix before committing."
            cat $TMPFILE
            rm $TMPFILE
            exit 1
        fi
        rm $TMPFILE
        echo "--checking autotest: $file done--"
    else
        echo "--missing autotest: $file--"
    fi
done

