Fixed valgrind handling issue.
Turns out valgrind always exits with error code 0 even when a leak is
detected. Instead we are now looking for an empty output.
diff --git a/testrunner/run_command.py b/testrunner/run_command.py
index ead80f1..8cf385b 100755
--- a/testrunner/run_command.py
+++ b/testrunner/run_command.py
@@ -146,10 +146,16 @@
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],
+ subproc = subprocess.Popen(["/usr/bin/valgrind", "--tool=memcheck",
+ "--leak-check=yes", "-q", full_path],
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
- subproc.wait()
- return subproc.returncode
+ # Cannot rely on the retcode of valgrind. Instead look for an empty output.
+ valgrind_out = subproc.communicate()[0].strip()
+ if valgrind_out:
+ print valgrind_out
+ return 1
+ else:
+ return 0
def HasValgrind():