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"
*) die "Unknown IN_TYPE $IN_TYPE"
;;
esac
+ if [ -n "$EV_PEDANT" -a $IN_TYPE != none ] ; then
+ pcont "<pedant> "
+ bin/pedant <$TDIR/$TEST.in | tr '\n' ' ' >&2
+ fi
case $OUT_TYPE in
file) echo "Output file: $PROBLEM.out"
[ $TASK_TYPE == interactive ] || BOX_EXTRAS="$BOX_EXTRAS -o/dev/null"
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
{
[ -n "$SYNTAX_CHECK" ] || return 0
+ [ -z "$EV_NOCHECK" ] || return 0
pcont "<syntax> "
SCHECK=`eval echo $SYNTAX_CHECK`
echo "Syntax check command: $SCHECK"
function output-check
{
MSG=
- if [ -n "$OUTPUT_CHECK" -a "$OUT_TYPE" != none ] ; then
+ if [ -n "$OUTPUT_CHECK" -a "$OUT_TYPE" != none -a -z "$EV_NOCHECK" ] ; then
pcont "<check> "
[ -f $PDIR/$TEST.out ] && ln $PDIR/$TEST.out $TDIR/$TEST.ok
OCHECK=`eval echo $OUTPUT_CHECK`
mkdir -p $BOXDIR
rm -rf $BOXDIR/*
BOXCMD="$MO_ROOT/bin/box -c$BOXDIR"
- exec >log
- pend "OK (see 'log' for details)"
+ exec >check-log
+ pend "OK (see 'check-log' for details)"
}
# Locate output of open data problem, test case TEST
else
SRCN=$SDIR/$PROBLEM$TEST.out
fi
- [ -f $SRCN ] || fatal "Output file $SRCN not found"
+ [ -f "$SDIR/$SRCN" ] || fatal "Output file $SRCN not found"
}