From: Martin Mares Date: Mon, 11 Jun 2007 14:37:00 +0000 (+0200) Subject: Added retest utility. X-Git-Tag: python-dummy-working~361 X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=9c1e9c032283258aa2b9c656769037c18c745895;p=eval.git Added retest utility. --- diff --git a/TODO b/TODO index 72b106d..433b8c4 100644 --- a/TODO +++ b/TODO @@ -6,6 +6,7 @@ interactive tasks: solve deadlocks? interactive tasks: logging of messages rename problem to task submit, check: unify command-line arguments +clean up retest utility Environment ~~~~~~~~~~~ diff --git a/bin/lib b/bin/lib index faf6d03..87d7100 100644 --- a/bin/lib +++ b/bin/lib @@ -44,6 +44,11 @@ function fatal exit 1 } +function try-ln +{ + ln $1 $2 2>/dev/null || cp $1 $2 +} + # Sandbox subroutines function box-init @@ -220,12 +225,12 @@ function test-prolog 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: (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" ;; @@ -326,7 +331,7 @@ function output-check { [ -n "$OUTPUT_CHECK" ] || return 0 pcont " " - [ -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 diff --git a/public/retest b/public/retest new file mode 100755 index 0000000..a959f03 --- /dev/null +++ b/public/retest @@ -0,0 +1,71 @@ +#!/bin/bash +# The Evaluator -- Public Checking Script +# (c) 2001--2007 Martin Mares + +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 ] []" +} + +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