diff --git a/test/lib/test_suite.py b/test/lib/test_suite.py
index 6608c64d66766225219b11d8bdff3ac58d3a97ce..6a4bec88eb164bbb2037aacb57f0f44fbb3b5558 100644
--- a/test/lib/test_suite.py
+++ b/test/lib/test_suite.py
@@ -296,4 +296,9 @@ class TestSuite:
     if self.args.valgrind and check_valgrind_log(self.ini["valgrind_log"]):
       print "  Error! There were warnings/errors in valgrind log file:"
       print_tail_n(self.ini["valgrind_log"], 20)
+      return 1
+
+    return len(failed_tests)
+
+
 
diff --git a/test/test-run.py b/test/test-run.py
index 69ecdfaa23fe70821aa5ec63b9f2180d5ec6cfd2..78bd629ede6be2614d0d3d8460b516b1ce486003 100755
--- a/test/test-run.py
+++ b/test/test-run.py
@@ -147,6 +147,7 @@ def main():
   # Change the current working directory to where all test
   # collections are supposed to reside.
   os.chdir(os.path.dirname(sys.argv[0]))
+  failed_tests = 0
 
   try:
     print "Started", " ".join(sys.argv)
@@ -155,14 +156,14 @@ def main():
       suites.append(TestSuite(suite_name, options.args))
 
     for suite in suites:
-      suite.run_all()
+      failed_tests = suite.run_all()
   except RuntimeError as e:
     print "\nFatal error: {0}. Execution aborted.".format(e)
     return (-1)
   finally:
     os.chdir(oldcwd)
 
-  return 0
+  return -failed_tests 
 
 if __name__ == "__main__":
   exit(main())