Merge change 1673 into donut

* changes:
  Made valgrind optional. Capture the target output.
This commit is contained in:
Android (Google) Code Review
2009-05-14 13:19:03 -07:00
3 changed files with 28 additions and 5 deletions

1
testrunner/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
*.pyc

View File

@@ -145,7 +145,20 @@ def RunHostCommand(binary, valgrind=False):
print subproc.communicate()[0]
return subproc.returncode
else:
# Need the full path to valgrind to avoid other versions on the system.
subproc = subprocess.Popen(["/usr/bin/valgrind", "-q", full_path],
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
subproc.wait()
return subproc.returncode
def HasValgrind():
"""Check that /usr/bin/valgrind exists.
We look for the fullpath to avoid picking up 'alternative' valgrind
on the system.
Returns:
True if a system valgrind was found.
"""
return os.path.exists("/usr/bin/valgrind")

View File

@@ -369,10 +369,13 @@ class TestRunner(object):
if run_command.RunHostCommand(f) != 0:
logger.Log("%s... failed" % f)
else:
if run_command.RunHostCommand(f, valgrind=True) == 0:
logger.Log("%s... ok\t\t[valgrind: ok]" % f)
if run_command.HasValgrind():
if run_command.RunHostCommand(f, valgrind=True) == 0:
logger.Log("%s... ok\t\t[valgrind: ok]" % f)
else:
logger.Log("%s... ok\t\t[valgrind: failed]" % f)
else:
logger.Log("%s... ok\t\t[valgrind: failed]" % f)
logger.Log("%s... ok\t\t[valgrind: missing]" % f)
# Run on the device
logger.Log("\nRunning on target")
@@ -380,9 +383,15 @@ class TestRunner(object):
full_path = os.path.join(os.sep, "system", "bin", f)
# Single quotes are needed to prevent the shell splitting it.
status = self._adb.SendShellCommand("'%s >/dev/null 2>&1;echo -n $?'" %
output = self._adb.SendShellCommand("'%s 2>&1;echo -n exit code:$?'" %
full_path)
logger.Log("%s... %s" % (f, status == "0" and "ok" or "failed"))
success = output.endswith("exit code:0")
logger.Log("%s... %s" % (f, success and "ok" or "failed"))
# Print the captured output when the test failed.
if not success or self._options.verbose:
pos = output.rfind("exit code")
output = output[0:pos]
logger.Log(output)
# Cleanup
self._adb.SendShellCommand("rm %s" % full_path)