Made valgrind optional. Capture the target output.

Don't fail if valgrind (system version not the google3 one) is missing.
If the test fail, print the output of the test.
Added .pyc to the gitignore file.
This commit is contained in:
Nicolas Catania
2009-05-14 12:25:23 -07:00
parent c15ed2d771
commit bcd93dc46a
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.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: 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)