#!/bin/bash
# The Evaluator -- Master Control Script
-# (c) 2001--2003 Martin Mares <mj@ucw.cz>
+# (c) 2001--2004 Martin Mares <mj@ucw.cz>
set -e
if [ ! -f config -o ! -f bin/lib ] ; then
. bin/lib
. config
-# Set up environment:
-# HDIR home dir of the evaluator
-# PDIR problem specific data
-# SDIR contestant's solution
-# TDIR test results
-# BOXDIR sandbox
-# PROBLEM problem we're evaluating
-
-[ -n "$2" ] || die "Usage: ev <contestant> <problem> [<program>]"
+[ -n "$2" -a -z "$4" ] || die "Usage: ev <contestant> <problem> [<program>]"
CONTESTANT=$1
PROBLEM=$2
dir-init
locate-source $3
compile || true
-# Perform the tests
+# Initialize the points file
PTSFILE=$TDIR/points
+>$PTSFILE
+
+function test-verdict
+{
+ if [ $1 == 0 ] ; then
+ pend "$2"
+ else
+ pend "$2 ($1 points)"
+ fi
+ echo >>$PTSFILE "$TEST $1 $2"
+ exit 0
+}
+
+# Perform the tests
for TEST in $TESTS ; do
(
[ -f $PDIR/$TEST.config ] && . $PDIR/$TEST.config
exec >$TDIR/$TEST.log
pstart "Test $TEST... "
- echo "Test $TEST"
- echo >>$PTSFILE -n "$TEST "
- if [ ! -f $TDIR/$PROBLEM ] ; then
- echo >>$PTSFILE "0 Compile error."
- die "No executable file"
- fi
- test-run || exit 0
- syntax-check || exit 0
- output-check || exit 0
- if [ -f $TDIR/$TEST.pts ] ; then
- PTS=`cat $TDIR/$TEST.pts`
- else
- PTS=$POINTS_PER_TEST
- fi
- echo "Test completed OK ($PTS points)"
- echo >>$PTSFILE "$PTS OK"
- pend "OK, $PTS points"
+ echo "Test $TEST ($POINTS_PER_TEST points)"
+ test-run
+ syntax-check
+ output-check
+ die "You must never see this message."
)
done