Enable valgrind and dedicate a bot to it

This commit is contained in:
Ebrahim Byagowi 2018-10-19 09:24:21 +03:30
parent bccd09d6c7
commit b7cef8cb1d
2 changed files with 44 additions and 0 deletions

View File

@ -90,6 +90,18 @@ jobs:
- run: make -j32
- run: LD_LIBRARY_PATH="$PWD/freetype-2.9/objs/.libs" make check || .ci/fail.sh
gcc-valgrind:
docker:
- image: ubuntu:18.10
steps:
- checkout
- run: apt update || true
- run: apt install -y gcc binutils libtool autoconf automake make pkg-config gtk-doc-tools ragel libfreetype6-dev libfontconfig1-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev python python-pip valgrind
- run: pip install fonttools
- run: ./autogen.sh --with-freetype --with-glib --with-cairo --with-icu --with-graphite2 --with-fontconfig
- run: make -j32
- run: make check || .ci/fail.sh
clang-everything:
docker:
- image: ubuntu:18.10
@ -293,6 +305,7 @@ workflows:
# autotools based builds
- alpine-O3-NOMMAP
- archlinux-debug-O0-py3
- gcc-valgrind
- clang-O3-O0
- clang-everything
- clang-asan

View File

@ -5,6 +5,24 @@ from __future__ import print_function, division, absolute_import
import sys, os, subprocess, tempfile, threading
def which(program):
# https://stackoverflow.com/a/377028
def is_exe(fpath):
return os.path.isfile(fpath) and os.access(fpath, os.X_OK)
fpath, _ = os.path.split(program)
if fpath:
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):
return exe_file
return None
def cmd(command):
# https://stackoverflow.com/a/4408409
# https://stackoverflow.com/a/10012262
@ -49,6 +67,8 @@ please provide it as the first argument to the tool""")
print ('hb_shape_fuzzer:', hb_shape_fuzzer)
fails = 0
valgrind = which ('valgrind')
parent_path = os.path.join (srcdir, "fonts")
for file in os.listdir (parent_path):
path = os.path.join(parent_path, file)
@ -56,8 +76,19 @@ for file in os.listdir (parent_path):
text, returncode = cmd ([hb_shape_fuzzer, path])
print (text)
failed = False
if returncode != 0 or 'error' in text:
print ('failure on %s' % file)
failed = True
if valgrind:
text, returncode = cmd ([valgrind, '--error-exitcode=1', hb_shape_fuzzer, path])
if returncode:
print (text)
print ('failure on %s' % file)
failed = True
if failed:
fails = fails + 1
if fails: