]> mj.ucw.cz Git - eval.git/blob - mop/public/check.sh
Isolate: Fix up some bugs
[eval.git] / mop / public / check.sh
1 #!/bin/bash
2 # The Evaluator -- Public Checking Script
3 # (c) 2001--2008 Martin Mares <mj@ucw.cz>
4
5 set -e
6 [ -n "$MO_ROOT" -a -d "$MO_ROOT" ] || { echo >&2 "MO_ROOT not set, giving up." ; exit 1 ; }
7 pushd $MO_ROOT >/dev/null
8 . lib/libeval.sh
9 . cf/mop
10 popd >/dev/null
11
12 function usage
13 {
14         die "Usage: check [-s <source-file>] <problem> [<test-number>]"
15 }
16
17 SRCFILE=
18 while getopts "s:" opt ; do
19         case $opt in
20                 s)      SRCFILE="$OPTARG"
21                         ;;
22                 *)      usage
23                         ;;
24         esac
25 done
26 shift $(($OPTIND-1))
27 [ -n "$1" ] || usage
28 PROBLEM=$1
29 TEST=
30 shift
31 if [ -n "$1" ] ; then
32         TEST="$1"
33         shift
34 fi
35 [ -z "$1" ] || usage
36
37 public-setup
38 . $PDIR/config
39
40 function test-verdict
41 {
42         pend "$2"
43         if [ $1 == 0 ] ; then
44                 exit 1
45         else
46                 exit 0
47         fi
48 }
49
50 if [ $TASK_TYPE == open-data ] ; then
51         [ -n "$TEST" ] || die "You need to specify test number for open data problems."
52         pstart "Checking $TEST: "
53         test-config
54         open-locate "$SRCFILE"
55         try-ln "$SDIR/$SRCN" $TDIR/$TEST.out
56         syntax-check
57         test-result $POINTS_PER_TEST OK
58 else
59         [ -z "$TEST" ] || die "Test number should be given only for open data problems."
60         locate-source "$SRCFILE"
61         compile
62         RC=0
63         for TEST in $SAMPLE_TESTS ; do
64                 (
65                 pstart "Checking on sample input $TEST: "
66                 test-config
67                 test-run
68                 syntax-check
69                 output-check
70                 ) || RC=1
71         done
72         exit $RC
73 fi