+ e.test_stat = moe.status.MoeStatus()
+ e.test_stat["id"] = test
+ e.stat.get_list("tests").append(e.test_stat)
+
+def collect_status(e):
+ sf = os.path.join(e["TDIR"], e["TESTCASE_STATUS"])
+ if os.path.exists(sf):
+ e.log.verbose("Reading status from %s\n" % sf)
+ stat = moe.status.MoeStatus()
+ stat.read(name=sf)
+ if e.log.verbosity > 1:
+ stat.write_nested(e.log.log_file, 1)
+ for k in stat.keys():
+ e.test_stat[k] = stat[k]
+ os.unlink(sf)
+ else:
+ e.log.verbose("No status file present\n")
+
+def tmpname(e):
+ return os.path.join(e["TDIR"], e["TEST"] + ".tmp")
+
+def collect_tmp_line(tmp_file):
+ if os.path.exists(tmp_file):
+ f = open(tmp_file, "r")
+ v = f.readline().rstrip("\n")
+ f.close()
+ 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])
+ v = v[4:]
+ v.strip()
+ if v != "":
+ e.test_stat["message"] = v
+ e.log.verbose("Judge's verdict: %s\n" % v)
+
+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
+