codea: beqeumer einzelne testfaelle testen
authorBernhard Urban <lewurm@gmail.com>
Wed, 5 May 2010 16:05:11 +0000 (18:05 +0200)
committerBernhard Urban <lewurm@gmail.com>
Wed, 5 May 2010 17:26:51 +0000 (19:26 +0200)
codea/Makefile
codea/exectestcase
codea/modtest

index f3292ef4accfb8f53ad7460e91bb9e8126811f38..57559f644ad01683434316f5583a44ee2c2ceabc 100644 (file)
@@ -36,10 +36,6 @@ oxout.y oxout.l: parser.y scanner.lex
 
 .PHONY: clean
 clean:
-       rm -f $(NAME) $(OBJS) scanner.c parser.{h,c,output} oxout.{y,l,h} code.c cscope.out tags
-
-.PHONY: myclean
-myclean:
        rm -f $(NAME) $(OBJS) scanner.c parser.{h,c,output} oxout.{y,l,h} code.c
 
 1test:
index 1061fff15b1b8bcb3665d64e372c064bfa4398d4..94760df778680323a6b2b9951083e5d9d26b4761 100755 (executable)
@@ -1,2 +1,114 @@
 #!/bin/bash
-make && cat $1 && ./codea < $1 | clr.py
+
+i=$1
+beispiel=codea
+PROGRAM=./$beispiel
+
+errnum=0
+prgnum=0
+
+#LOC=.
+LOC=/usr/ftp/pub/ubvl/test/$beispiel
+
+allow_null_glob_expansion=1
+
+if [ ! -d ~/abgabe/$beispiel ]; then
+  echo "Fehler: Verzeichnis ~/abgabe/$beispiel existiert nicht."
+  exit 1
+else
+  cd ~/abgabe/$beispiel
+  echo 'Teste "make"'
+  make
+fi
+
+if test ! -x $PROGRAM
+then
+       echo "Fehler: Kein Programm $PROGRAM"
+       exit 1
+fi
+let prgnum=0
+#for i in $LOC/*.0 $LOC2/*.0
+if [ -f $i ]; then
+       let prgnum=prgnum+1
+       let errorfound=0
+       echo "==========> Eingabe von $i:"
+       cat $i
+       echo
+       RESFILE=test${beispiel}out$$
+       $PROGRAM <$i >$RESFILE
+       retval=$?
+       echo -n "Übersetzung: "
+       if test $retval -eq 0
+       then
+               echo "Status korrekt"
+       else
+               echo "[Errot] Status=$retval. Erwartet: 0"
+               let errorfound=1
+       fi
+       echo
+       echo "Ausgabe:"
+       cat $RESFILE | clr.py
+       mv -f $RESFILE $RESFILE.s
+       CALLFILE=${i%.*}.call
+       echo
+       if [ ! -f $CALLFILE ]; then
+       echo "Fehler: Datei $CALLFILE existiert nicht, kann Code nicht ausführen..."
+       exit 1
+       else
+       echo "Übersetze und linke das Testprogramm:"
+       if cc -g -I. -DCALL=\"$CALLFILE\" $LOC/testmain.c $LOC/callingconvention.o $RESFILE.s; then
+               echo
+               echo "Rufe folgendes Codefragment auf:"
+               cat $CALLFILE
+               echo
+               ./a.out 
+               retval=$?
+               # test callee saved registers
+               if [ "$retval" -ge 12 ] && [ "$retval" -le 15 ]; then
+               echo "[Error] Callee-saved register %r$retval modified."
+                                       let errorfound=1
+               elif [ "$retval" -eq 11 ]; then
+               echo "[Error] Callee-saved register %rbx modified."
+                                       let errorfound=1
+               elif [ "$retval" -eq 16 ]; then
+               echo "[Error] Callee-saved register %rbp modified."
+                                       let errorfound=1
+               elif [ "$retval" -eq 30 ]; then
+               echo "[Error] Stack pointer %rsp modified."
+                                       let errorfound=1
+                               else
+                                       # test signals  
+               test $retval -gt 127
+               retsig=$?
+               test ${i##*.} = xin
+               expsig=$?
+               if test $retsig -eq $expsig; then
+                       if test $retval -eq 1; then
+                       echo "[Error] Das Ergebnis des Aufrufs ist falsch."
+                       let errorfound=1
+                       elif test $retval -eq 0; then
+                       echo "Das Ergebnis des Ausdrucks ist korrekt."
+                       else
+                               echo "[Error] Erzeugter Code verhaelt sich bzgl. Signalerzeugung anders als erwartet."
+                       let errorfound=1
+                       fi
+               else
+                       echo "[Error] Erzeugter Code verhaelt sich bezueglich Signalerzeugung anders als erwartet."
+                       let errorfound=1
+                       echo "Rueckgabewert = $retval";
+               fi
+               fi
+               echo
+       else
+               echo "[Error] Erzeugter Code konnte nicht assembliert und gelinkt werden."
+               let errorfound=1
+       fi
+       fi
+       let errnum=errnum+errorfound
+       if [ 1 -eq $errorfound ]; then
+               rm *.s
+               rm *.out
+               exit 3;
+       fi
+       rm -f a.out $RESFILE $RESFILE.s
+fi
index 15baf009ffc76a92227a7190731d2e26cf17c714..8fb0018e897883c0da5be9faae4414273d8b1d97 100755 (executable)
@@ -19,7 +19,7 @@ if [ ! -d ~/abgabe/$beispiel ]; then
 else
   cd ~/abgabe/$beispiel
   echo 'Teste "make clean"'
-  make myclean
+  make clean
   /usr/ftp/pub/ubvl/test/cleantest
   echo 'Teste "make"'
   make