Merge change 1673 into donut
* changes: Made valgrind optional. Capture the target output.
This commit is contained in:
1
testrunner/.gitignore
vendored
Normal file
1
testrunner/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
*.pyc
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user