]> mj.ucw.cz Git - moe.git/blobdiff - t/moe/box.py
Judges can return single-line verdicts on stderr instead of producing a status file
[moe.git] / t / moe / box.py
index bd0239560b37f5bbf880d37697e14c7bed19047f..dfb9282aa626123712f7aca76a69c3c0b016b327 100644 (file)
@@ -21,7 +21,7 @@ def init(e):
     e.log.verbose("Sandbox directory: %s\n" % dir)
     e.log.verbose("Sandbox command: %s\n" % cmd)
     if dir == "" or not os.path.isdir(dir) or exe == "" or not os.path.isfile(exe):
-       raise moe.MoeErr, "Sandbox set up incorrectly"
+       raise moe.MoeError, "Sandbox set up incorrectly"
 
 def clean(e):
     moe.util.remove_tree_contents(e.cfgs["BOXDIR"])
@@ -39,7 +39,12 @@ def show(e, msg):
 def run(e, opts, cmd):
     c = e.cfgs["BOXCMD"] + " " + opts + " -- " + cmd
     e.log.verbose("Sandbox: %s\n" % c)
-    rc = os.system(c)
-    if rc > 1:
-       raise moe.MoeErr, "Sandbox failed"
-    return rc
+    e.log.flush()
+    st = os.system(c)
+    if os.WIFEXITED(st):
+       rc = os.WEXITSTATUS(st)
+       if rc > 1:
+           raise moe.MoeError, "Sandbox failed with rc=%d" % rc
+       return rc
+    else:
+       raise moe.MoeError, "Sandbox failed with exit status 0x%04x" % rc