[ci][fuzzer] print valgrind failure if an error happened
authorEbrahim Byagowi <ebrahim@gnu.org>
Fri, 19 Jul 2019 06:03:00 +0000 (10:33 +0430)
committerGitHub <noreply@github.com>
Fri, 19 Jul 2019 06:03:00 +0000 (10:33 +0430)
test/fuzzing/run-shape-fuzzer-tests.py

index ba480dd..6d36c2c 100755 (executable)
@@ -5,41 +5,41 @@ from __future__ import print_function, division, absolute_import
 import sys, os, subprocess, tempfile, threading
 
 
-def which(program):
+def which (program):
        # https://stackoverflow.com/a/377028
-       def is_exe(fpath):
-               return os.path.isfile(fpath) and os.access(fpath, os.X_OK)
+       def is_exe (fpath):
+               return os.path.isfile (fpath) and os.access (fpath, os.X_OK)
 
-       fpath, _ = os.path.split(program)
+       fpath, _ = os.path.split (program)
        if fpath:
-               if is_exe(program):
+               if is_exe (program):
                        return program
        else:
-               for path in os.environ["PATH"].split(os.pathsep):
-                       exe_file = os.path.join(path, program)
-                       if is_exe(exe_file):
+               for path in os.environ["PATH"].split (os.pathsep):
+                       exe_file = os.path.join (path, program)
+                       if is_exe (exe_file):
                                return exe_file
 
        return None
 
 
-def cmd(command):
+def cmd (command):
        # https://stackoverflow.com/a/4408409
        # https://stackoverflow.com/a/10012262
-       with tempfile.TemporaryFile() as tempf:
+       with tempfile.TemporaryFile () as tempf:
                p = subprocess.Popen (command, stderr=tempf)
                is_killed = {'value': False}
 
-               def timeout(p, is_killed):
+               def timeout (p, is_killed):
                        is_killed['value'] = True
-                       p.kill()
+                       p.kill ()
                timer = threading.Timer (2, timeout, [p, is_killed])
 
                try:
                        timer.start()
                        p.wait ()
                        tempf.seek (0)
-                       text = tempf.read().decode ("utf-8").strip ()
+                       text = tempf.read ().decode ("utf-8").strip ()
                        returncode = p.returncode
                finally:
                        timer.cancel()
@@ -67,9 +67,9 @@ please provide it as the first argument to the tool""")
 print ('hb_shape_fuzzer:', hb_shape_fuzzer)
 fails = 0
 
-libtool = os.environ.get('LIBTOOL')
+libtool = os.environ.get ('LIBTOOL')
 valgrind = None
-if os.environ.get('RUN_VALGRIND', ''):
+if os.environ.get ('RUN_VALGRIND', ''):
        valgrind = which ('valgrind')
        if valgrind is None:
                print ("""Valgrind requested but not found.""")
@@ -80,7 +80,7 @@ if os.environ.get('RUN_VALGRIND', ''):
 
 parent_path = os.path.join (srcdir, "fonts")
 for file in os.listdir (parent_path):
-       path = os.path.join(parent_path, file)
+       path = os.path.join (parent_path, file)
 
        if valgrind:
                text, returncode = cmd (libtool.split(' ') + ['--mode=execute', valgrind + ' --leak-check=full --error-exitcode=1', '--', hb_shape_fuzzer, path])
@@ -89,7 +89,7 @@ for file in os.listdir (parent_path):
                if 'error' in text:
                        returncode = 1
 
-       if not valgrind and text.strip ():
+       if (not valgrind or returncode) and text.strip ():
                print (text)
 
        if returncode != 0: