X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=bin%2Flib;h=6f5c4763a0420d00acf80e7ea2f6da50e45c8a20;hb=11186a847caaa8904ecd26f65d5fdc5bcdb2096a;hp=e62db7ee2eaec26b5959c1f8eae15871f0715dfe;hpb=dd1e8d7e853ee5a83a89982a6a5af0efce4efa66;p=eval.git diff --git a/bin/lib b/bin/lib index e62db7e..6f5c476 100644 --- a/bin/lib +++ b/bin/lib @@ -208,6 +208,30 @@ function test-result P=`cat $TDIR/$TEST.pts` rm $TDIR/$TEST.pts fi + + # Translate signal numbers to readable strings + SG=${M#Caught fatal signal } + if [ "$SG" != "$M" ] ; then + SG=`perl -MConfig -e '@s=split / /,$Config{sig_name}; print $s[$ARGV[0]]' $SG` + [ -z "$SG" ] || M="$M (SIG$SG)" + fi + + # Translate Free Pascal runtime errors to readable strings + RE=${M#Exited with error status } + if [ "$FREE_PASCAL_RTE" == 1 -a "$RE" != "$M" ] ; then + N="Runtime error $RE" + case "$RE" in + 200) M="$N: Division by zero" ;; + 201) M="$N: Range check error" ;; + 202) M="$N: Stack overflow" ;; + 203) M="$N: Heap overflow" ;; + 205) M="$N: Floating point overflow" ;; + 215) M="$N: Arithmetic overflow" ;; + 216) M="$N: Segmentation fault" ;; + ???) M="$N" ;; + esac + fi + echo "Verdict: $M" echo "Points: $P" test-verdict $P "$M" @@ -314,6 +338,14 @@ function test-run-interactive test-epilog } +# "Running" of open-data problems + +function test-run-open-data +{ + [ -f $SDIR/$TEST.out ] || test-result 0 "No solution." + ln $SDIR/$TEST.out $TDIR/$TEST.out +} + # Syntax checks function syntax-check