]> mj.ucw.cz Git - moe.git/commitdiff
Backward-compatible point files implemented
authorMartin Mares <mj@ucw.cz>
Fri, 14 Aug 2009 07:58:18 +0000 (09:58 +0200)
committerMartin Mares <mj@ucw.cz>
Fri, 14 Aug 2009 07:58:18 +0000 (09:58 +0200)
t/config
t/moe/testcase.py

index 8faf95bcdc8d117ad1d0e070b643e8c2a428a048..2ad11eaee3fc2d55b6d3d9496ef48bdfd65d8ecd 100644 (file)
--- a/t/config
+++ b/t/config
@@ -10,6 +10,8 @@ TESTCASE_IN=${TEST}.in
 TESTCASE_OUT=${TEST}.out
 TESTCASE_OK=${TEST}.ok
 TESTCASE_STATUS=${TEST}.stat
+# backward compatibility
+TESTCASE_PTS=${TEST}.pts
 
 # HOOKS
 # TESTCASE_HOOKS
index 945f2e4156dd72093ae39b25f78861bd53db8d07..d1184d30a8faf218a1c3e0fb4bcca3c44b8ddb98 100644 (file)
@@ -53,14 +53,18 @@ def collect_status(e):
 def tmpname(e):
     return os.path.join(e["TDIR"], e["TEST"] + ".tmp")
 
-def collect_verdict(e, verdict_file):
-    try:
-       f = open(verdict_file, "r")
+def collect_tmp_line(tmp_file):
+    if os.path.exists(tmp_file):
+       f = open(tmp_file, "r")
        v = f.readline().rstrip("\n")
        f.close()
-    except IOError, OSError:
+       os.unlink(tmp_file)
+    else:
        v = ""
+    return v
 
+def collect_verdict(e, verdict_file):
+    v = collect_tmp_line(verdict_file)
     if len(v) >= 4 and v[0].isalnum and v[1].isalnum and v[2] == ":" and v[3] == " ":
        e.test_stat["status"] = v[0:2]
        e.log.verbose("Judge's status: %s\n" % v[0:2])
@@ -70,10 +74,11 @@ def collect_verdict(e, verdict_file):
        e.test_stat["message"] = v
        e.log.verbose("Judge's verdict: %s\n" % v)
 
-    try:
-       os.unlink(verdict_file)
-    except IOError, OSError:
-       pass
+def collect_points(e):
+    p = collect_tmp_line(os.path.join(e["TDIR"], e["TESTCASE_PTS"]))
+    if p != "":
+       e.log.verbose("Judge has supplied points: %s\n" % p)
+       e.test_stat["points"] = p
 
 def setup(e):
     pdir = e["PDIR"]
@@ -99,6 +104,7 @@ def judge(e):
     e.log.flush()
     rc = os.system(cmd)
     collect_verdict(e, verdict_file)
+    collect_points(e)
     collect_status(e)
     if os.WIFEXITED(rc):
        if os.WEXITSTATUS(rc) == 0:
@@ -108,7 +114,6 @@ def judge(e):
     raise moe.MoeError("Judge failure")
 
 def points(e):
-    ## FIXME: check $TEST.pts
     if e.test_stat["points"] is None:
        e.test_stat["points"] = e["POINTS_PER_TEST"]