X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=public%2Fsubmit;h=f597ee46b17eabf5ae1fdd5ab6067aeba06b3186;hb=65517c0cd75d3c846d8e8304c414e9d63d155ecc;hp=837d43cc34a624eaf99a99994976fcd67201585f;hpb=bda1c385638cb870492497a118557d7240975e0a;p=moe.git diff --git a/public/submit b/public/submit old mode 100644 new mode 100755 index 837d43c..f597ee4 --- a/public/submit +++ b/public/submit @@ -1,26 +1,105 @@ +#!/bin/bash # The Evaluator -- Public Submit Script -# (c) 2001 Martin Mares +# (c) 2001--2007 Martin Mares set -e -[ -n "$MO_PUBLIC" -a -d "$MO_PUBLIC" ] || { echo >&2 "MO_PUBLIC not set, giving up." ; exit 1 ; } -. $MO_PUBLIC/bin/lib -. $MO_PUBLIC/config +[ -n "$MO_ROOT" -a -d "$MO_ROOT" ] || { echo >&2 "MO_ROOT not set, giving up." ; exit 1 ; } +. $MO_ROOT/bin/lib +. $MO_ROOT/config -[ -n "$1" ] || die "Usage: submit " +function usage +{ + die "Usage: submit [--force] [-s ] []" +} + +FORCE=0 +if [ "$1" = --force ] ; then + FORCE=1 + shift +fi +[ -n "$1" -a "$1" != "--help" ] || usage +SRCFILE= +while getopts "s:" opt ; do + case $opt in + s) SRCFILE="$OPTARG" + ;; + *) usage + ;; + esac +done +shift $(($OPTIND-1)) +[ -n "$1" ] || usage PROBLEM=$1 +PART= +shift +if [ -n "$1" ] ; then + PART="$1" + shift +fi +[ -z "$1" ] || usage public-setup . $PDIR/config -locate-source -compile -PTSFILE=$TDIR/points -for TEST in $SAMPLE_TESTS ; do - pstart "Checking on sample input $TEST: " - test-run - syntax-check + +function test-verdict +{ + pend "$2" + [ $1 == 0 ] && exit 1 || exit 0 +} + +FAILED=0 +if [ $TASK_TYPE == open-data ] ; then + [ -n "$PART" ] || die "You need to specify test number for open data problems." + TEST=$PART + pstart "Test case $TEST: " + open-locate "$SRCFILE" + ( + [ -f $PDIR/$TEST.config ] && . $PDIR/$TEST.config + try-ln "$SDIR/$SRCN" $TDIR/$TEST.out + syntax-check + test-result $POINTS_PER_TEST OK + ) || FAILED=1 +else + [ -z "$PART" ] || die "Test number should be given only for open data problems." + locate-source "$SRCFILE" + compile + for TEST in $SAMPLE_TESTS ; do + ( + pstart "Checking on sample input $TEST: " + [ -f $PDIR/$TEST.config ] && . $PDIR/$TEST.config + test-run + syntax-check + output-check + die "How could I get there? It's a buuuuug!" + ) || FAILED=$(($FAILED+1)) + done +fi + +if [ $FAILED != 0 ] ; then + if [ $FORCE != 0 ] ; then + echo "Submit forced." + pend "TESTS FAILED, but --force given, so submitting anyway." + else + pend "TESTS FAILED. Nothing has been submitted!" + pend "Use submit --force if you really want to submit an obviously WRONG solution." + exit 1 + fi +fi + +if [ -n "$REMOTE_SUBMIT" ] ; then + pstart "Submitting to the server... " + $MO_ROOT/bin/remote-submit $PROBLEM $PART "$SDIR/$SRCN" pend "OK" -done -pstart "Submiting: " -mkdir -p ~/.submit/$PROBLEM -rm -rf ~/.submit/$PROBLEM/* -cp $SRCN ~/.submit/$PROBLEM/ + exit 0 +fi + +pstart "Submitting... " +mkdir -p ~/.submit +if [ $TASK_TYPE == open-data ] ; then + mkdir -p ~/.submit/$PROBLEM + cp "$SDIR/$SRCN" ~/.submit/$PROBLEM/$PART.out +else + rm -rf ~/.submit/$PROBLEM + mkdir -p ~/.submit/$PROBLEM + cp "$SDIR/$SRCN" ~/.submit/$PROBLEM/ +fi pend "OK"