interactive tasks: logging of messages
rename problem to task
submit, check: unify command-line arguments
+clean up retest utility
Environment
~~~~~~~~~~~
exit 1
}
+function try-ln
+{
+ ln $1 $2 2>/dev/null || cp $1 $2
+}
+
# Sandbox subroutines
function box-init
OUT_TYPE=${OUT_TYPE:-$IO_TYPE}
case $IN_TYPE in
file) echo "Input file: $PROBLEM.in (from $PDIR/$TEST.in)"
- ln $PDIR/$TEST.in $TDIR/$TEST.in
+ try-ln $PDIR/$TEST.in $TDIR/$TEST.in
cp $PDIR/$TEST.in $BOXDIR/$PROBLEM.in
BOX_EXTRAS="$BOX_EXTRAS -i/dev/null"
;;
stdio) echo "Input file: <stdin> (from $PDIR/$TEST.in)"
- ln $PDIR/$TEST.in $TDIR/$TEST.in
+ try-ln $PDIR/$TEST.in $TDIR/$TEST.in
cp $PDIR/$TEST.in $BOXDIR/.stdin
BOX_EXTRAS="$BOX_EXTRAS -i.stdin"
;;
{
[ -n "$OUTPUT_CHECK" ] || return 0
pcont "<check> "
- [ -f $PDIR/$TEST.out ] && ln $PDIR/$TEST.out $TDIR/$TEST.ok
+ [ -f $PDIR/$TEST.out ] && try-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
--- /dev/null
+#!/bin/bash
+# The Evaluator -- Public Checking Script
+# (c) 2001--2007 Martin Mares <mj@ucw.cz>
+
+set -e
+[ -n "$MO_ROOT" -a -d "$MO_ROOT" ] || { echo >&2 "MO_ROOT not set, giving up." ; exit 1 ; }
+. $MO_ROOT/bin/lib
+. $MO_ROOT/config
+
+function usage
+{
+ die "Usage: check [-s <source-file>] <problem> [<test-number>]"
+}
+
+SRCFILE=
+while getopts "s:" opt ; do
+ case $opt in
+ s) SRCFILE="$OPTARG"
+ ;;
+ *) usage
+ ;;
+ esac
+done
+shift $(($OPTIND-1))
+[ -n "$1" ] || usage
+PROBLEM=$1
+TEST=
+shift
+if [ -n "$1" ] ; then
+ TEST="$1"
+ shift
+fi
+[ -z "$1" ] || usage
+
+public-setup
+HDIR=/mo/cpspc/day1/
+PDIR=$HDIR/problems/$PROBLEM
+. $PDIR/config
+
+function test-verdict
+{
+ pend "$2"
+ if [ $1 == 0 ] ; then
+ exit 1
+ else
+ exit 0
+ fi
+}
+
+if [ $TASK_TYPE == open-data ] ; then
+ [ -n "$TEST" ] || die "You need to specify test number for open data problems."
+ pstart "Checking $TEST: "
+ open-locate $SRCFILE
+ ln $SRCN $TDIR/$TEST.out
+ syntax-check
+ test-result 1 OK
+else
+ [ -z "$TEST" ] || die "Test number should be given only for open data problems."
+ locate-source $SRCFILE
+ compile
+ RC=0
+ for TEST in $TESTS ; do
+ (
+ pstart "Checking on sample input $TEST: "
+ test-run
+ syntax-check
+ output-check
+ ) || RC=1
+ done
+ exit $RC
+fi