- pcont "<check> "
- ln $PDIR/$TEST.out $TDIR/$TEST.ok
- OCHECK="`eval echo $OUTPUT_CHECK`"
- echo "Output check command: $OCHECK"
- $OCHECK && return 0
- pend "Wrong answer."
- echo "Wrong answer."
- echo >$PTSFILE "0 Wrong answer."
- return 1
+ MSG=
+ if [ -n "$OUTPUT_CHECK" -a "$OUT_TYPE" != none ] ; then
+ pcont "<check> "
+ [ -f $PDIR/$TEST.out ] && ln $PDIR/$TEST.out $TDIR/$TEST.ok
+ OCHECK=`eval echo $OUTPUT_CHECK`
+ echo "Output check command: $OCHECK"
+ if ! eval $OCHECK 2>$TMPDIR/exec.out ; then
+ cat $TMPDIR/exec.out
+ MSG=`tail -1 $TMPDIR/exec.out`
+ if [ -z "$MSG" ] ; then MSG="Wrong answer." ; fi
+ test-result 0 "$MSG"
+ fi
+ cat $TMPDIR/exec.out
+ MSG=`tail -1 $TMPDIR/exec.out`
+ fi
+ if [ -z "$MSG" ] ; then MSG="OK" ; fi
+ test-result $POINTS_PER_TEST "$MSG"
+}
+
+# Setup of public commands
+
+function public-setup
+{
+ HDIR=$MO_ROOT
+ PDIR=$MO_ROOT/problems/$PROBLEM
+ SDIR=.
+ TDIR=~/.test
+ TMPDIR=~/.test
+ [ -d $PDIR ] || die "Unknown problem $PROBLEM"
+
+ pstart "Initializing... "
+ mkdir -p $TDIR
+ rm -rf $TDIR/*
+ BOXDIR=~/.box
+ mkdir -p $BOXDIR
+ rm -rf $BOXDIR/*
+ BOXCMD="$MO_ROOT/bin/box -c$BOXDIR"
+ exec >check-log
+ pend "OK (see 'check-log' for details)"
+}
+
+# Locate output of open data problem, test case TEST
+# Beware, SDIR and SRCN can contain spaces and other strange user-supplied characters.
+
+function open-locate
+{
+ [ -f $PDIR/$TEST.in ] || die "Unknown test $TEST"
+ if [ -n "$1" ] ; then
+ SDIR=`dirname "$1"`
+ SRCN=`basename "$1"`
+ else
+ SRCN=$SDIR/$PROBLEM$TEST.out
+ fi
+ [ -f $SRCN ] || fatal "Output file $SRCN not found"