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")
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