]> mj.ucw.cz Git - eval.git/blobdiff - t/moe/box.py
Better logging of exceptions
[eval.git] / t / moe / box.py
index daae267eb39147101efcef09ea286fb57c3f1172..88c72d6fb1ab2f856dffe1e40821ae404bb0c164 100644 (file)
@@ -5,7 +5,7 @@ import moe.util
 import os.path
 
 def init(e):
-    user = e.cfgs["TEST_USER"]
+    user = e["TEST_USER"]
     if user == "":
        e.log.verbose("Sandbox running locally\n")
        e.builtins.parse_line("BOXDIR=${HOME}/box")
@@ -15,25 +15,36 @@ def init(e):
        e.builtins.parse_line("BOXDIR=${HOME}/box")
        e.builtins.parse_line("BOXEXE=${HOME}/bin/box-" + user)
     e.builtins.parse_line("BOXCMD=${BOXEXE} -c${BOXDIR}")
-    dir = e.cfgs["BOXDIR"]
-    cmd = e.cfgs["BOXCMD"]
-    exe = e.cfgs["BOXEXE"]
+    dir = e["BOXDIR"]
+    cmd = e["BOXCMD"]
+    exe = e["BOXEXE"]
     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"])
+    moe.util.remove_tree_contents(e["BOXDIR"])
 
 def setup(e):
     clean(e)
-    return e.cfgs["BOXDIR"]
+    return e["BOXDIR"]
 
 def show(e, msg):
     if e.log.verbosity > 1:
        e.log.verbose("Box contents for %s:\n" % msg)
        e.log.flush()
-       os.system("ls -Al %s | sed 's/^/\t/'" % e.cfgs["BOXDIR"])
+       os.system("ls -Al %s | sed 's/^/\t/'" % e["BOXDIR"])
 
-def run(e, opts, 
+def run(e, opts, cmd):
+    c = e["BOXCMD"] + " " + opts + " -- " + cmd
+    e.log.verbose("Sandbox: %s\n" % c)
+    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