#!/bin/bash

srcdir=.

PC="../../xgpc -B ../../"

PFLAGS="-g -O3 -Wall --automake \
  --unit-path=$srcdir:$srcdir/../rts:$srcdir/../units \
  --object-path=$srcdir:$srcdir/../units \
  --executable-path=."

if [ $1x = x ]; then
  MASK="*.pas"
else
  MASK=$1
fi

rm -f *.dat *.o *.gpm *.gpi *.gpc *.s \
        core a.out *.exe magic fjf51 fjf141aa
echo "GPC-TEST-BEGIN"
echo "=========================="
for x in $srcdir/$MASK ; do
  if [ -f $x ]; then
    xb=`basename $x`
    xx=`echo $x | sed -e 's/\.pas//'`
    xr=$xx.run
    xi=$xx.in
    if [ `grep -c executable-file-name $x` -gt 0 ]; then
      aout=""
    else
      aout="-o a.out"
    fi
    rm -f a.out 2>/dev/null
    if grep -i "Program.*;" >/dev/null $x ; then
      if grep WRONG >/dev/null $x ; then
        $PC $PFLAGS `grep FLAG $x | sed -e 's/(\*\ FLAG\ //' | sed -e 's/\ \*)//'` $aout $x 2> /dev/null
        echo -n "TEST	$xb:	"
        if [ -f "a.out" ] ; then
          echo -n "failed: " ;
          ./a.out
        else
          echo "OK"
        fi
      else
        $PC $PFLAGS `grep FLAG $x | sed -e 's/(\*\ FLAG\ //' | sed -e 's/\ \*)//'` $aout $x
        echo -n "TEST	$xb:	"
        if [ -f $xr ]; then
          if [ -f $xi ] ; then
            $xr < $xi
          else
            $xr
          fi
        else
          if [ -f "a.out" ] ; then
            if [ -f $xi ] ; then
              ./a.out $x < $xi
            else
              ./a.out $x
            fi
          else
            echo "failed"
          fi
        fi
      fi
    fi
  else
    echo "$x: No such file"
  fi
done
echo "=========================="
echo "GPC-TEST-END"
