-submit, compile, test (submit bez odevzdani)
check pascal
-static ?
quotas
compile
# Perform the tests
+PTSFILE=$TDIR/points
for TEST in $TESTS ; do
(
[ -f $PDIR/$TEST.config ] && . $PDIR/$TEST.config
exec >$TDIR/$TEST.log
- PTSFILE=$TDIR/$TEST.pts
pstart "Test $TEST ($POINTS_PER_TEST points)... "
echo "Test $TEST ($POINTS_PER_TEST points)"
+ echo >>$PTSFILE -n "$TEST "
if [ ! -f $TDIR/$PROBLEM ] ; then
echo >$PTSFILE "0 Compile error."
die "No executable file"
fi
- $TEST_RUN_METHOD || exit 0
+ test-run || exit 0
syntax-check || exit 0
output-check || exit 0
echo "Test completed OK ($POINTS_PER_TEST points)"
- echo >$PTSFILE "$POINTS_PER_TEST OK"
+ echo >>$PTSFILE "$POINTS_PER_TEST OK"
pend "OK"
)
done
function locate-source
{
- pstart "Locating source... "
+ pstart "Finding source... "
for a in $EXTENSIONS ; do
if [ -f $SDIR/$PROBLEM.$a ] ; then
[ -z "$SRCN" ] || die "Multiple source files found: $SDIR/$PROBLEM.$a and $SDIR/$SRCN. Please fix."
echo "Compiler input files:"
ls -Al $BOXDIR
+ echo "Compiler output:"
if ! $BOXCMD $COMP_SANDBOX_OPTS -- $CCMD 2>$TDIR/compile.out ; then
COMPILE_MSG="`cat $TDIR/compile.out`"
pend "FAILED: $COMPILE_MSG"
# Running of test program with file input/output
-function test-run-with-files
+function test-run
{
pcont "<init> "
box-clean
TEST_MSG="`cat $TDIR/exec.out`"
pend "$TEST_MSG"
echo "$TEST_MSG"
- echo >$PTSFILE "0 $TEST_MSG"
+ echo >>$PTSFILE "0 $TEST_MSG"
return 1
fi
cat $TDIR/exec.out
if [ ! -s $BOXDIR/$PROBLEM.out ] ; then
pend "No output file."
echo "No output file."
- echo >$PTSFILE "0 No output."
+ echo >>$PTSFILE "0 No output."
return 1
fi
cp $BOXDIR/$PROBLEM.out $TDIR/$TEST.out
$SCHECK && return 0
pend "Wrong syntax."
echo "Wrong syntax."
- echo >$PTSFILE "0 Wrong syntax."
+ echo >>$PTSFILE "0 Wrong syntax."
return 1
}
$OCHECK && return 0
pend "Wrong answer."
echo "Wrong answer."
- echo >$PTSFILE "0 Wrong answer."
+ echo >>$PTSFILE "0 Wrong answer."
return 1
}
+
+# Setup of public commands
+
+function public-setup
+{
+ PDIR=$MO_PUBLIC/problems/$PROBLEM
+ SDIR=.
+ TDIR=~/.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_PUBLIC/bin/box -c$BOXDIR"
+ exec >log
+ pend "OK (see 'log' for details)"
+}
# Sandbox options used when compiling
COMP_SANDBOX_OPTS='-m65536 -t60 -w -e'
-# Shell command used to run the tests
-TEST_RUN_METHOD="test-run-with-files"
-
# Sandbox options used when testing
TEST_SANDBOX_OPTS='-a2 -f -m$MEM_LIMIT -t$TIME_LIMIT -w'
# For stdio tasks append '-i$PROBLEM.in -o$PROBLEM.out'
# A list of all tests
TESTS="1 2"
+# Test with example input
+SAMPLE_TEST=1
+
# Number of points per test
POINTS_PER_TEST=1
--- /dev/null
+# The Evaluator -- Public Checking Script
+# (c) 2001 Martin Mares <mj@ucw.cz>
+
+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 "$1" ] || die "Usage: check <problem>"
+PROBLEM=$1
+public-setup
+. $PDIR/config
+locate-source
+compile
+TEST=$SAMPLE_TEST
+PTSFILE=$TDIR/points
+pstart "Checking on sample input: "
+test-run
+syntax-check
+pend "OK"
--- /dev/null
+# The Evaluator -- Public Compilation Script
+# (c) 2001 Martin Mares <mj@ucw.cz>
+
+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 "$1" ] || die "Usage: compile <problem>"
+PROBLEM=$1
+public-setup
+. $PDIR/config
+locate-source
+if compile ; then
+ mv $TDIR/$PROBLEM .
+else
+ echo >&2
+ sed <log >&2 '1,/^Compiler output:/d;/^Compiler output files:/,$d;/^Exited /d'
+fi
--- /dev/null
+# The Evaluator -- Public Submit Script
+# (c) 2001 Martin Mares <mj@ucw.cz>
+
+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 "$1" ] || die "Usage: submit <problem>"
+PROBLEM=$1
+public-setup
+. $PDIR/config
+locate-source
+compile
+TEST=$SAMPLE_TEST
+PTSFILE=$TDIR/points
+pstart "Checking on sample input: "
+test-run
+syntax-check
+pend "OK"
+pstart "Submiting: "
+mkdir -p ~/.submit/$PROBLEM
+rm -rf ~/.submit/$PROBLEM/*
+cp $SRCN ~/.submit/$PROBLEM/
+pend "OK"